{"version":3,"sources":["lib.js","public_nurseslounge_lounge_overview.js","nurseslounge_myDashboard_wall.js","nurseslounge_myDashboard_camera.js","nurseslounge_myDashboard_followAndFriend.js","nurseslounge_myDashboard.js","nurseslounge_myDashboard_activity.js","nurseslounge_myDashboard_myProfile.js","nurseslounge_myDashboard_colleagues.js","nurseslounge_myDashboard_jobsNearMe.js","nurseslounge_myDashboard_degreesForMe.js","nurseslounge_myDashboard_myArticles.js","nurseslounge_myDashboard_myCalendar.js","nurseslounge_myDashboard_schedule.js","nurseslounge_myDashboard_myFloatPool.js","nurseslounge_myDashboard_myCredentialsVault.js","nurseslounge_myDashboard_manageMyLounges.js","nurseslounge_myDashboard_myInbox.js","nurseslounge_myDashboard_accountSettings.js","nurseslounge_myDashboard_recommendations.js","nurseslounge_myDashboard_continuingEducation.js","nurseslounge_myDashboard_preceptors.js","nurseslounge_myDashboard_manageMyCompany.js","nurseslounge_myDashboard_thoughtLeadersForm.js","nurseslounge_myDashboard_afterPopUp.js","nurseslounge_profile.js","nurseslounge_lounge_wall.js","nurseslounge_lounges.js","nurseslounge_lounges_home.js","nurseslounge_lounge.js","nurseslounge_lounge_header.js","nurseslounge_lounge_overview.js","nurseslounge_lounge_degrees.js","nurseslounge_lounge_ratingReviews.js","nurseslounge_lounge_calendar.js","nurseslounge_lounge_nursingJobs.js","nurseslounge_lounge_followers.js","nurseslounge_job.js","nurseslounge_job_jobDetail.js","nurseslounge_degrees.js","nurseslounge_degrees_home.js","nurseslounge_degree.js","nurseslounge_degree_information.js","nurseslounge_degree_reviews.js","nurseslounge_jobs.js","nurseslounge_articles.js","nurseslounge_article.js","nurseslounge_continuingEducation.js","nurseslounge_lounge_activity.js","nurseslounge_thoughtLeaders.js","nurseslounge_thoughtLeaders_home.js","public_nurseslounge_myDashboard_myProfile.js","public_nurseslounge_myDashboard_activity.js","nurseslounge_lounges_tour.js","nurseslounge_socket_functions.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;ACzvBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AChZA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AC5sHA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;ACrNA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AC9CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;ACvRA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;ACvYA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;ACjpJA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AC5bA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;ACvcA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;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/QA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;ACxyDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;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/8GA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;ACr4GA;AACA;AACA;AACA;AACA;AACA;ACLA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AClyBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AChgBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;ACj3CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AC9jDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;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/TA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;ACpfA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AC3fA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;ACzbA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;ACjJA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AC5BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;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;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;ACxnIA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;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;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;ACtgBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;ACjJA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;ACtDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;ACtuRA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;ACxkCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AC71BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;ACh6GA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;ACxUA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;ACjRA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AChCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;ACtgCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;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/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;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AChYA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;ACxEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;ACt+CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AC9kBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;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/lCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AC3eA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AC3NA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;ACxSA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;ACrRA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;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/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;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AC9ZA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;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/GA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;ACvGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AC9NA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;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":"script.js","sourcesContent":["var libs = {\n noCacheUrl:function($src){\n var $date = new Date();\n var $random = Math.random();\n var $i = $date.toString().replace(/\\s/g, '')+''+$random;\n var $url = new URL($src);\n if(!$url.searchParams.has('n-o-c-a-c-h-e')){\n $url.searchParams.append('n-o-c-a-c-h-e', $i)\n }else{\n $url.searchParams.set('n-o-c-a-c-h-e', $i);\n }\n return $url.toString();\n },\n refreshBoxFrom:function($element, $data, cback){\n if($($element).length > 0) {\n $($element).each(function ($v, $i) {\n var $that = $(this);\n if (!$that.data('url') || $that.parents('.box').length <= 0) {\n return false;\n }\n $.ajax({\n url: $that.data('url'),\n method: 'POST',\n cache: false,\n data: $data ? $data : null,\n dataType: \"html\",\n success: function ($data) {\n libs.expire($data);\n $that.parents('.box').first().html($data).promise().done(function () {\n if (cback != undefined) {\n cback($(this));\n }\n });\n }\n });\n });\n }else{\n if (cback != undefined) {\n cback($(this));\n }\n }\n },\n renderImage:function($input, $target){\n if ($input.files && $input.files[0]) {\n var $reader = new FileReader();\n $reader.onload = function(e) {\n $($target).attr('src', e.target.result);\n };\n $reader.readAsDataURL($input.files[0]);\n }\n },\n imageUrlToBlob:function($url, cback, $outFormat){\n var $img = new Image();\n $img.crossOrigin = 'Anonymous';\n $img.onload = function(){\n var $canvas = document.createElement('CANVAS'),\n $ctx = $canvas.getContext('2d'), $dataURL;\n $canvas.height = $img.height;\n $canvas.width = $img.width;\n $ctx.drawImage($img, 0, 0);\n $dataURL = $canvas.toDataURL($outFormat);\n cback($dataURL);\n $canvas = null;\n };\n $img.src = $url;\n },\n renderFile:function($blobFile, $target){\n var $reader = new FileReader();\n $reader.onload = function(e) {\n $($target).attr('src', e.target.result);\n };\n $reader.readAsDataURL($blobFile);\n },\n getImageWH:function($urlFile, cback){\n var $img = new Image();\n $img.onload = function() {\n cback(this.width, this.height);\n };\n $img.src = $urlFile;\n },\n b64toBlob:function($imageBase64) {\n var $byteString = atob($imageBase64.split(',')[1]);\n var $ab = new ArrayBuffer($byteString.length);\n var $ia = new Uint8Array($ab);\n for (var $i = 0; $i < $byteString.length; $i++) {\n $ia[$i] = $byteString.charCodeAt($i);\n }\n var $type = $imageBase64.split(',')[0];\n $type = $type.split(':')[1];\n $type = $type.split(';')[0];\n return new Blob([$ab], { type: $type});\n },\n toEntities:function ($text){return $(\"
\").html($text).text();},\n base64 : {\n _keyStr: \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=\", encode: function (e) {\n var t = \"\";\n var n, r, i, s, o, u, a;\n var f = 0;\n e = Base64._utf8_encode(e);\n while (f < e.length) {\n n = e.charCodeAt(f++);\n r = e.charCodeAt(f++);\n i = e.charCodeAt(f++);\n s = n >> 2;\n o = (n & 3) << 4 | r >> 4;\n u = (r & 15) << 2 | i >> 6;\n a = i & 63;\n if (isNaN(r)) {\n u = a = 64\n } else if (isNaN(i)) {\n a = 64\n }\n t = t + this._keyStr.charAt(s) + this._keyStr.charAt(o) + this._keyStr.charAt(u) + this._keyStr.charAt(a)\n }\n return t\n }, decode: function (e) {\n var t = \"\";\n var n, r, i;\n var s, o, u, a;\n var f = 0;\n e = e.replace(/[^A-Za-z0-9+/=]/g, \"\");\n while (f < e.length) {\n s = this._keyStr.indexOf(e.charAt(f++));\n o = this._keyStr.indexOf(e.charAt(f++));\n u = this._keyStr.indexOf(e.charAt(f++));\n a = this._keyStr.indexOf(e.charAt(f++));\n n = s << 2 | o >> 4;\n r = (o & 15) << 4 | u >> 2;\n i = (u & 3) << 6 | a;\n t = t + String.fromCharCode(n);\n if (u != 64) {\n t = t + String.fromCharCode(r)\n }\n if (a != 64) {\n t = t + String.fromCharCode(i)\n }\n }\n t = Base64._utf8_decode(t);\n return t\n }, _utf8_encode: function (e) {\n e = e.replace(/rn/g, \"n\");\n var t = \"\";\n for (var n = 0; n < e.length; n++) {\n var r = e.charCodeAt(n);\n if (r < 128) {\n t += String.fromCharCode(r)\n } else if (r > 127 && r < 2048) {\n t += String.fromCharCode(r >> 6 | 192);\n t += String.fromCharCode(r & 63 | 128)\n } else {\n t += String.fromCharCode(r >> 12 | 224);\n t += String.fromCharCode(r >> 6 & 63 | 128);\n t += String.fromCharCode(r & 63 | 128)\n }\n }\n return t\n }, _utf8_decode: function (e) {\n var t = \"\";\n var n = 0;\n var r = c1 = c2 = 0;\n while (n < e.length) {\n r = e.charCodeAt(n);\n if (r < 128) {\n t += String.fromCharCode(r);\n n++\n } else if (r > 191 && r < 224) {\n c2 = e.charCodeAt(n + 1);\n t += String.fromCharCode((r & 31) << 6 | c2 & 63);\n n += 2\n } else {\n c2 = e.charCodeAt(n + 1);\n c3 = e.charCodeAt(n + 2);\n t += String.fromCharCode((r & 15) << 12 | (c2 & 63) << 6 | c3 & 63);\n n += 3\n }\n }\n return t\n }\n },\n getUrl : $(location).attr(\"href\"),\n getObjForm:function($form){\n var $data = {};\n var $serialize = $($form).serializeArray();\n for (var $attr in $serialize) {\n if($data[$serialize[$attr].name] != undefined){\n if(Array.isArray($data[$serialize[$attr].name]) !== true){\n var $first = $data[$serialize[$attr].name];\n $data[$serialize[$attr].name] = [];\n $data[$serialize[$attr].name].push($first);\n }\n $data[$serialize[$attr].name].push($serialize[$attr].value);\n }else {\n $data[$serialize[$attr].name] = $serialize[$attr].value;\n }\n }\n return $data;\n },\n ajaxSetup : function () {\n $.ajaxSetup({\n headers: {\n 'X-CSRF-TOKEN': $('meta[name=\"csrf-token\"]').attr('content')\n }\n });\n },\n isJson : function($data) {\n try {\n JSON.parse($data);\n } catch (e) {\n return false;\n }\n return true;\n },\n expire:function($data){\n try{\n if(libs.isJson($data)){\n $data = JSON.parse($data);\n }\n if($data.status == 'success'){\n if($data.data && $data.data.msg && $data.data.msg != ''){\n toastr.info($data.data.msg);\n }\n }\n if($data.status == 'error'){\n if($data.data && $data.data.msg && $data.data.msg != ''){\n toastr.error($data.data.msg);\n }\n }\n if($data.status == 'redirect'){\n if($data.data && $data.data.msg && $data.data.msg != ''){\n toastr.error($data.data.msg);\n }\n window.location = $data.redirect;\n }\n if($data.status == 'expire'){\n window.location = '/logout';\n }\n }catch (error){\n\n }\n },\n render : function ($url, $module, $submodule, $params, $method) {\n var $chtml = '' +\n '
' +\n '
' +\n '
' +\n '
' +\n ' ' +\n '
' +\n '
' +\n '
' +\n '
';\n libs.checkImageLoad($($chtml).find('img'), function(){\n $(\"#content\").html($chtml).promise().done(function(){\n if(!$method){$method = \"GET\";}\n $.ajax({\n url: $url,\n method: $method,\n cache:false,\n dataType: \"html\",\n data: $params,\n success: function ($data) {\n libs.expire($data);\n $(\"#content\").hide();\n $(\"#content\").html($data).promise().done(function () {\n $submodule = $submodule.replace(/\\//g,'_');\n eval($module + '.' + $submodule +'($params)');\n });\n if($($data).find('img').length > 0){\n libs.checkImageLoad($($data).find('img'), function(){\n $(\"#content\").fadeIn();\n });\n }else{\n $(\"#content\").fadeIn();\n }\n },\n error: function (jqXHR, textStatus, errorThrown) {\n if($(\"#content\").html() == ''){\n libs.render($url, $module, $submodule, $params, $method);\n }\n }\n });\n });\n });\n },\n subrender : function ($url, $module, $submodule, $params, $method) {\n var $chtml = '' +\n '
' +\n '
' +\n '
' +\n '
' +\n ' ' +\n '
' +\n '
' +\n '
' +\n '
';\n libs.checkImageLoad($($chtml).find('img'), function(){\n $(\"#subcontent\").html($chtml).promise().done(function(){\n if(!$method){$method = \"GET\";}\n $.ajax({\n url: $url,\n method: $method,\n cache:false,\n dataType: \"html\",\n data: $params,\n success: function ($data) {\n libs.expire($data);\n $(\"#subcontent\").hide();\n $(\"#subcontent\").html($data).promise().done(function () {\n $(\"#subcontent\").fadeIn();\n $submodule = $submodule.replace(/\\//g,'_');\n eval($module + '.' + $submodule+'($params)');\n });\n },\n error: function (jqXHR, textStatus, errorThrown) {\n if($(\"#subcontent\").html() == ''){\n libs.render($url, $module, $submodule, $params, $method);\n }\n }\n });\n });\n });\n },\n memorySave:function($name, $obj){\n if(window.$memory == undefined){\n window.$memory = {};\n }\n window.$memory[$name] = $obj;\n },\n memoryGet:function($name){\n if(window.$memory != undefined && window.$memory[$name] != undefined){\n return window.$memory[$name];\n }else{\n return false;\n }\n },\n resetForm:function($form){\n $($form)[0].reset();\n $($form).find(\"input[type=hidden]\").val(\"\");\n },\n loading:function(){\n $(\"#content\").html('' +\n '
' +\n '
' +\n ' ' +\n '
' +\n '
');\n },\n replaceBreaklines:function($content){\n var $regex = new RegExp('
', 'g');\n return $content.replace($regex, '\\r\\n');\n },\n replacePerBreaklines:function($content){\n var $regex = new RegExp('(?:\\\\r\\\\n|\\\\r|\\\\n)', 'g');\n return $content.replace($regex, '
');\n },\n convertUrlToLink:function($content){\n var $regex = new RegExp('((?!(href))\\\\b(https?|):\\\\/\\\\/[-A-Z0-9+&@#\\\\/%?=~_|!:,.;]*[-A-Z0-9+&@#\\\\/%=~_|])', 'gim');\n return $content.replace($regex, \"$1\");\n },\n checkImageLoad:function($imageContainer, cback){\n var $total = $($imageContainer).length;\n var $checked = 0;\n $($imageContainer).each(function(){\n var $img = new Image();\n $img.onload = function() {\n $checked++;\n if($total == $checked){\n cback();\n }\n };\n $img.src = $(this).attr('src');\n });\n if($total == $checked){\n cback();\n }\n },\n renderPDF:function($input, $target, $options){\n if ($input.files && $input.files[0]) {\n var $reader = new FileReader();\n $reader.onload = function(e) {\n PDFObject.embed(e.target.result, $target, $options);\n };\n $reader.readAsDataURL($input.files[0]);\n }\n },\n pdfToImage:function($file, $target, cback){\n pdfjsLib.disableWorker = true;\n pdfjsLib.getDocument($file).then(function($pdf) {\n $pdf.getPage(1).then(function($page) {\n var $scale = 1.5;\n var $viewport = $page.getViewport({ scale: $scale, });\n var $canvas = $('')[0];\n var $context = $canvas.getContext('2d');\n $canvas.height = $viewport.height;\n $canvas.width = $viewport.width;\n var $renderContext = {\n canvasContext: $context,\n viewport: $viewport\n };\n $page.render($renderContext).promise.then(function(){\n var $urlBase64 = $canvas.toDataURL('image/jpeg');\n if($target != null){\n $target.attr('src', $urlBase64);\n }\n if(cback != undefined){\n cback($urlBase64);\n }\n });\n });\n });\n },\n blobToB64: function ($file, cback) {\n var $reader = new FileReader();\n $reader.onload = function(e) {\n cback(e.target.result);\n };\n $reader.readAsDataURL($file);\n },\n hex2rgb: function($hex){\n var $result = /^#?([a-f\\d]{2})([a-f\\d]{2})([a-f\\d]{2})$/i.exec($hex);\n return 'rgb('+parseInt($result[1], 16)+', '+parseInt($result[2], 16)+', '+parseInt($result[3], 16)+')';\n },\n rgb2hex:function($color){\n var $rgb = $color.replace(/\\s/g,'').match(/^rgba?\\((\\d+),(\\d+),(\\d+)/i);\n return ($rgb && $rgb.length === 4) ? \"#\" +\n (\"0\" + parseInt($rgb[1],10).toString(16)).slice(-2) +\n (\"0\" + parseInt($rgb[2],10).toString(16)).slice(-2) +\n (\"0\" + parseInt($rgb[3],10).toString(16)).slice(-2) : $color;\n },\n cmToPixel:function($cm) {\n return $cm * 37.7952755905511;\n },\n isEmptyReturnNull:function($obj){\n if($obj){\n return $obj;\n }else{\n return null;\n }\n },\n extendReplace:function($target, $src){\n $target = $target || {};\n for (var $prop in $src) {\n if (typeof $src[$prop] === 'object') {\n $target[$prop] = $.extend({},$target[$prop], $src[$prop]);\n }\n if (Array.isArray($src[$prop])) {\n $target[$prop] = Object.values($src[$prop]);\n }\n if(typeof $src[$prop] !== 'object' && !Array.isArray($src[$prop])) {\n $target[$prop] = $src[$prop];\n }\n if($src[$prop] == null){\n delete $target[$prop];\n }\n }\n return $target;\n },\n memoryUpdateObj:function($name, $obj){\n libs.memorySave($name, $.extend({},libs.memoryGet($name), $obj));\n },\n arrGroupByObj:function($array, $key) {\n return $array.reduce(function($prev, $new) {\n var $value = $new[$key];\n $prev[$value] = ($prev[$value] || []).concat($new);\n return $prev;\n }, {});\n },\n arrSumObj:function($arr, $key) {\n var $newArr = {};\n return $arr.reduce(function($prev, $new){\n var $prevNum = $prev[$key] || 0;\n var $newNum = $new[$key] || 0;\n var $sum = parseFloat($newNum) + parseFloat($prevNum);\n $newArr[$key]=$sum;\n return $newArr;\n }, []);\n },\n arrSortObj:function($arr, $key, $ascDesc){\n $arr = $arr.sort(function($k1, $k2) {\n return $k1[$key] - $k2[$key];\n });\n return $ascDesc == undefined || $ascDesc == 'asc' ? $arr : $arr.reverse();\n },\n pluck:function($arr, $value){\n return $.map($arr, function($v){\n return $v[$value];\n });\n },\n snakeToCamel:function($i){\n return $i.replace(/(\\_\\w)/g, function (m) {\n return m[1].toUpperCase();\n });\n },\n getUniqueId:function(){\n var $dt = new Date().getTime();\n return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, function($c) {\n var $r = ($dt + Math.random()*16)%16 | 0;\n $dt = Math.floor($dt/16);\n return ($c=='x' ? $r :($r&0x3|0x8)).toString(16);\n });\n },\n isMobile:function(){\n return (/(android|bb\\d+|meego).+mobile|avantgo|bada\\/|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile|ip(hone|od)|iris|kindle|lge |maemo|midp|mmp|mobile.+firefox|netfront|opera m(ob|in)i|palm( os)?|phone|p(ixi|re)\\/|plucker|pocket|psp|series(4|6)0|symbian|treo|up\\.(browser|link)|vodafone|wap|windows ce|xda|xiino|android|ipad|playbook|silk/i.test((navigator.userAgent||navigator.vendor||window.opera))||/1207|6310|6590|3gso|4thp|50[1-6]i|770s|802s|a wa|abac|ac(er|oo|s\\-)|ai(ko|rn)|al(av|ca|co)|amoi|an(ex|ny|yw)|aptu|ar(ch|go)|as(te|us)|attw|au(di|\\-m|r |s )|avan|be(ck|ll|nq)|bi(lb|rd)|bl(ac|az)|br(e|v)w|bumb|bw\\-(n|u)|c55\\/|capi|ccwa|cdm\\-|cell|chtm|cldc|cmd\\-|co(mp|nd)|craw|da(it|ll|ng)|dbte|dc\\-s|devi|dica|dmob|do(c|p)o|ds(12|\\-d)|el(49|ai)|em(l2|ul)|er(ic|k0)|esl8|ez([4-7]0|os|wa|ze)|fetc|fly(\\-|_)|g1 u|g560|gene|gf\\-5|g\\-mo|go(\\.w|od)|gr(ad|un)|haie|hcit|hd\\-(m|p|t)|hei\\-|hi(pt|ta)|hp( i|ip)|hs\\-c|ht(c(\\-| |_|a|g|p|s|t)|tp)|hu(aw|tc)|i\\-(20|go|ma)|i230|iac( |\\-|\\/)|ibro|idea|ig01|ikom|im1k|inno|ipaq|iris|ja(t|v)a|jbro|jemu|jigs|kddi|keji|kgt( |\\/)|klon|kpt |kwc\\-|kyo(c|k)|le(no|xi)|lg( g|\\/(k|l|u)|50|54|\\-[a-w])|libw|lynx|m1\\-w|m3ga|m50\\/|ma(te|ui|xo)|mc(01|21|ca)|m\\-cr|me(rc|ri)|mi(o8|oa|ts)|mmef|mo(01|02|bi|de|do|t(\\-| |o|v)|zz)|mt(50|p1|v )|mwbp|mywa|n10[0-2]|n20[2-3]|n30(0|2)|n50(0|2|5)|n7(0(0|1)|10)|ne((c|m)\\-|on|tf|wf|wg|wt)|nok(6|i)|nzph|o2im|op(ti|wv)|oran|owg1|p800|pan(a|d|t)|pdxg|pg(13|\\-([1-8]|c))|phil|pire|pl(ay|uc)|pn\\-2|po(ck|rt|se)|prox|psio|pt\\-g|qa\\-a|qc(07|12|21|32|60|\\-[2-7]|i\\-)|qtek|r380|r600|raks|rim9|ro(ve|zo)|s55\\/|sa(ge|ma|mm|ms|ny|va)|sc(01|h\\-|oo|p\\-)|sdk\\/|se(c(\\-|0|1)|47|mc|nd|ri)|sgh\\-|shar|sie(\\-|m)|sk\\-0|sl(45|id)|sm(al|ar|b3|it|t5)|so(ft|ny)|sp(01|h\\-|v\\-|v )|sy(01|mb)|t2(18|50)|t6(00|10|18)|ta(gt|lk)|tcl\\-|tdg\\-|tel(i|m)|tim\\-|t\\-mo|to(pl|sh)|ts(70|m\\-|m3|m5)|tx\\-9|up(\\.b|g1|si)|utst|v400|v750|veri|vi(rg|te)|vk(40|5[0-3]|\\-v)|vm40|voda|vulc|vx(52|53|60|61|70|80|81|83|85|98)|w3c(\\-| )|webc|whit|wi(g |nc|nw)|wmlb|wonu|x700|yas\\-|your|zeto|zte\\-/i.test((navigator.userAgent||navigator.vendor||window.opera).substr(0,4)));\n },\n isAndroid:function(){\n var $ua = navigator.userAgent.toLowerCase();\n return $ua.indexOf(\"android\") > -1;\n ///ios|iphone|ipod|ipad|android/i.test(navigator.userAgent)\n },\n refreshTooltips:function(){\n var $clean = null;\n if(!libs.isMobile()){\n $('div[role=\"tooltip\"]').remove();\n $(\"body .with-tooltip\").not('.with-tooltip-month-event').each(function(){\n var $that = $(this);\n var $permanent = $that.data('permanent');\n if($permanent){\n $that.tooltip({\n trigger: 'hover'\n });\n }else{\n $that.tooltip({\n delay: {\n show: 500,\n hide: 0\n },\n trigger: 'hover'\n }).on('shown.bs.tooltip', function() {\n try{\n clearTimeout($clean);\n }catch ($e) {\n\n }\n $clean = setTimeout(function(){\n $(this).tooltip('hide');\n $('div[role=\"tooltip\"]').remove();\n }, 3000);\n });\n }\n });\n }\n },\n pad:function($pad, $str, $pos){\n if (typeof $str === 'undefined')\n return $pad;\n if($pos == 'l'){\n return ($pad + $str).slice(-$pad.length);\n }else{\n return ($str + $pad).substring(0,$pad.length);\n }\n },\n ucfirst($str){\n return $str.charAt(0).toUpperCase() + $str.slice(1);\n },\n globalUrl:function(){\n $(\"#topNav .main-nav > li > a\").removeClass('active');\n $(\"#topNav .main-nav > li > a\").each(function(){\n var $that = $(this);\n var $pathname = window.location.pathname;\n if($pathname.includes('public')){\n $pathname = $pathname.split('/');\n $pathname = $pathname.filter(function($v, $i){\n return $v != 'public';\n });\n $pathname = $pathname.join('/');\n }\n $pathname = $pathname.split('/');\n $pathname = $pathname.reverse();\n var $href = $that.attr('href').split('/');\n if($href.includes('public')){\n $href = $href.filter(function($v, $i){\n return $v != 'public';\n });\n }\n $href = $href.join('/');\n if(\n $pathname.includes('continuingEducation') && $href == '/continuingEducation'\n ){\n $that.addClass('active');\n }\n if(\n $pathname.includes('articles') && $href == '/articles' ||\n $pathname.includes('article') && $href == '/articles'\n ){\n $that.addClass('active');\n }\n if(\n $pathname.includes('jobs') && $href == '/jobs' ||\n $pathname.includes('job') && $href == '/jobs'\n ){\n $that.addClass('active');\n }\n if(\n $pathname.includes('degrees') && $href == '/degrees' ||\n $pathname.includes('degree') && $href == '/degrees'\n ){\n $that.addClass('active');\n }\n if(\n $pathname.includes('lounges') && $href == '/lounges' ||\n $pathname.includes('lounge') && $href == '/lounges'\n ){\n if(\n !$pathname.includes('degrees') &&\n !$pathname.includes('degree') &&\n !$pathname.includes('jobs') &&\n !$pathname.includes('job')\n ){\n $that.addClass('active');\n }\n }\n if(\n $pathname.includes('myDashboard') && $href == '/myDashboard'\n ){\n $that.addClass('active');\n }\n if(\n $pathname.includes('thoughtLeaders') && $href == '/thoughtLeaders'\n ){\n $that.addClass('active');\n }\n });\n },\n};\n\nvar dataTable = {\n setup:function(){\n $.fn.dataTable.ext.errMode = function ( settings, helpPage, message ) {\n };\n },\n init:function($element, $url, $method, $data, drawCallback, fnRowCallback, initComplete, ajaxDataFilter){\n var $table = $($element).DataTable({\n \"dom\":\"<'row'<'col-sm-3'l><'col-sm-3'f><'col-sm-6'p>>\" +\n \"<'row'<'col-sm-12'tr>>\" +\n \"<'row'<'col-sm-5'i><'col-sm-7'p>>\",\n \"order\": [[0,\"desc\"]],\n \"sScrollXInner\": \"auto\",\n \"bScrollCollapse\": true,\n \"bAutoWidth\": true,\n \"responsive\": false,\n \"scrollX\": true,\n \"paging\": true,\n \"fixedColumns\": {\n \"leftColumns\": 1\n },\n //\"autoWidth\": false,\n //\"responsive\": true,\n \"bDestroy\": true,\n \"drawCallback\": function () {\n if(drawCallback != undefined){\n drawCallback($table);\n }\n },\n \"fnRowCallback\": function($nRow){\n if(fnRowCallback != undefined){\n fnRowCallback($nRow);\n }\n },\n \"initComplete\": function () {\n if(initComplete != undefined){\n initComplete($table);\n }\n },\n \"cache\": false,\n \"pageLength\": 10,\n \"pagingType\" : \"full_numbers\",\n \"processing\": true,\n \"serverSide\": true,\n \"stateSave\": true,\n \"ajax\": {\n \"data\":$data,\n \"dataFilter\": function($response) {\n if(ajaxDataFilter != undefined){\n ajaxDataFilter(JSON.parse($response));\n }\n return $response;\n },\n \"url\":$url,\n \"type\":$method,\n \"datatype\":\"json\"\n }\n });\n $table.columns.adjust().draw();\n },\n reload:function($element){\n $.fn.dataTableExt.oApi.fnReloadAjax = function ( oSettings, sNewSource, fnCallback, bStandingRedraw ){\n if(jQuery.fn.dataTable.versionCheck ){\n var api = new jQuery.fn.dataTable.Api( oSettings );\n if(sNewSource){\n api.ajax.url(sNewSource).load(fnCallback,!bStandingRedraw);\n }\n else{\n api.ajax.reload(fnCallback,!bStandingRedraw);\n }\n return;\n }\n if(sNewSource !== undefined && sNewSource !== null){\n oSettings.sAjaxSource = sNewSource;\n }\n if(oSettings.oFeatures.bServerSide){\n this.fnDraw();\n return;\n }\n this.oApi._fnProcessingDisplay( oSettings, true );\n var that = this;\n var iStart = oSettings._iDisplayStart;\n var aData = [];\n this.oApi._fnServerParams(oSettings,aData);\n oSettings.fnServerData.call( oSettings.oInstance, oSettings.sAjaxSource, aData, function(json) {\n that.oApi._fnClearTable( oSettings );\n var aData = (oSettings.sAjaxDataProp !== \"\") ? that.oApi._fnGetObjectDataFn( oSettings.sAjaxDataProp )( json ) : json;\n for (var i=0;i' +\r\n '
' +\r\n '
' +\r\n '
';\r\n $gallery = new PhotoSwipe($('#nurseslounge-lounge-information-video')[0], PhotoSwipeUI_Default,\r\n [\r\n {\r\n html: $chtml\r\n }\r\n ],\r\n {\r\n index: 0,\r\n clickToCloseNonZoomable: false,\r\n closeOnScroll: false,\r\n closeOnVerticalDrag:false,\r\n closeElClasses: [],\r\n history:false\r\n }\r\n );\r\n $gallery.init();\r\n if($myPlayer){\r\n $myPlayer.player.pause = true;\r\n }\r\n var $container = $('#nurseslounge-lounge-information-video .preview-video-container');\r\n var $target = $container.find('.video:first');\r\n $target.width($(window).width());\r\n $target.height($(window).height());\r\n var $previewPlayer = new Artplayer({\r\n destroy:true,\r\n container: $target[0],\r\n title: $lounge.name,\r\n url: $lounge.video_root_lounge,\r\n mutex: true,\r\n muted:true,\r\n play: true\r\n }).on('ready', function() {\r\n $previewPlayer.player.pause = true;\r\n $previewPlayer.player.play = true;\r\n $previewPlayer.mask.show = false;\r\n }).on('pause', function(){\r\n $previewPlayer.mask.show = false;\r\n });\r\n $previewPlayer.mask.show = false;\r\n var $fullscreen = false;\r\n //var $api = $gallery.ui.getFullscreenAPI();\r\n //$api.enter();\r\n $(\"body\").css('overflowY', 'hidden');\r\n $gallery.listen('close', function() {\r\n if($scroll){\r\n $(\"body\").css('overflowY', 'scroll');\r\n }\r\n $container.remove();\r\n $previewPlayer.player.pause = true;\r\n $previewPlayer.destroy();\r\n if($myPlayer) {\r\n $myPlayer.player.play = true;\r\n }\r\n });\r\n $gallery.listen('beforeResize', function() {\r\n if($fullscreen){\r\n $target.height($(window).height());\r\n }else{\r\n $target.height($(window).height());\r\n }\r\n $fullscreen = !$fullscreen;\r\n });\r\n },\r\n //Banners\r\n banners_location:function(cback){\r\n cback({\r\n 'banners':$(\"#nurseslounge-lounge-information .nurseslounge-lounge-information-right .banners\")\r\n });\r\n },\r\n lounge_ads_location:function(cback){\r\n cback({\r\n 'ads':$(\"#nurseslounge-lounge-information .nurseslounge-lounge-information-right .lounge-ads\")\r\n });\r\n },\r\n //Claim Lounge\r\n claim_lounge_container:function(cback){\r\n var $container = $(\"#nurseslounge-lounge-information .nurseslounge-lounge-information-right\");\r\n cback($container);\r\n }\r\n};\r\n","(function($){\r\n var $nlWallSettings;\r\n var nlWall;\r\n\r\n var $nlWallRecognizeUrlSettings, $nlWallRecognizeUrlOriginal;\r\n var nlWallRecognizeUrl;\r\n\r\n var $nlWallUpdateSettings, $nlWallUpdateOriginal;\r\n var nlWallUpdate;\r\n\r\n var $nlWallAlbumSettings, $nlWallAlbumOriginal;\r\n var nlWallAlbum;\r\n\r\n var $nlWallDocumentPreviewSettings, $nlWallDocumentPreviewOriginal;\r\n var nlWallDocumentPreview;\r\n\r\n var $nlWallMenuSettings, $nlWallMenuOriginal;\r\n var nlWallMenu;\r\n\r\n var nlWallHelper = {\r\n with_params:{},\r\n wall_dates:[],\r\n wall_dates_binding:null,\r\n server_date_helper:null,\r\n server_date:null,\r\n set_with_params:function($withParams){\r\n this.with_params = $withParams;\r\n },\r\n get_with_params:function(){\r\n return this.with_params;\r\n },\r\n get_visibles_in:function($type, $in){\r\n var $showing = 0;\r\n $($in).each(function(){\r\n if($(this).data('type') == $type){\r\n $showing++;\r\n }\r\n });\r\n return $showing;\r\n },\r\n get_post_type:function($level){\r\n if($level > 1){\r\n return 'sub-comment';\r\n }else\r\n if($level == 1){\r\n return 'comment';\r\n }else\r\n if($level == 0){\r\n return 'post';\r\n }\r\n },\r\n set_server_date:function($serverDate){\r\n this.server_date_helper = new Date();\r\n this.server_date = new Date($serverDate);\r\n },\r\n get_server_date:function(){\r\n var $now = new Date().getTime();\r\n var $diff = $now - this.server_date_helper.getTime();\r\n var $date = this.server_date.getTime() + $diff;\r\n return new Date($date);\r\n },\r\n set_wall_dates:function($postIds){\r\n this.wall_dates = $postIds;\r\n },\r\n get_wall_dates:function(){\r\n return this.wall_dates;\r\n },\r\n wall_date:function(cback){\r\n var $wallDate = libs.memoryGet('wall_date');\r\n if($wallDate){\r\n try{\r\n $wallDate.abort();\r\n }catch($e){\r\n\r\n }\r\n }\r\n $wallDate = $.ajax({\r\n url:location.href,\r\n method: \"GET\",\r\n cache:false,\r\n dataType: \"html\",\r\n success: function ($data, $status, $response) {\r\n var $dateString = $response.getResponseHeader('date');\r\n if ($dateString.indexOf('GMT')) {\r\n $dateString = $dateString.replace('GMT','');\r\n }\r\n nlWallHelper.set_server_date($dateString);\r\n nlWallHelper.wall_date_html();\r\n if(cback != undefined){\r\n cback();\r\n }\r\n }\r\n });\r\n libs.memorySave('wall_date', $wallDate);\r\n },\r\n wall_date_html:function(){\r\n var $refreshEverySeconds = 1;\r\n var $now = nlWallHelper.get_server_date().getTime();\r\n var $wallDates = nlWallHelper.get_wall_dates();\r\n for(var $i in $wallDates){\r\n var $key = $wallDates[$i];\r\n var $ele = $(document).find('.post-date[data-id=\"'+$key+'\"]');\r\n if($ele.length > 0){\r\n var $val = $ele.data('postdate');\r\n var $newDate = $val.split(' ');\r\n var $yearMonthDay = $newDate[0];\r\n $yearMonthDay = $yearMonthDay.split('-');\r\n var $HourMinuteSecond = $newDate[1];\r\n $HourMinuteSecond = $HourMinuteSecond.split(':');\r\n var $date = new Date($yearMonthDay[0], $yearMonthDay[1] - 1, $yearMonthDay[2], $HourMinuteSecond[0], $HourMinuteSecond[1], $HourMinuteSecond[2]);\r\n var $second = $date.getSeconds();\r\n $second = $second <= 9 ? '0' + $second : $second;\r\n var $minute = $date.getMinutes();\r\n $minute = $minute <= 9 ? '0' + $minute : $minute;\r\n var $hour = $date.getHours();\r\n $hour = $hour <= 9 ? '0' + $hour : $hour;\r\n var $day = $date.getDate();\r\n $day = $day <= 9 ? '0' + $day : $day;\r\n var $month = $date.getMonth() + 1;\r\n $month = $month <= 9 ? '0' + $month : $month;\r\n var $year = $date.getFullYear();\r\n var $postDate = $year + '-' + $month + '-' + $day + ' ' + $hour + ':'+ $minute + ':' + $second;\r\n $date = $date.getTime();\r\n var $diffSeconds = Math.floor(($now - $date)/1000);\r\n var $diffMinutes = Math.floor($diffSeconds/60);\r\n var $diffHours = Math.floor($diffMinutes/60);\r\n var $diffDays = Math.floor($diffHours/24);\r\n var $chtml = '';\r\n if($diffDays == 0 && $diffHours == 0 && $diffMinutes == 0){\r\n $chtml = $diffSeconds == 1 ? $diffSeconds + ' second ago' : $diffSeconds + ' seconds ago';\r\n }else\r\n if ($diffDays == 0 && $diffHours == 0){\r\n $chtml = $diffMinutes == 1 ? $diffMinutes + ' minute ago' : $diffMinutes + ' minutes ago';\r\n }else\r\n if ($diffDays == 0){\r\n $chtml = $diffHours == 1 ? $diffHours + ' hour ago' : $diffHours + ' hours ago';\r\n }else\r\n if($diffDays < 30){\r\n $chtml = $diffDays == 1 ? $diffDays + ' day ago' : $diffDays + ' days ago';\r\n }else{\r\n $date = $(document).find('.post-date[data-id=\"'+$key+'\"]').data('postdate');\r\n //$chtml = moment.utc($date, 'YYYY-MM-DD HH:mm:ss').local().format('MMMM, DD YYYY hh:mm A');\r\n $chtml = 'Over 30 days ago';\r\n }\r\n if($ele.html() != $chtml){\r\n $ele.data('postdate', $postDate).html($chtml);\r\n }\r\n }\r\n }\r\n try{\r\n clearTimeout(this.wall_dates_binding);\r\n }catch($e){}\r\n this.wall_dates_binding = setTimeout(function(){\r\n nlWallHelper.wall_date_html();\r\n }, ($refreshEverySeconds * 1000));\r\n },\r\n };\r\n var nlWallHtml = {\r\n load_more:function(){\r\n var $chtml = '' +\r\n '
' +\r\n '
' +\r\n ' ' +\r\n '
' +\r\n '
';\r\n return $chtml;\r\n },\r\n post:function($v){\r\n var $postId = $v.id;\r\n var $postLevel = $v.level;\r\n var $postDate = $v.date;\r\n var $postLongDate = moment.utc($postDate, 'YYYY-MM-DD HH:mm:ss').local().format('MMMM, DD YYYY hh:mm A');\r\n var $postType = nlWallHelper.get_post_type($postLevel);\r\n var $postByLounge = $v.lounge && $v.lounge.key;\r\n var $postImage = $postByLounge ? $v.lounge.logo_root_lounge : $v.user.profile_image_root_wall;\r\n var $postImageLink = $postByLounge ? $v.lounge.link : $v.user.profile_url;\r\n var $postName = $postByLounge ? $v.lounge.name : $v.user.first_name+' '+$v.user.last_name;\r\n $postName = $postName.length > 75 ? $postName.substr(0, 75) + '...' : $postName;\r\n var $profileImage = $v.user.my_image_root_wall;\r\n var $profileImageLink = $v.user.my_profile_url;\r\n var $postContent = $v.post;\r\n $postContent = libs.replacePerBreaklines($postContent);\r\n $postContent = libs.convertUrlToLink($postContent);\r\n var $announcement = $v.announcement;\r\n //item, options, post-content\r\n var $chtml = '';\r\n $chtml+= '' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n ' \"profile' +\r\n '
' +\r\n '
' +\r\n '

'+$postName+'

' +\r\n '

'+$postLongDate+'

' +\r\n '
' +\r\n '
' +\r\n ' ' +\r\n ' \"option\"' +\r\n ' ' +\r\n '
' +\r\n '
' +\r\n '
';\r\n if($announcement){\r\n $chtml+= '' +\r\n '
' +\r\n '
';\r\n switch($announcement){\r\n case 'message':\r\n $chtml+= '';\r\n break;\r\n case 'calendar':\r\n $chtml+= '';\r\n break;\r\n }\r\n switch($announcement){\r\n case 'message':\r\n $chtml+= '' +\r\n '
' +\r\n '
' +\r\n '
Announcement
' +\r\n '
'+\r\n '
';\r\n break;\r\n case 'calendar':\r\n $chtml+= '' +\r\n '
' +\r\n '
' +\r\n '
Calendar
' +\r\n '
'+\r\n '
';\r\n break;\r\n }\r\n }\r\n $chtml+= '' +\r\n '
' +\r\n '

' +\r\n $postContent +\r\n '

' +\r\n nlWallHtml.documents($v) +\r\n nlWallHtml.links($v) +\r\n nlWallHtml.references($v) +\r\n nlWallHtml.likes($v) +\r\n nlWallHtml.reply($v) +\r\n '
' +\r\n nlWallHtml.threads($v) +\r\n '
'+\r\n '
' +\r\n ' ' +\r\n ' ... Read more' +\r\n ' ' +\r\n '
' +\r\n '
' +\r\n ' ' +\r\n '';\r\n\r\n return $chtml;\r\n },\r\n documents:function($v, $action){\r\n var $chtml = '';\r\n $action = $action != undefined ? $action : 'readonly';\r\n $.each($v.documents, function ($si, $sv){\r\n var $id = $action == 'edit' ? $sv.document.id : $sv.id;\r\n var $documentId = $sv.document && $sv.document.id ? $sv.document.id : null;\r\n var $thumb = $sv.document ? $sv.document.document_thumb_root : '';\r\n var $fileType = $sv.document ? $sv.document.file_type : '';\r\n var $name = $sv.document ? $sv.document.name : '';\r\n\r\n //website-attach, document-was-deleted\r\n if($documentId){\r\n libs.memorySave($fileType+$id, $sv.document);\r\n $chtml += '' +\r\n '
';\r\n }else{\r\n $chtml += '' +\r\n '
';\r\n }\r\n $chtml += '
';\r\n if($action == 'edit') {\r\n $chtml +=\r\n '
' +\r\n ' ' +\r\n '
';\r\n }\r\n $chtml +='
' +\r\n $name +\r\n '
';\r\n if($documentId) {\r\n $chtml += '' +\r\n '
' +\r\n '
' +\r\n ' ' +\r\n '
' +\r\n '
';\r\n }else{\r\n $chtml += '' +\r\n '
' +\r\n '
' +\r\n ' This document was deleted'+\r\n ' ' +\r\n '
' +\r\n '
';\r\n }\r\n $chtml += '
' +\r\n '
';\r\n });\r\n return $chtml;\r\n },\r\n links:function($v, $action){\r\n var $chtml = '';\r\n $action = $action != undefined ? $action : 'readonly';\r\n $.each($v.links, function ($si, $sv){\r\n var $link = $sv.link;\r\n var $linkId = $sv.links_id;\r\n var $linkPosition = $link.position;\r\n var $linkUrl = $link.patternUrl;\r\n var $linkImage = $link.image;\r\n var $linkContent = $link.content != \"\" ? $link.content : $linkUrl;\r\n $linkContent = $(\"
\").html($linkContent).text();\r\n var $linkTitle = $link.title != \"\" ? $link.title : $linkUrl;\r\n $linkTitle = $(\"
\").html($linkTitle).text();\r\n\r\n //website-link\r\n $chtml += '' +\r\n '';\r\n });\r\n return $chtml;\r\n },\r\n references:function($v){\r\n var $chtml = '';\r\n if($v.lounge_wall){\r\n\r\n var $postByLoungeKey = $v.lounge.key;\r\n var $postByLoungeWallKey = $v.lounge_wall.key;\r\n\r\n if($v.lounge_wall.documents) {\r\n $.each($v.lounge_wall.documents, function ($si, $sv) {\r\n var $id = $sv.id;\r\n var $documentId = $sv.document && $sv.document.id ? $sv.document.id : null;\r\n var $thumb = $sv.document ? $sv.document.document_thumb_root : '';\r\n var $fileType = $sv.document ? $sv.document.file_type : '';\r\n var $name = $sv.document ? $sv.document.name : '';\r\n\r\n //website-attach, document-was-deleted\r\n if ($documentId) {\r\n $chtml += '' +\r\n '
';\r\n } else {\r\n $chtml += '' +\r\n '
';\r\n }\r\n\r\n $chtml +=\r\n '
' +\r\n '
' +\r\n $name +\r\n '
';\r\n\r\n if ($documentId) {\r\n $chtml += '' +\r\n '
' +\r\n '
' +\r\n ' ' +\r\n '
' +\r\n '
';\r\n } else {\r\n $chtml += '' +\r\n '
' +\r\n '
' +\r\n ' This document was deleted' +\r\n ' ' +\r\n '
' +\r\n '
';\r\n }\r\n\r\n $chtml += '
' +\r\n '
';\r\n });\r\n }\r\n if($v.lounge_wall.links){\r\n $.each($v.lounge_wall.links, function ($si, $sv){\r\n var $link = $sv.link;\r\n var $linkId = $sv.links_id;\r\n var $linkPosition = $link.position;\r\n var $linkUrl = $link.patternUrl;\r\n var $linkImage = $link.image;\r\n var $linkContent = $link.content != \"\" ? $link.content : $linkUrl;\r\n $linkContent = $(\"
\").html($linkContent).text();\r\n var $linkTitle = $link.title != \"\" ? $link.title : $linkUrl;\r\n $linkTitle = $(\"
\").html($linkTitle).text();\r\n\r\n //website-link\r\n $chtml += '' +\r\n '';\r\n });\r\n }\r\n }\r\n return $chtml;\r\n },\r\n likes:function($v){\r\n var $postId = $v.id;\r\n var $myLike = $v.my_like;\r\n var $likesCount = $v.likes_count;\r\n var $commentsCount = $v.comments_count;\r\n var $postByLounge = $v.lounge && $v.lounge.key;\r\n var $postByLoungeKey = $postByLounge ? $v.lounge.key : 0;\r\n var $postByLoungeWallKey = $postByLounge && $v.lounge_wall ? $v.lounge_wall.key : null;\r\n var $postByLoungeWallCommentsCount = $postByLounge && $v.lounge_wall ? $v.lounge_wall.comments_count : 0;\r\n var $joinOrView = $postByLounge && $v.lounge_wall && $v.lounge_wall.documents && $v.lounge_wall.documents.length > 0 ? ' or view the attachment.' : '.';\r\n //share add-like, likes-count, comments-count, share-with\r\n\r\n var $chtml = '' +\r\n '
';\r\n if($postByLounge && $postByLoungeWallKey) {\r\n var $commentsTxt = $postByLoungeWallCommentsCount == 1 ? 'comment' : 'comments';\r\n $chtml += '' +\r\n '';\r\n }\r\n $chtml += '' +\r\n '
' +\r\n ' ';\r\n if($myLike) {\r\n $chtml += '';\r\n }else{\r\n $chtml += '';\r\n }\r\n $chtml += '' +\r\n ' '+$likesCount+'' +\r\n ' ';\r\n if(!$postByLounge) {\r\n $chtml += '' +\r\n ' ' +\r\n ' ' +\r\n ' '+$commentsCount+'' +\r\n ' ';\r\n }\r\n $chtml += '' +\r\n ' ' +\r\n ' ' +\r\n ' ';\r\n if(!$postByLounge) {\r\n $chtml += '' +\r\n ' ' +\r\n ' ' +\r\n ' ';\r\n }\r\n $chtml += '' +\r\n '
' +\r\n '
';\r\n return $chtml;\r\n },\r\n reply:function($v){\r\n var $postId = $v.id;\r\n var $postLevel = $v.level;\r\n var $toUserId = $v.user_id;\r\n var $postType = \"post\";\r\n var $postByLounge = $v.lounge && $v.lounge.key;\r\n var $postImage = $postByLounge ? $v.lounge.logo_root_lounge : $v.user.profile_image_root_wall;\r\n var $postImageLink = $postByLounge ? $v.lounge.link : $v.user.profile_url;\r\n var $postName = $postByLounge ? $v.lounge.name : $v.user.first_name+' '+$v.user.last_name;\r\n $postName = $postName.length > 75 ? $postName.substr(0, 75) + '...' : $postName;\r\n var $profileImage = $v.user.my_image_root_wall;\r\n var $profileImageLink = $v.user.my_profile_url;\r\n var $postContent = libs.replacePerBreaklines($v.post);\r\n $postContent = libs.convertUrlToLink($postContent);\r\n\r\n //reply, reply-post, wall-update\r\n var $chtml = '';\r\n if($postByLounge){\r\n return $chtml;\r\n }\r\n $chtml += '' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n ' \"profile\"' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
';\r\n if($postLevel == 0){\r\n $chtml += '' +\r\n '';\r\n }else{\r\n $chtml += '' +\r\n '';\r\n }\r\n $chtml += '' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n ' ' +\r\n ' ' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
';\r\n\r\n return $chtml;\r\n },\r\n threads:function($v){\r\n var $chtml = '';\r\n $chtml += '';\r\n return $chtml;\r\n },\r\n thread:function($data){\r\n var $chtml = '';\r\n var $postId = $data.id;\r\n var $postLevel = $data.level;\r\n var $postDate = $data.date;\r\n var $postLongDate = moment.utc($postDate, 'YYYY-MM-DD HH:mm:ss').local().format('MMMM, DD YYYY hh:mm A');\r\n var $postType = nlWallHelper.get_post_type($postLevel);\r\n var $postByLounge = $data.lounge && $data.lounge.key;\r\n var $postImage = $postByLounge ? $data.lounge.logo_root_lounge : $data.user.profile_image_root_wall;\r\n var $postImageLink = $postByLounge ? $data.lounge.link : $data.user.profile_url;\r\n var $postName = $postByLounge ? $data.lounge.name : $data.user.first_name+' '+$data.user.last_name;\r\n $postName = $postName.length > 75 ? $postName.substr(0, 75) + '...' : $postName;\r\n var $profileImage = $data.user.my_image_root_wall;\r\n var $profileImageLink = $data.user.my_profile_url;\r\n var $postContent = $data.post;\r\n $postContent = libs.replacePerBreaklines($postContent);\r\n $postContent = libs.convertUrlToLink($postContent);\r\n\r\n //item, options, post-content\r\n $chtml += '' +\r\n '
  • ' +\r\n '
    ' +\r\n '
    ' +\r\n ' \"profile' +\r\n '
    ' +\r\n '
    ' +\r\n '
    ' +\r\n '
    ' +\r\n '
    ' +\r\n ' ' +\r\n ' \"option\"' +\r\n ' ' +\r\n '
    ' +\r\n '
    '+$postName+'
    ' +\r\n '

    '+$postLongDate+'

    ' +\r\n '
    ' +\r\n '
    ' +\r\n '

    ' +\r\n $postContent +\r\n '

    ' +\r\n nlWallHtml.documents($data) +\r\n nlWallHtml.links($data) +\r\n nlWallHtml.references($data) +\r\n '
    ' +\r\n '
    ' +\r\n nlWallHtml.likes($data) +\r\n nlWallHtml.reply($data) +\r\n '
    ' +\r\n '
    ' +\r\n '
  • ' +\r\n '
  • ' +\r\n nlWallHtml.threads($data) +\r\n '
  • '+\r\n '
  • ' +\r\n ' ' +\r\n ' ... Read more' +\r\n ' ' +\r\n '
  • ';\r\n\r\n return $chtml;\r\n },\r\n recognize_preload:function(){\r\n return '' +\r\n '
    ' +\r\n '
    ' +\r\n ' ' +\r\n '

    Loading ...

    '+\r\n '
    ' +\r\n '
    ';\r\n },\r\n recognize_url:function($data){\r\n var $chtml = '';\r\n $.each($data.data.urls, function ($i, $v){\r\n var $linkPosition = $v.position;\r\n var $linkUrl = $v.patternUrl;\r\n var $linkImage = $v.image;\r\n var $linkContent = $v.content != \"\" ? $v.content : $linkUrl;\r\n var $linkTitle = $v.title != \"\" ? $v.title : $linkUrl;\r\n $chtml += '' +\r\n '';\r\n });\r\n return $chtml;\r\n },\r\n update_container:function($action){\r\n var $chtml = '';\r\n $chtml += '' +\r\n '
    ';\r\n if($action == 'image'){\r\n $chtml += '' +\r\n '
    ' +\r\n ' ' +\r\n '
    ';\r\n }\r\n if($action == 'document'){\r\n $chtml += '' +\r\n '
    ' +\r\n ' ' +\r\n '
    ';\r\n }\r\n if($action == 'video'){\r\n $chtml += '' +\r\n '
    ' +\r\n ' '+\r\n '
    ';\r\n }\r\n if($action == 'webcam_image'){\r\n $chtml += '' +\r\n '
    ' +\r\n '
    ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n '
    ' +\r\n '';\r\n }\r\n return $chtml;\r\n },\r\n update_preload:function(){\r\n return '' +\r\n '
    ' +\r\n ' ' +\r\n '

    Loading ...

    '+\r\n '
    ';\r\n },\r\n update_options:function(){\r\n return '' +\r\n '
  • ' +\r\n '
    ' +\r\n ' ' +\r\n ' ' +\r\n '
    ' +\r\n '
  • ';\r\n },\r\n update_wall:function($documents){\r\n var $chtml = '';\r\n var $id = $documents.id ? $documents.id : null;\r\n var $thumb = $documents.document_thumb_root ? $documents.document_thumb_root : '';\r\n var $fileType = $documents.file_type ? $documents.file_type : '';\r\n var $name = $documents.name ? $documents.name : '';\r\n\r\n //website-attach, document-was-deleted\r\n libs.memorySave($fileType+$id, $documents);\r\n $chtml += '' +\r\n '
    '+\r\n '
    ' +\r\n '
    ' +\r\n ' ' +\r\n '
    ' +\r\n '
    ' +\r\n ' ' +\r\n '
    ' +\r\n '
    ' +\r\n '
    ';\r\n return $chtml;\r\n },\r\n album_preload:function(){\r\n return '' +\r\n '
    ' +\r\n ' ' +\r\n '

    Loading ...

    '+\r\n '
    ';\r\n },\r\n album_view_html:function($data){\r\n var $chtml = '';\r\n $($data.data.documents).each(function($i, $v){\r\n $chtml += '' +\r\n '
    ' +\r\n '
    ' +\r\n '
    ' +\r\n '
    ' +\r\n ' ' +\r\n '
    ' +\r\n '

    '+$v.name+'

    ' +\r\n '
    ' +\r\n '
    ' +\r\n ' \"trash\"' +\r\n '
    ' +\r\n '
    ' +\r\n '
    ';\r\n });\r\n return $chtml;\r\n },\r\n wall_menu_popup:function($data, $options, $action){\r\n $action = $action != undefined ? $action : 'edit';\r\n var $postId = $data.id;\r\n var $postLevel = $data.level;\r\n var $postDate = $data.date;\r\n var $postLongDate = moment.utc($postDate, 'YYYY-MM-DD HH:mm:ss').local().format('MMMM, DD YYYY hh:mm A');\r\n var $postType = nlWallHelper.get_post_type($postLevel);\r\n var $postByLounge = $data.lounge && $data.lounge.key;\r\n var $postImage = $postByLounge ? $data.lounge.logo_root_lounge : $data.user.profile_image_root_wall;\r\n var $postImageLink = $postByLounge ? $data.lounge.link : $data.user.profile_url;\r\n var $postName = $postByLounge ? $data.lounge.name : $data.user.first_name+' '+$data.user.last_name;\r\n $postName = $postName.length > 75 ? $postName.substr(0, 75) + '...' : $postName;\r\n var $profileImage = $data.user.my_image_root_wall;\r\n var $profileImageLink = $data.user.my_profile_url;\r\n var $postContent = $data.post;\r\n var $chtml = '' +\r\n '
    ' +\r\n '
    '+\r\n '
    ' +\r\n '
    '+$postName+'
    ' +\r\n '
    ' +\r\n '
    ' +\r\n '
    '+$postLongDate+'
    ' +\r\n '
    ' +\r\n '
    ' +\r\n '
    ';\r\n if($action == 'edit') {\r\n $postContent = libs.replaceBreaklines($postContent);\r\n $chtml += '' +\r\n '';\r\n }else{\r\n $postContent = libs.replacePerBreaklines($postContent);\r\n $postContent = libs.convertUrlToLink($postContent);\r\n $chtml += '' +\r\n '

    ' + $postContent + '

    ';\r\n }\r\n $chtml += ''+\r\n '
    ' +\r\n '
    ';\r\n $chtml +=\r\n nlWallHtml.documents($data, $action) +\r\n nlWallHtml.links($data, $action) +\r\n nlWallHtml.references($data) +\r\n '
    ' +\r\n '
    ';\r\n $.each($options, function($i, $v){\r\n $chtml += '';\r\n });\r\n $chtml += ''+\r\n '
    ';\r\n '
    ';\r\n\r\n return $chtml;\r\n },\r\n wall_menu_preload:function(){\r\n return '' +\r\n '
    ' +\r\n ' ' +\r\n '

    Loading ...

    '+\r\n '
    ';\r\n },\r\n wall_menu_update_thread:function($data){\r\n var $chtml = '';\r\n var $postId = $data.id;\r\n var $postLevel = $data.level;\r\n var $postDate = $data.date;\r\n var $postLongDate = moment.utc($postDate, 'YYYY-MM-DD HH:mm:ss').local().format('MMMM, DD YYYY hh:mm A');\r\n var $postType = nlWallHelper.get_post_type($postLevel);\r\n var $postByLounge = $data.lounge && $data.lounge.key;\r\n var $postImage = $postByLounge ? $data.lounge.logo_root_lounge : $data.user.profile_image_root_wall;\r\n var $postImageLink = $postByLounge ? $data.lounge.link : $data.user.profile_url;\r\n var $postName = $postByLounge ? $data.lounge.name : $data.user.first_name+' '+$data.user.last_name;\r\n $postName = $postName.length > 75 ? $postName.substr(0, 75) + '...' : $postName;\r\n var $profileImage = $data.user.my_image_root_wall;\r\n var $profileImageLink = $data.user.my_profile_url;\r\n var $postContent = $data.post;\r\n $postContent = libs.replacePerBreaklines($postContent);\r\n $postContent = libs.convertUrlToLink($postContent);\r\n\r\n //item, options, post-content\r\n $chtml += '' +\r\n '
  • ' +\r\n '
    ' +\r\n '
    ' +\r\n ' \"profile' +\r\n '
    ' +\r\n '
    ' +\r\n '
    ' +\r\n '
    ' +\r\n '
    ' +\r\n ' ' +\r\n ' \"option\"' +\r\n ' ' +\r\n '
    ' +\r\n '
    '+$postName+'
    ' +\r\n '

    '+$postLongDate+'

    ' +\r\n '
    ' +\r\n '
    ' +\r\n '

    ' +\r\n $postContent +\r\n '

    ' +\r\n nlWallHtml.documents($data) +\r\n nlWallHtml.links($data) +\r\n nlWallHtml.references($data) +\r\n '
    ' +\r\n '
    ' +\r\n nlWallHtml.likes($data) +\r\n nlWallHtml.reply($data) +\r\n '
    ' +\r\n '
    ' +\r\n '
  • ';\r\n\r\n return $chtml;\r\n },\r\n wall_menu_update_post:function($data){\r\n var $postId = $data.id;\r\n var $postLevel = $data.level;\r\n var $postDate = $data.date;\r\n var $postLongDate = moment.utc($postDate, 'YYYY-MM-DD HH:mm:ss').local().format('MMMM, DD YYYY hh:mm A');\r\n var $postType = nlWallHelper.get_post_type($postLevel);\r\n var $postByLounge = $data.lounge && $data.lounge.key;\r\n var $postImage = $postByLounge ? $data.lounge.logo_root_lounge : $data.user.profile_image_root_wall;\r\n var $postImageLink = $postByLounge ? $data.lounge.link : $data.user.profile_url;\r\n var $postName = $postByLounge ? $data.lounge.name : $data.user.first_name+' '+$data.user.last_name;\r\n $postName = $postName.length > 75 ? $postName.substr(0, 75) + '...' : $postName;\r\n var $profileImage = $data.user.my_image_root_wall;\r\n var $profileImageLink = $data.user.my_profile_url;\r\n var $postContent = $data.post;\r\n $postContent = libs.replacePerBreaklines($postContent);\r\n $postContent = libs.convertUrlToLink($postContent);\r\n\r\n //item, options, post-content\r\n var $chtml = '';\r\n $chtml+= '' +\r\n '
    ' +\r\n '
    ' +\r\n '
    ' +\r\n ' \"profile' +\r\n '
    ' +\r\n '
    ' +\r\n '

    '+$postName+'

    ' +\r\n '

    '+$postLongDate+'

    ' +\r\n '
    ' +\r\n '
    ' +\r\n ' ' +\r\n ' \"option\"' +\r\n ' ' +\r\n '
    ' +\r\n '
    ' +\r\n '
    ' +\r\n '
    ' +\r\n '

    ' +\r\n $postContent +\r\n '

    ' +\r\n nlWallHtml.documents($data) +\r\n nlWallHtml.links($data) +\r\n nlWallHtml.references($data) +\r\n nlWallHtml.likes($data) +\r\n nlWallHtml.reply($data) +\r\n '
    '+\r\n ' ' +\r\n '
    ' +\r\n '
    ' +\r\n '
    ';\r\n\r\n return $chtml;\r\n }\r\n };\r\n var nlWallEvents ={\r\n comments:function($options){\r\n $options.wall_container().find('.item').each(function(){\r\n var $that = $(this);\r\n var $id = $that.data('id');\r\n nlWall.post_send({\r\n first_wall_post:0,\r\n level:0,\r\n rows:5, //How many rows will load at the beginning (wall_get_step) 10\r\n post_step:2, //$wallShowPost step (wall_post_get_step)\r\n comment_step:2, //$wallShowComments step (wall_comment_get_step)\r\n subcomment_step:2, //$wallShowSubComments step (wall_sub_comment_get_step),\r\n wall_container:function(){\r\n return $(\"#nurseslounge-home-activity .nurseslounge-home-activity-left .wall-container\");\r\n },\r\n wall_container_btn:function(){\r\n return $(\"#nurseslounge-home-activity .nurseslounge-home-activity-left .btn-refresh-wall-up\");\r\n },\r\n wall_share_modal:function(){\r\n return $(\"#nurseslounge-home-activity-wall-share-modal\");\r\n },\r\n wall_textarea:function(){\r\n return $(\"#nurseslounge-home-activity .nurseslounge-home-activity-left\").find('.post-text[data-id=\"'+$id+'\"]');\r\n },\r\n wall_send_btn:function(){\r\n return $(\"#nurseslounge-home-activity .nurseslounge-home-activity-left\").find('.send-post[data-id=\"'+$id+'\"]');\r\n },\r\n wall_attach_preview:function(){\r\n return $(\"#nurseslounge-home-activity .nurseslounge-home-activity-left\").find('.preview[data-id=\"'+$id+'\"]');\r\n }\r\n }, function(){\r\n nlWallRecognizeUrl.init({\r\n wall_textarea: function(){\r\n return $(\"#nurseslounge-home-activity .nurseslounge-home-activity-left\").find('.post-text[data-id=\"'+$id+'\"]');\r\n },\r\n recognize_url_preload_target: function(){\r\n return $(\"#nurseslounge-home-activity .nurseslounge-home-activity-left\").find('.preview[data-id=\"'+$id+'\"]');\r\n },\r\n recognize_url_target: function(){\r\n return $(\"#nurseslounge-home-activity .nurseslounge-home-activity-left\").find('.preview[data-id=\"'+$id+'\"]');\r\n },\r\n on_key_press_callback: false\r\n }, function () {\r\n nlWallUpdate.init({\r\n wall_update_button:function(){\r\n return $(\"#nurseslounge-home-activity .nurseslounge-home-activity-left\").find('.upload[data-id=\"'+$id+'\"]');\r\n },\r\n wall_update_preload_target: function(){\r\n return $(\"#nurseslounge-home-activity .nurseslounge-home-activity-left\").find('.preview[data-id=\"'+$id+'\"]');\r\n },\r\n wall_update_target: function(){\r\n return $(\"#nurseslounge-home-activity .nurseslounge-home-activity-left\").find('.preview[data-id=\"'+$id+'\"]');\r\n },\r\n wall_update_text_area:function(){\r\n return $(\"#nurseslounge-home-activity .nurseslounge-home-activity-left\").find('.post-text[data-id=\"'+$id+'\"]');\r\n },\r\n on_close_modal_callback:false,\r\n on_end_callback:false,\r\n get_data_callback:false,\r\n wall_update_skip:[]\r\n }, function(){\r\n libs.checkImageLoad($('body').find('img'), function(){\r\n libs.refreshTooltips();\r\n });\r\n });\r\n });\r\n });\r\n });\r\n }\r\n };\r\n $.fn.nurseslounge_myDashboard_wall = function(\r\n $params,\r\n $nlWallOptions,\r\n $nlWallRecognizeUrlOptions,\r\n $nlWallUpdateOptions,\r\n $nlWallAlbumOptions,\r\n $nlWallDocumentPreviewOptions,\r\n $nlWallMenuOptions,\r\n $notRun\r\n ){\r\n if($notRun == undefined){\r\n $notRun == false;\r\n }\r\n\r\n nlWallHelper.set_with_params($params);\r\n //nlWall\r\n var $nlWallDefaults = {\r\n wall_url_get:\"/myDashboard/activity/wall/get\",\r\n wall_url_likes:\"/myDashboard/activity/wallLikes/set\",\r\n wall_url_share_get:\"/myDashboard/activity/wallOptionsMenuShare/get\",\r\n wall_url_share_set:\"/myDashboard/activity/wallOptionsMenuShare/set\",\r\n wall_url_set:\"/myDashboard/activity/wall/set\",\r\n wall_debug:false\r\n };\r\n if($nlWallOptions != undefined){\r\n $nlWallSettings = $.extend({}, $nlWallDefaults, $nlWallOptions);\r\n }else{\r\n $nlWallSettings = $.extend({}, $nlWallDefaults);\r\n }\r\n nlWall = {\r\n init:function($options){\r\n $options = $options == undefined ? {} : $options;\r\n $options = $.extend({}, {\r\n first_wall_post:0,\r\n level:0,\r\n rows:5, //How many rows will load at the beginning (wall_get_step) 10\r\n post_step:2, //$wallShowPost step (wall_post_get_step)\r\n comment_step:2, //$wallShowComments step (wall_comment_get_step)\r\n subcomment_step:2, //$wallShowSubComments step (wall_sub_comment_get_step),\r\n wall_container:function(){\r\n return $(\"#nurseslounge-home-activity .nurseslounge-home-activity-left .wall-container\");\r\n },\r\n wall_container_btn:function(){\r\n return $(\"#nurseslounge-home-activity .nurseslounge-home-activity-left .btn-refresh-wall-up\");\r\n },\r\n wall_share_modal:function(){\r\n return $(\"#nurseslounge-home-activity-wall-share-modal\");\r\n },\r\n wall_textarea:function(){\r\n return $(\"#nurseslounge-home-activity .nurseslounge-home-activity-left\").find('.post-text[data-id=\"0\"]');\r\n },\r\n wall_send_btn:function(){\r\n return $(\"#nurseslounge-home-activity .nurseslounge-home-activity-left\").find('.send-post[data-id=\"0\"]');\r\n },\r\n wall_attach_preview:function(){\r\n return $(\"#nurseslounge-home-activity .nurseslounge-home-activity-left\").find('.preview[data-id=\"0\"]');\r\n },\r\n wall_open_album:function(){\r\n return $(\"#nurseslounge-home-activity .nurseslounge-home-activity-right\").find('.album:first');\r\n },\r\n }, $options);\r\n var $rows = $options.rows;\r\n var $firstWallPost = $options.first_wall_post;\r\n var $level = $options.level;\r\n nlWall.get({\r\n first_wall_post:$firstWallPost,\r\n show:'down',\r\n limit:$rows,\r\n offset:0,\r\n level:$level\r\n },\r\n $options,\r\n function(){\r\n nlWallEvents.comments($options);\r\n });\r\n $options.wall_open_album().find('.option').each(function(){\r\n var $that = $(this);\r\n if($that.data('action') == 'open'){\r\n $that.unbind().click(function(){\r\n nlWallAlbum.open({\r\n on_close_modal:false,\r\n on_end_callback:false,\r\n on_start_callback:false,\r\n album_allow_tabs : {\r\n 'profile_webcam_image':true,\r\n 'profile_image':true,\r\n 'profile_document':true,\r\n 'profile_video':true,\r\n 'profile_article':true\r\n },\r\n album_step:11,\r\n album_allow_add:true,\r\n album_allow_select:false\r\n });\r\n });\r\n }\r\n });\r\n },\r\n get:function($params, $options, cback){\r\n var $wallUrlGet = $nlWallSettings.wall_url_get;\r\n var $wallDebug = $nlWallSettings.wall_debug;\r\n var $withParams = $.extend({}, nlWallHelper.get_with_params(), $params);\r\n $.ajax({\r\n url:$wallUrlGet,\r\n method: \"POST\",\r\n cache:false,\r\n dataType: \"json\",\r\n data: $withParams,\r\n success: function ($data, $status, $response) {\r\n libs.expire($data);\r\n if($wallDebug){console.log($withParams);console.log($wallUrlGet);console.log($data);}\r\n if($data.status == 'success'){\r\n nlWall.refresh($data.data.wall_post, 0, $options, function(){\r\n nlWall.clock($options, function(){\r\n nlWall.fade_in($options, function(){\r\n nlWall.load_more($data.data.total_filtered, $options,function() {\r\n if (cback != undefined) {\r\n cback();\r\n }\r\n });\r\n });\r\n });\r\n });\r\n }\r\n }\r\n });\r\n },\r\n refresh:function($wallPost, $postIndex, $options, cback){\r\n $wallPost = Object.values($wallPost);\r\n var $wallContainer = $options.wall_container();\r\n var $wallDebug = $nlWallSettings.wall_debug;\r\n var $existId = [];\r\n var $data = $wallPost[$postIndex];\r\n if($data != undefined) {\r\n var $id = $data.id;\r\n var $level = $data.level;\r\n var $comments = $data.comments;\r\n var $postType = nlWallHelper.get_post_type($level);\r\n $wallContainer.find('.item').each(function(){\r\n if($(this).data('id') != undefined){\r\n if($(this).data('type') == $postType){\r\n $existId.push($(this).data('id'));\r\n }\r\n }\r\n });\r\n if($wallDebug){\r\n console.log(\"Render \");\r\n console.log(\"id \"+$id);\r\n console.log(\"level \"+$level);\r\n }\r\n if ($.inArray($id, $existId) == -1) {\r\n if ($level == 0) {\r\n nlWall.post($existId, $wallPost, $postIndex, $options, cback);\r\n }else{\r\n nlWall.thread($existId, $wallPost, $postIndex, $options, cback);\r\n }\r\n }else{\r\n nlWall.refresh($comments, 0, $options, cback);\r\n }\r\n }else{\r\n if(cback != undefined){\r\n cback();\r\n }\r\n }\r\n },\r\n post:function($postId, $wallPost, $postIndex, $options, cback){\r\n var $data = $wallPost[$postIndex];\r\n var $comments = $data.comments;\r\n var $commentsCount = $data.comments_count;\r\n var $id = $data.id;\r\n var $wallContainer = $options.wall_container();\r\n var $postElement = [];\r\n var $wallDebug = $nlWallSettings.wall_debug;\r\n $wallContainer.find('.item').each(function(){\r\n if($(this).data('id') != undefined){\r\n if($(this).data('type') == 'post') {\r\n $postElement.push($(this));\r\n }\r\n }\r\n });\r\n if($postId.length == 0){\r\n if($wallDebug){console.log(\"level 0 html 0 \"+$commentsCount);}\r\n $options.wall_container().html(nlWallHtml.post($data)).promise().done(function(){\r\n nlWall.refresh($comments, 0, $options, function(){\r\n nlWall.refresh($wallPost, ($postIndex+1), $options, cback);\r\n });\r\n });\r\n }else\r\n if($postId.length == 1){\r\n if($id > $postId[0]){\r\n if($wallDebug){console.log(\"level 0 prepend 1 \"+$commentsCount);}\r\n $options.wall_container().prepend(nlWallHtml.post($data)).ready(function(){\r\n nlWall.refresh($comments, 0, $options, function() {\r\n nlWall.refresh($wallPost, ($postIndex + 1), $options, cback);\r\n });\r\n });\r\n }else{\r\n if($wallDebug){console.log(\"level 0 append 1 \"+$commentsCount);}\r\n $options.wall_container().append(nlWallHtml.post($data)).ready(function(){\r\n nlWall.refresh($comments, 0, $options, function() {\r\n nlWall.refresh($wallPost, ($postIndex + 1), $options, cback);\r\n });\r\n });\r\n }\r\n }else\r\n if($postId.length > 1){\r\n if($postId[$postId.length - 1] > $id){\r\n if($wallDebug){console.log(\"level 0 append >1 \"+$commentsCount);}\r\n $options.wall_container().append(nlWallHtml.post($data)).ready(function(){\r\n nlWall.refresh($comments, 0, $options, function() {\r\n nlWall.refresh($wallPost, ($postIndex + 1), $options, cback);\r\n });\r\n });\r\n }else\r\n if($postId[0] < $id){\r\n if($wallDebug){console.log(\"level 0 prepend >1 \"+$commentsCount);}\r\n $options.wall_container().prepend(nlWallHtml.post($data)).ready(function(){\r\n nlWall.refresh($comments, 0, $options, function() {\r\n nlWall.refresh($wallPost, ($postIndex + 1), $options, cback);\r\n });\r\n });\r\n }else{\r\n if($wallDebug){console.log(\"level 0 after >1 \"+$commentsCount);}\r\n $.each($postId, function($index){\r\n if($postId[$index+1] != undefined){\r\n if($postId[$index] > $id && $id > $postId[$index+1]){\r\n $postElement[$index].after(nlWallHtml.post($data)).ready(function(){\r\n nlWall.refresh($comments, 0, $options, function() {\r\n nlWall.refresh($wallPost, ($postIndex + 1), $options, cback);\r\n });\r\n return false;\r\n });\r\n }\r\n }\r\n });\r\n }\r\n }\r\n },\r\n thread:function($postId, $wallPost, $postIndex, $options, cback){\r\n var $data = $wallPost[$postIndex];\r\n var $id = $data.id;\r\n var $parentId = $data.parent_id;\r\n var $dataComments = $data.comments;\r\n var $level = $data.level;\r\n var $postLength = $wallPost.length;\r\n var $wallContainer = $options.wall_container();\r\n var $wallDebug = $nlWallSettings.wall_debug;\r\n var $post = $wallContainer.find('.item[data-id=\"'+$parentId+'\"]');\r\n var $href = $wallContainer.find('.open-thread[data-id=\"'+$parentId+'\"]');\r\n var $comments = $wallContainer.find('.comments[data-id=\"'+$parentId+'\"] ul:first');\r\n var $postType = nlWallHelper.get_post_type($level);\r\n var $items = $comments.find('> li.item');\r\n var $showing = parseInt(nlWallHelper.get_visibles_in($postType, $items));\r\n $comments.append(nlWallHtml.thread($data)).ready(function(){\r\n $wallContainer = $options.wall_container();\r\n $post = $wallContainer.find('.item[data-id=\"'+$parentId+'\"]');\r\n $href = $wallContainer.find('.open-thread[data-id=\"'+$parentId+'\"]');\r\n $comments = $wallContainer.find('.comments[data-id=\"'+$parentId+'\"] ul:first');\r\n $items = $comments.find('> li.item');\r\n $showing = parseInt(nlWallHelper.get_visibles_in($postType, $items));\r\n if($wallDebug){\r\n console.log(\"Subrender \");\r\n console.log(\"id \"+$id);\r\n console.log(\"level \"+$level);\r\n console.log('show '+$showing);\r\n console.log('length '+$postLength);\r\n }\r\n if($showing < $postLength){\r\n $href.show();\r\n }else{\r\n $href.hide();\r\n }\r\n nlWall.refresh($dataComments, 0, $options, function(){\r\n nlWall.refresh($wallPost, ($postIndex+1), $options, cback);\r\n });\r\n });\r\n },\r\n clock:function($options, cback){\r\n var $wallContainer = $options.wall_container();\r\n var $postIds = [];\r\n $wallContainer.find(\".item .post-date\").each(function(){\r\n var $that = $(this);\r\n $postIds.push($that.data('id'));\r\n });\r\n nlWallHelper.set_wall_dates($postIds);\r\n nlWallHelper.wall_date(function(){\r\n if(cback != undefined){\r\n cback();\r\n }\r\n });\r\n },\r\n fade_in:function($options, cback){\r\n var $wallContainer = $options.wall_container();\r\n $wallContainer.find(\".item\").each(function(){\r\n var $item = $(this);\r\n libs.checkImageLoad($item.find('img'), function(){\r\n $item.css('display','block');\r\n });\r\n });\r\n if(cback != undefined){\r\n cback();\r\n }\r\n },\r\n load_more:function($totalFiltered, $options, cback) {\r\n var $wallDebug = $nlWallSettings.wall_debug;\r\n var $postStep = $options.post_step;\r\n var $commentStep = $options.comment_step;\r\n var $subcommentStep = $options.subcomment_step;\r\n var $wallContainer = $options.wall_container();\r\n var $wallContainerBtn = $options.wall_container_btn();\r\n if ($wallDebug) {\r\n console.log(\"load more - loaded\");\r\n }\r\n var $items = $wallContainer.find('.item');\r\n var $firstWallPostId = $wallContainer.find('.item:first').data('id');\r\n var $lastItem = $wallContainer.find('div[data-level=\"0\"]:last');\r\n var $totalPost = parseInt(nlWallHelper.get_visibles_in('post', $items));\r\n var $wallLoadMore = $options.wall_container().find('.btn-load-more-container');\r\n //Load More Down\r\n $wallLoadMore.remove();\r\n if ($totalFiltered > $totalPost) {\r\n $lastItem.after(nlWallHtml.load_more()).ready(function () {\r\n $wallLoadMore = $options.wall_container().find('.btn-load-more-container');\r\n $wallLoadMore.unbind().click(function () {\r\n nlWall.get({\r\n first_wall_post: $firstWallPostId,\r\n show: 'down',\r\n limit: $postStep,\r\n offset: $totalPost,\r\n level: 0\r\n }, $options);\r\n });\r\n });\r\n }\r\n //Load More Up\r\n $wallContainerBtn.unbind().click(function () {\r\n var $that = $(this);\r\n $that.fadeOut(\"slow\", function () {\r\n nlWall.get({\r\n first_wall_post: $firstWallPostId,\r\n show: 'up',\r\n limit: 0,\r\n offset: 0,\r\n level: 0\r\n }, $options, function () {\r\n if(!$notRun) {\r\n nlWall.init();\r\n }\r\n });\r\n });\r\n });\r\n $wallContainerBtn.fadeIn();\r\n //Load More Comments\r\n $wallContainer.find(\".open-thread\").unbind().click(function () {\r\n $(window).off('scroll');\r\n var $id = $(this).data('id');\r\n var $level = $(this).data('level');\r\n $level = ($level + 1);\r\n var $comments = $wallContainer.find('.comments[data-id=\"' + $id + '\"] ul:first > li.item');\r\n var $postType = nlWallHelper.get_post_type($level);\r\n var $totalComments = parseInt(nlWallHelper.get_visibles_in($postType, $comments));\r\n var $limit = 0;\r\n if ($postType == 'comment') {\r\n $limit = $commentStep;\r\n }\r\n if ($postType == 'sub-comment') {\r\n $limit = $subcommentStep;\r\n }\r\n nlWall.get({\r\n first_wall_post: $id,\r\n show: 'down',\r\n limit: $limit,\r\n offset: $totalComments,\r\n level: $level\r\n }, $options, function () {\r\n nlWallEvents.comments($options);\r\n });\r\n });\r\n $wallContainer.find('.open-thread').each(function ($i, $v) {\r\n var $that = $(this);\r\n var $id = $that.data('id');\r\n var $level = $(this).data('level');\r\n $level = ($level + 1);\r\n var $count = $wallContainer.find('.comments-count[data-id=\"' + $id + '\"]').data('count');\r\n var $comments = $wallContainer.find('.comments[data-id=\"' + $id + '\"] ul:first > li.item');\r\n var $postType = nlWallHelper.get_post_type($level);\r\n var $totalComments = parseInt(nlWallHelper.get_visibles_in($postType, $comments));\r\n if ($count > $totalComments) {\r\n $that.show();\r\n } else {\r\n $that.hide();\r\n }\r\n });\r\n //Reply Post\r\n $wallContainer.find(\".reply-post\").unbind().click(function () {\r\n $wallContainer.find('ul > li .reply').hide();\r\n var $that = $(this);\r\n var $id = $that.data('id');\r\n var $reply = $wallContainer.find('.reply[data-id=\"' + $id + '\"]');\r\n $reply.show();\r\n $reply.find('.reply-post textarea').focus();\r\n });\r\n //Comments Focus\r\n $wallContainer.find(\".comments-focus\").unbind().click(function () {\r\n $wallContainer.find('.comments').css('border', '0px');\r\n var $that = $(this);\r\n var $id = $that.data('id');\r\n var $focus = $options.wall_container().find('.comments[data-id=\"' + $id + '\"]');\r\n var $openThread = $options.wall_container().find('.open-thread[data-id=\"' + $id + '\"]');\r\n var $haveComments = $focus.find('.item').length > 0;\r\n if($haveComments || $openThread.is(':visible')){\r\n $focus.css('border', 'solid 5px #00000038');\r\n var $offsetTop = $wallContainer.find('.item[data-id=\"' + $id + '\"]').offset().top;\r\n $(window).animate({ scrollTop: $offsetTop });\r\n if($openThread.is(':visible')){\r\n $openThread.click();\r\n }\r\n setTimeout(function () {\r\n $wallContainer.find('.comments').css('border', '0px');\r\n }, 6000);\r\n }\r\n });\r\n //Wall Options\r\n $wallContainer.find(\".options\").unbind().click(function () {\r\n var $that = $(this);\r\n var $id = $that.data('id');\r\n var $level = $that.data('level');\r\n nlWallMenu.init($id, $level);\r\n });\r\n //Wall Likes\r\n $wallContainer.find('.add-like').unbind().click(function () {\r\n var $id = $(this).data('id');\r\n nlWall.likes($id, function ($data) {\r\n var $ele = $wallContainer.find('.add-like[data-id=\"' + $id + '\"] i');\r\n var $countEle = $wallContainer.find('.likes-count[data-id=\"' + $id + '\"]');\r\n if ($data.data.action == 'added') {\r\n $ele.removeClass('fa-heart-o').addClass('fa-heart');\r\n $countEle.html($data.data.likes_count);\r\n }\r\n if ($data.data.action == 'deleted') {\r\n $ele.effect('shake', {\r\n direction: 'left',\r\n distance: '3',\r\n times: '4'\r\n }, 400, function () {\r\n $ele.removeClass('fa-heart').addClass('fa-heart-o');\r\n $countEle.html($data.data.likes_count);\r\n });\r\n }\r\n });\r\n });\r\n //Wall Preview\r\n var $players = [];\r\n $wallContainer.find('.attach').each(function () {\r\n var $that = $(this);\r\n var $id = $that.data('id');\r\n var $type = $that.data('type');\r\n var $url = $that.data('url');\r\n var $fileType = $that.data('filetype');\r\n var $loungeKey = $that.data('loungekey');\r\n var $loungeWallKey = $that.data('loungewallkey');\r\n var $document = libs.memoryGet($fileType + $id);\r\n var $documentId = $document.id;\r\n if ($type == 'website-document' && $fileType) {\r\n libs.memorySave($fileType + $id, $.extend(libs.memoryGet($fileType + $id), {that: $that}));\r\n if ($fileType == 'video') {\r\n $players.push($id);\r\n }else{\r\n $that.unbind().click(function () {\r\n nlWallDocumentPreview.init($documentId);\r\n });\r\n }\r\n }\r\n if ($type == 'website-thumb' && $fileType == 'link') {\r\n $that.unbind().click(function () {\r\n window.open($url, '_blank', '');\r\n });\r\n }\r\n if ($type == 'website-reference' && !$fileType) {\r\n $that.unbind().click(function () {\r\n window.open('/lounge/'+$loungeKey+'/activity/notification/fromWall/loungeWall/'+$loungeWallKey, '_self', '');\r\n });\r\n }\r\n });\r\n //Wall Scroll Load More & Video Player\r\n var $scrollBinding;\r\n var $scrollLoadWallBinding;\r\n $(window).off('scroll').scroll(function () {\r\n //Load More\r\n var $loadMoreAfterPercent = 30;\r\n var $maxScrollTop = $(document).height() - $(window).height();\r\n var $actualScroll = $(window).scrollTop();\r\n var $triggerPercent = ($actualScroll * 100) / $maxScrollTop > $loadMoreAfterPercent;\r\n if ($triggerPercent && $options.wall_container().find('.btn-load-more-container').is(':visible')) {\r\n try {\r\n clearTimeout($scrollLoadWallBinding);\r\n } catch (e) {\r\n }\r\n $scrollLoadWallBinding = setTimeout(function () {\r\n $options.wall_container().find('.btn-load-more-container').click();\r\n }, 200);\r\n }\r\n //Video Player\r\n var $wH = $(window).height();\r\n var $margin = ($wH / 3);\r\n try {\r\n clearTimeout($scrollBinding);\r\n } catch (e) {\r\n }\r\n $scrollBinding = setTimeout(function () {\r\n //Video\r\n $.each($players, function ($i, $v) {\r\n var $that = $options.wall_container().find('.attach[data-id=\"' + $v + '\"]');\r\n if ($that.length > 0) {\r\n var $originalHtml = $that[0].outerHTML;\r\n var $player = libs.memoryGet('player' + $v) ? libs.memoryGet('player' + $v) : false;\r\n var $y = $that.offset().top - $(window).scrollTop();\r\n var $video = libs.memoryGet('video' + $v);\r\n if (($y + $margin) < ($wH + $margin) && ($y + $margin) > (-1 * $margin) && $that.height() > 0 && $that.width() > 0) {\r\n if(!$player) {\r\n $that.height(300);\r\n try {\r\n $player = new Artplayer({\r\n destroy: true,\r\n container: $that[0],\r\n title: $video.name,\r\n url: $video.document_preview_root + '?temporal=true',\r\n poster: $video.document_thumb_root,\r\n type: 'mp4',\r\n mutex: true,\r\n muted: true,\r\n play: false,\r\n pause: true,\r\n toggle: false,\r\n controls: [\r\n {\r\n position: 'right',\r\n html: 'Fullscreen',\r\n click: function () {\r\n nlWallDocumentPreview.init($video.id);\r\n },\r\n },\r\n ],\r\n miniProgressBar: true,\r\n loop: true,\r\n fullscreen: false,\r\n fullscreenToggle: false,\r\n fullscreenWeb: false,\r\n fullscreenWebToggle: false,\r\n fullscreenRotate: false,\r\n fullscreenRotateToggle: false,\r\n moreVideoAttr: {\r\n crossOrigin: 'anonymous',\r\n playsInline: true,\r\n 'webkit-playsinline': true,\r\n 'x5-video-player-type': 'h5',\r\n 'x5-video-player-fullscreen': false,\r\n 'x5-video-orientation': 'portraint',\r\n },\r\n whitelist: ['*']\r\n }).on('destroy', function () {\r\n $that.replaceWith($originalHtml);\r\n libs.refreshTooltips();\r\n }).on('ready', function () {\r\n if(($y + $margin) < $wH && ($y + $margin) > 0){\r\n $player.player.play = true;\r\n }else{\r\n $player.player.pause = true;\r\n }\r\n libs.refreshTooltips();\r\n });\r\n $player.mask.show = false;\r\n libs.memorySave('player' + $v, $player);\r\n } catch ($e) {\r\n\r\n }\r\n }\r\n if(($y + $margin) < $wH && ($y + $margin) > 0){\r\n $player.player.play = true;\r\n }else{\r\n $player.player.pause = true;\r\n }\r\n } else {\r\n if ($player) {\r\n try{\r\n $player.player.pause = true;\r\n }catch($e){\r\n libs.memorySave('player' + $v, false);\r\n }\r\n }\r\n }\r\n }\r\n });\r\n }, 600);\r\n });\r\n //Wall Share\r\n $wallContainer.find(\".share-with\").unbind().click(function () {\r\n var $id = $(this).data('id');\r\n var $chtml = '';\r\n var $wallShareModal = $options.wall_share_modal();\r\n var $modalInfo = $wallShareModal.find('.modal-info:first');\r\n nlWall.share_get($id, function ($data) {\r\n var $wallPost = $data.data.wall_post;\r\n if ($.inArray('facebook', $data.data.options) != -1) {\r\n $chtml += '
  • ';\r\n }\r\n if ($.inArray('twitter', $data.data.options) != -1) {\r\n $chtml += '
  • ';\r\n }\r\n if ($.inArray('pinterest', $data.data.options) != -1) {\r\n $chtml += '
  • ';\r\n }\r\n if ($.inArray('linkedin', $data.data.options) != -1) {\r\n $chtml += '
  • ';\r\n }\r\n $wallShareModal.find('.share-options:first').html($chtml).promise().done(function () {\r\n var $shareLink = encodeURIComponent($wallPost.share_link);\r\n var $url = encodeURIComponent(window.location.href);\r\n var $post = encodeURIComponent($wallPost.post);\r\n var $image = '';\r\n if (libs.isEmptyReturnNull($wallPost.documents) &&\r\n libs.isEmptyReturnNull($wallPost.documents[0]) &&\r\n libs.isEmptyReturnNull($wallPost.documents[0].document) &&\r\n libs.isEmptyReturnNull($wallPost.documents[0].document.document_thumb_root)) {\r\n $image = encodeURIComponent($wallPost.documents[0].document.document_thumb_root);\r\n }\r\n var $features = '';\r\n $(this).find('.nav-link').unbind().click(function () {\r\n var $action = $(this).data('action');\r\n nlWall.share_set($id, $options, function () {\r\n switch ($action) {\r\n case 'facebook':\r\n window.open('https://www.facebook.com/sharer/sharer.php?u=' + $shareLink, '_blank', $features);\r\n break;\r\n case 'twitter':\r\n window.open('https://twitter.com/intent/tweet?url=' + $shareLink + '&text=' + $post, '_blank', $features);\r\n break;\r\n case 'pinterest':\r\n window.open('http://www.pinterest.com/pin/create/button?url=' + $url + '&media=' + $image + '&description=' + $post, '_blank', $features);\r\n break;\r\n case 'linkedin':\r\n window.open('https://www.linkedin.com/shareArticle?mini=true&url=' + $shareLink, '_blank', $features);\r\n break;\r\n }\r\n });\r\n });\r\n });\r\n var $chtmlInfo = nlWallHtml.wall_menu_popup($wallPost, [], 'readonly');\r\n $modalInfo.html(nlWallHtml.wall_menu_preload()).promise().done(function () {\r\n libs.checkImageLoad($($chtmlInfo).find('img'), function () {\r\n $modalInfo.html($chtmlInfo).promise().done(function(){\r\n libs.refreshTooltips();\r\n });\r\n });\r\n });\r\n $wallShareModal.modal('show');\r\n });\r\n });\r\n //Wall Links\r\n $wallContainer.find('[data-link]').unbind().click(function() {\r\n var $that = $(this);\r\n var $link = $that.data('link');\r\n router.navigate($link,true);\r\n });\r\n //Wall Post\r\n nlWall.post_send($options, function () {\r\n nlWallRecognizeUrl.init({}, function () {\r\n nlWallUpdate.init({}, function () {\r\n cback();\r\n });\r\n });\r\n });\r\n //Wall Post Empty\r\n if($wallContainer.html() == ''){\r\n libs.render(\"/myDashboard\", 'nurseslounge_myDashboard', 'activity', {}, 'POST');\r\n //nlWall.isEmpty($options);\r\n }\r\n },\r\n isEmpty:function($options){\r\n var $chtml = '';\r\n var $params = {user_id:libs.memoryGet('user_id')};\r\n var $wallContainer = $options.wall_container();\r\n nurseslounge_myDashboard_myProfile.task_list_request($params, function($data){\r\n var $taskList = $data && $data.data && $data.data.task_list;\r\n $taskList = $taskList.filter(function($v,$i) {\r\n return !$v['status'];\r\n });\r\n $taskList = $taskList.map(function($v,$i) {\r\n return $v['id'];\r\n });\r\n $chtml = '' +\r\n '
    ' +\r\n '
    ' +\r\n '
    ' +\r\n '
    ' +\r\n ' No posts to your bulletin board yet. Check back soon!' +\r\n '
    ' +\r\n '
    ' +\r\n ' Bulletin boards block out unnecessary noise and help deliver relevant career content. As jobs, hiring incentives, events, and other posts arrive we\\'ll share them on your bulletin board.' +\r\n '
    ' +\r\n '
    ' +\r\n ' If you want a more expansive scope of content here are some things you can do.' +\r\n '
    ' +\r\n '
    ' +\r\n '
      ' +\r\n '
    • ' +\r\n ' Follow Lounges: We\\'ll prioritize their posts on your bulletin board.' +\r\n '
    • ';\r\n if($.inArray(1, $taskList) > -1){ //Complete My Profile\r\n $chtml +=\r\n '
    • ' +\r\n ' Complete Profile: Your profile is private. The more complete your profile is the more accurate and relevant posts become on your bulletin board.' +\r\n '
    • ';\r\n }\r\n $chtml +=\r\n '
    • ' +\r\n ' Invite Someone: Help us grow. As more nurses create dashboards organizations become more encouraged to participate.' +\r\n '
    • ' +\r\n '
    ' +\r\n '
    ' +\r\n '
    ' +\r\n '
    ' +\r\n '
    ';\r\n $wallContainer.html($chtml).promise().done(function(){\r\n var $completeProfile = $wallContainer.find('.complete-profile');\r\n var $inviteSomeone = $wallContainer.find('.invite-someone');\r\n $completeProfile.unbind().click(function(){\r\n nurseslounge_myDashboard_myProfile.user_profile_fill($params, false);\r\n });\r\n $inviteSomeone.unbind().click(function(){\r\n nurseslounge_myDashboard_myProfile.invite_colleagues_modal();\r\n });\r\n });\r\n });\r\n },\r\n likes:function($id, cback){\r\n var $wallUrlLikes = $nlWallSettings.wall_url_likes;\r\n var $wallDebug = $nlWallSettings.wall_debug;\r\n var $withParams = $.extend({}, nlWallHelper.get_with_params(), {wall_id:$id});\r\n $.ajax({\r\n url:$wallUrlLikes,\r\n method: \"POST\",\r\n cache:false,\r\n dataType: \"json\",\r\n data:$withParams,\r\n success: function ($data) {\r\n libs.expire($data);\r\n if($data.status == 'success'){\r\n if($wallDebug){console.log($withParams);console.log($wallUrlLikes);console.log($data);}\r\n cback($data);\r\n }\r\n }\r\n });\r\n },\r\n share_get:function($id, cback){\r\n var $wallUrlShareGet = $nlWallSettings.wall_url_share_get;\r\n var $wallDebug = $nlWallSettings.wall_debug;\r\n var $withParams = $.extend({}, nlWallHelper.get_with_params(), {id:$id});\r\n $.ajax({\r\n url: $wallUrlShareGet,\r\n method: \"POST\",\r\n cache:false,\r\n dataType: \"json\",\r\n data:$withParams,\r\n success: function ($data) {\r\n libs.expire($data);\r\n if($data.status == 'success'){\r\n if($wallDebug){console.log($withParams);console.log($wallUrlShareGet);console.log($data);}\r\n cback($data);\r\n }\r\n }\r\n });\r\n },\r\n share_set:function($id, $options, cback){\r\n var $wallUrlShareSet = $nlWallSettings.wall_url_share_set;\r\n var $wallDebug = $nlWallSettings.wall_debug;\r\n var $withParams = $.extend({}, nlWallHelper.get_with_params(), {id:$id});\r\n $.ajax({\r\n url:$wallUrlShareSet,\r\n method: \"POST\",\r\n cache:false,\r\n dataType: \"json\",\r\n data:$withParams,\r\n success: function ($data) {\r\n libs.expire($data);\r\n if($wallDebug){console.log($withParams);console.log($wallUrlShareSet);console.log($data);}\r\n if($data.status == 'success'){\r\n cback($data);\r\n }\r\n if($data.status == 'error'){\r\n $options.wall_share_modal().modal('hide');\r\n }\r\n }\r\n });\r\n },\r\n post_send:function($options, cback){\r\n var $wallSendBtn = $options.wall_send_btn();\r\n libs.memorySave('prevent_load_post_binding', 0);\r\n $wallSendBtn.unbind().click(function(){\r\n var $that = $(this);\r\n var $id = $that.data('id');\r\n var $toUserId = $that.data('touserid');\r\n var $level = $that.data('level');\r\n var $post = $options.wall_textarea().val();\r\n var $urls = [];\r\n var $documents = [];\r\n $options.wall_attach_preview().find('.attach').each(function () {\r\n var $that = $(this);\r\n if ($that.data('type') == 'website-thumb') {\r\n $urls.push($that.data('url'));\r\n }\r\n if ($that.data('type') == 'website-document') {\r\n $documents.push($that.data('id'));\r\n }\r\n });\r\n if($post != '') {\r\n nlWall.set($toUserId, $post, $id, $urls, $documents, function ($data) {\r\n $options.wall_textarea().val('');\r\n $options.wall_attach_preview().html('');\r\n var $wallContainer = $options.wall_container();\r\n $level = ($level+1);\r\n var $postType = nlWallHelper.get_post_type($level);\r\n var $totalComments = 0;\r\n var $parentId = $data.data.parent_id;\r\n var $commentsTotal = $data.data.total;\r\n var $commentsCountEle = $wallContainer.find('.comments-count[data-id=\"'+$id+'\"]');\r\n $commentsCountEle.html($commentsTotal);\r\n $commentsCountEle.attr('data-count', $commentsTotal);\r\n var $comments = $wallContainer.find('.comments[data-id=\"'+$id+'\"] ul:first > li.item');\r\n $totalComments = parseInt(nlWallHelper.get_visibles_in($postType, $comments));\r\n nlWall.get({\r\n first_wall_post:$parentId == 0 ? 0 : $id,\r\n show:$parentId == 0 ? 'up' : 'down',\r\n limit:0,\r\n offset:$parentId == 0 ? 0 : $totalComments,\r\n level:$parentId == 0 ? 0 : $level\r\n }, $options, function(){\r\n nlWallEvents.comments($options);\r\n });\r\n });\r\n }else{\r\n alert(\"Please write something\");\r\n }\r\n });\r\n if(cback != undefined){\r\n cback();\r\n }\r\n },\r\n set:function($toUserId, $post, $parentId, $urls, $documents, cback){\r\n var $wallUrlSet = $nlWallSettings.wall_url_set;\r\n var $wallDebug = $nlWallSettings.wall_debug;\r\n var $withParams = $.extend({}, nlWallHelper.get_with_params(), {to_user_id:$toUserId, post:$post, parent_id:$parentId, urls: $urls, documents:$documents});\r\n $.ajax({\r\n url: $wallUrlSet,\r\n method: \"POST\",\r\n cache:false,\r\n dataType: \"json\",\r\n data:$withParams,\r\n success: function ($data) {\r\n libs.expire($data);\r\n if($data.status == 'success'){\r\n if($wallDebug){console.log($withParams);console.log($wallUrlSet);console.log($data);}\r\n cback($data);\r\n }\r\n }\r\n });\r\n }\r\n };\r\n\r\n //nlWallRecognizeUrl\r\n var $nlWallRecognizeUrlDefaults = {\r\n recognize_url_url:\"/myDashboard/activity/wallRecognize/get\",\r\n };\r\n if($nlWallRecognizeUrlOptions != undefined){\r\n $nlWallRecognizeUrlSettings = $.extend({}, $nlWallRecognizeUrlDefaults, $nlWallRecognizeUrlOptions);\r\n }else{\r\n $nlWallRecognizeUrlSettings = $.extend({}, $nlWallRecognizeUrlDefaults);\r\n }\r\n $nlWallRecognizeUrlOriginal = $nlWallRecognizeUrlDefaults;\r\n nlWallRecognizeUrl = {\r\n regex:function(){\r\n return {\r\n pattern:'(http(s?):\\\\/\\\\/)(w{3}\\\\.)?([^: \\\\/\\\\n]+).([a-z]{2,63})([^\\\\s]{1,})?',\r\n flags:'gi'\r\n };\r\n },\r\n init:function($options, cback){\r\n $options = $options == undefined ? {} : $options;\r\n $options = $.extend({}, {\r\n wall_textarea: function(){\r\n return $(\"#nurseslounge-home-activity .nurseslounge-home-activity-left\").find('.post-text[data-id=\"0\"]');\r\n },\r\n recognize_url_preload_target: function(){\r\n return $(\"#nurseslounge-home-activity .nurseslounge-home-activity-left\").find('.preview[data-id=\"0\"]');\r\n },\r\n recognize_url_target: function(){\r\n return $(\"#nurseslounge-home-activity .nurseslounge-home-activity-left\").find('.preview[data-id=\"0\"]');\r\n },\r\n on_key_press_callback: false\r\n }, $options);\r\n var $regex = this.regex();\r\n var $url = new RegExp($regex.pattern, $regex.flags);\r\n var $searchGlobal = [];\r\n var $searchBinding;\r\n var $skipFromSearchGlobal = [];\r\n var $wallTextArea = $options.wall_textarea();\r\n var $onKeyPressCallback = $options.on_key_press_callback;\r\n var $recognizeUrlPreloadTarget = $options.recognize_url_preload_target();\r\n var $recognizeUrlPreloadHtml = nlWallHtml.recognize_preload();\r\n var $recognizeUrlTarget = $options.recognize_url_target();\r\n $wallTextArea.unbind().on('keypress keyup keydown blur', function(){\r\n if($onKeyPressCallback){\r\n $onKeyPressCallback();\r\n }\r\n libs.memorySave('prevent_load_post_binding', 1);\r\n var $text = $(this).val();\r\n var $matches = $text.match($url);\r\n var $search = false;\r\n try {\r\n clearTimeout($searchBinding);\r\n }catch (e) {\r\n\r\n }\r\n if($text == ''){\r\n $searchGlobal = [];\r\n $skipFromSearchGlobal = [];\r\n }\r\n $searchBinding = setTimeout(function(){\r\n if($matches) {\r\n $matches = $matches.filter(function($el){\r\n return !$skipFromSearchGlobal.includes($el);\r\n });\r\n $.each($matches, function ($i, $v) {\r\n if ($.inArray($v, $searchGlobal) == -1) {\r\n $search = true;\r\n return false;\r\n }\r\n });\r\n }\r\n if ($search) {\r\n if(libs.memoryGet('prevent_load_post_binding')){\r\n $recognizeUrlPreloadTarget.html($recognizeUrlPreloadHtml);\r\n }\r\n $searchGlobal = $matches;\r\n nlWallRecognizeUrl.get($searchGlobal, function($data){\r\n $recognizeUrlTarget.html(nlWallHtml.recognize_url($data)).promise().done(function(){\r\n $recognizeUrlTarget.find(\".cancel\").unbind().click(function(){\r\n var $websiteLink = $(this).parents('.website-link:first');\r\n var $type = $websiteLink.data('type');\r\n var $url = $websiteLink.data('url');\r\n if($type == 'website-thumb'){\r\n $websiteLink.remove();\r\n if ($.inArray($url, $searchGlobal) >= 0) {\r\n $skipFromSearchGlobal.push($url);\r\n }\r\n }\r\n });\r\n libs.refreshTooltips();\r\n });\r\n });\r\n }\r\n }, 800);\r\n });\r\n $recognizeUrlTarget.find(\".cancel\").unbind().click(function(){\r\n var $websiteLink = $(this).parents('.website-link:first');\r\n var $type = $websiteLink.data('type');\r\n var $url = $websiteLink.data('url');\r\n if($type == 'website-thumb'){\r\n $websiteLink.remove();\r\n if ($.inArray($url, $searchGlobal) >= 0) {\r\n $skipFromSearchGlobal.push($url);\r\n }\r\n }\r\n });\r\n if(cback != undefined){\r\n cback();\r\n }\r\n },\r\n get:function($urls, cback){\r\n var $recognizeUrlUrl = $nlWallRecognizeUrlSettings.recognize_url_url;\r\n var $wallDebug = $nlWallSettings.wall_debug;\r\n var $withParams = $.extend({}, nlWallHelper.get_with_params(), {urls:$urls});\r\n $.ajax({\r\n url:$recognizeUrlUrl,\r\n method: \"POST\",\r\n cache:false,\r\n dataType: \"json\",\r\n data:$withParams,\r\n success: function ($data) {\r\n libs.expire($data);\r\n if($wallDebug){console.log($withParams);console.log($recognizeUrlUrl);console.log($data);}\r\n if($data.status == 'success' && libs.memoryGet('prevent_load_post_binding')){\r\n cback($data);\r\n }\r\n }\r\n });\r\n },\r\n };\r\n\r\n //nlWallUpdate\r\n var $nlWallUpdateDefaults = {\r\n wall_update_modal:function(){\r\n return $(\"#nurseslounge-home-activity-wall-update-modal\");\r\n },\r\n wall_update_menu:\"/myDashboard/activity/wallUpdateMenu/get\",\r\n wall_update_analyze:\"/myDashboard/activity/wallUpdateAnalyze/get\",\r\n wall_update_save:\"/myDashboard/activity/wallUpdateMenu/set\",\r\n };\r\n if($nlWallUpdateOptions != undefined){\r\n $nlWallUpdateSettings = $.extend({}, $nlWallUpdateDefaults, $nlWallUpdateOptions);\r\n }else{\r\n $nlWallUpdateSettings = $.extend({}, $nlWallUpdateDefaults);\r\n }\r\n $nlWallUpdateOriginal = $nlWallUpdateDefaults;\r\n nlWallUpdate = {\r\n init:function($options, cback){\r\n $options = $options == undefined ? {} : $options;\r\n $options = $.extend({}, {\r\n wall_update_button:function(){\r\n return $(\"#nurseslounge-home-activity .nurseslounge-home-activity-left\").find('.upload[data-id=\"0\"]');\r\n },\r\n wall_update_preload_target: function(){\r\n return $(\"#nurseslounge-home-activity .nurseslounge-home-activity-left\").find('.preview[data-id=\"0\"]');\r\n },\r\n wall_update_target: function(){\r\n return $(\"#nurseslounge-home-activity .nurseslounge-home-activity-left\").find('.preview[data-id=\"0\"]');\r\n },\r\n wall_update_text_area:function(){\r\n return $(\"#nurseslounge-home-activity .nurseslounge-home-activity-left\").find('.post-text[data-id=\"0\"]');\r\n },\r\n on_close_modal_callback:false,\r\n on_end_callback:false,\r\n get_data_callback:false,\r\n wall_update_skip:[]\r\n }, $options);\r\n var $wallUpdateButton = $options.wall_update_button;\r\n var $modal = $nlWallUpdateSettings.wall_update_modal();\r\n var $modalContainer = $modal.find('.container:first');\r\n var $modalOptions = $modal.find('.options:first');\r\n var $onCloseModalCallback = $options.on_close_modal_callback;\r\n if($wallUpdateButton){\r\n $wallUpdateButton().unbind().click(function(){\r\n nlWallUpdate.container($options);\r\n });\r\n }else{\r\n nlWallUpdate.container($options);\r\n }\r\n $modal.unbind().on('hidden.bs.modal', function () {\r\n Webcam.reset();\r\n $modalContainer.html('');\r\n $modalOptions.html('');\r\n if($onCloseModalCallback){\r\n $onCloseModalCallback();\r\n }\r\n });\r\n if(cback != undefined){\r\n cback();\r\n }\r\n },\r\n container:function($options){\r\n nlWallUpdate.popup($options, function($data){\r\n nlWallUpdate.fill($data, $options);\r\n });\r\n },\r\n popup:function($options, cback){\r\n var $modal = $nlWallUpdateSettings.wall_update_modal();\r\n var $modalContainer = $modal.find('.container:first');\r\n var $modalOptions = $modal.find('.options:first');\r\n nlWallUpdate.menu($options, function($data){\r\n var $optionsChtml = '';\r\n $.each($data.data.options, function($i, $v){\r\n $optionsChtml +='' +\r\n '
  • ' +\r\n ' ' +\r\n ' \"'+$v+'\"' + $v +\r\n ' ' +\r\n '
  • ';\r\n });\r\n $modalContainer.html('').promise().done(function(){\r\n $modalOptions.html($optionsChtml).promise().done(function(){\r\n $(this).find('.action').unbind().click(function(){\r\n var $action = $(this).data('action');\r\n if($action == 'album'){\r\n nlWallAlbum.open({\r\n on_close_modal:function(){\r\n var $albumModal = $nlWallAlbumSettings.album_modal();\r\n $albumModal.modal('hide');\r\n var $updateModal = $nlWallUpdateSettings.wall_update_modal();\r\n $updateModal.modal('show');\r\n },\r\n on_end_callback:function(){\r\n var $albumModal = $nlWallAlbumSettings.album_modal();\r\n $albumModal.unbind();\r\n $albumModal.modal('hide');\r\n $albumModal.css('display', 'none');\r\n $(\"body\").removeClass('modal-open');\r\n $(\".modal-backdrop\").remove();\r\n },\r\n on_start_callback:function(){\r\n var $albumModal = $nlWallAlbumSettings.album_modal();\r\n $albumModal.modal('show');\r\n var $updateModal = $nlWallUpdateSettings.wall_update_modal();\r\n $updateModal.unbind();\r\n $updateModal.modal('hide');\r\n },\r\n album_allow_tabs : {\r\n 'profile_webcam_image':true,\r\n 'profile_image':true,\r\n 'profile_document':true,\r\n 'profile_video':true,\r\n 'profile_article':true\r\n },\r\n album_step:11,\r\n album_allow_add:true,\r\n album_allow_select:true\r\n }, function($document){\r\n nlWallUpdate.fill($document, $options);\r\n });\r\n }else{\r\n nlWallUpdate.preview($action, $options, function($data){\r\n cback($data);\r\n });\r\n }\r\n });\r\n libs.checkImageLoad($($optionsChtml).find('img'), function(){\r\n $modal.modal('show');\r\n });\r\n });\r\n });\r\n });\r\n },\r\n menu:function($options, cback){\r\n var $wallUpdateMenu = $nlWallUpdateSettings.wall_update_menu;\r\n var $wallDebug = $nlWallSettings.wall_debug;\r\n var $wallUpdateSkip = $options.wall_update_skip;\r\n var $withParams = $.extend({}, nlWallHelper.get_with_params(), {skip:$wallUpdateSkip});\r\n $.ajax({\r\n url: $wallUpdateMenu,\r\n method: \"POST\",\r\n cache:false,\r\n dataType: \"json\",\r\n data:$withParams,\r\n success: function ($data) {\r\n libs.expire($data);\r\n if($wallDebug){console.log($withParams);console.log($wallUpdateMenu);console.log($data);}\r\n if($data.status == 'success'){\r\n cback($data);\r\n }\r\n }\r\n });\r\n },\r\n preview:function($action, $options, cback){\r\n var $modal = $nlWallUpdateSettings.wall_update_modal();\r\n var $modalContainer = $modal.find('.container:first');\r\n var $modalOptions = $modal.find('.options:first');\r\n var $chtml = nlWallHtml.update_container($action);\r\n $modalContainer.html($chtml).promise().done(function(){\r\n var $target = $(this);\r\n var $imageContainer = $target.find('.image-container:first');\r\n var $takePicture = $target.find(\".take-camera-picture:first\");\r\n var $savePicture = $target.find(\".save-camera-picture:first\");\r\n var $back = $target.find(\".back:first\");\r\n if($action == 'webcam_image'){\r\n $modalOptions.html('').promise().done(function(){\r\n Webcam.reset();\r\n Webcam.attach($imageContainer[0]);\r\n $takePicture.unbind().click(function(){\r\n Webcam.snap( function($imageBase64) {\r\n $imageContainer.html('').html('').promise().done(function(){\r\n $takePicture.html('Reset').unbind().click(function(){\r\n nlWallUpdate.preview('webcam_image', $options,function(){\r\n cback();\r\n });\r\n });\r\n $savePicture.unbind().click(function(){\r\n $target.find('.camera-buttons').hide();\r\n nlWallUpdate.update($action, $imageBase64, $options, function($data){\r\n cback($data);\r\n });\r\n }).addClass('active');\r\n });\r\n });\r\n });\r\n });\r\n $back.unbind().click(function(){\r\n nlWallUpdate.popup($options, cback);\r\n });\r\n }else{\r\n $(this).find('input[type=\"file\"]').unbind().change(function(){\r\n var $fileInput = $(this);\r\n nlWallUpdate.update($action, $fileInput, $options, cback);\r\n }).click();\r\n }\r\n });\r\n },\r\n update:function($action, $fileInput, $options, cback){\r\n var $withParams = nlWallHelper.get_with_params();\r\n var $wallUpdatePreloadHtml = nlWallHtml.update_preload();\r\n var $modal = $nlWallUpdateSettings.wall_update_modal();\r\n var $modalContainer = $modal.find('.container:first');\r\n var $modalOptions = $modal.find('.options:first');\r\n var $chtml = $modalContainer.html();\r\n $modalOptions.html('');\r\n $modalContainer.html($wallUpdatePreloadHtml).promise().done(function(){\r\n var $formData = new FormData();\r\n $formData.append('_token', $('meta[name=\"csrf-token\"]').attr('content'));\r\n if($action == 'webcam_image'){\r\n Webcam.reset();\r\n $formData.append('file', libs.b64toBlob($fileInput));\r\n }else{\r\n $formData.append('file', $fileInput[0].files[0]);\r\n }\r\n $formData.append('file_type', $action);\r\n $formData.append('user_id', $withParams.user_id);\r\n $formData.append('key', $withParams.key);\r\n nlWallUpdate.analyze($formData, function($data){\r\n if($data.status == 'error'){\r\n cback($data);\r\n return false;\r\n }\r\n $formData.append('thumb_file', libs.b64toBlob($data.data.features.thumb));\r\n $formData.append('original_name', $data.data.features.original_name);\r\n $modalContainer.html($chtml).promise().done(function(){\r\n var $target = $(this);\r\n var $imageContainer = $target.find('.image-container');\r\n $imageContainer.width($target.width());\r\n $imageContainer.height(300);\r\n if(\r\n $action == 'image' && $data.data.features.mime_type == 'image/png' ||\r\n $action == 'image' && $data.data.features.mime_type == 'image/jpg' ||\r\n $action == 'image' && $data.data.features.mime_type == 'image/jpeg' ||\r\n $action == 'image' && $data.data.features.mime_type == 'image/gif'\r\n ) {\r\n $imageContainer.html('');\r\n }\r\n if(\r\n $action == 'document' && $data.data.features.mime_type == 'application/pdf' ||\r\n $action == 'document' && $data.data.features.mime_type == 'application/vnd.openxmlformats-officedocument.wordprocessingml.document' ||\r\n $action == 'document' && $data.data.features.mime_type == 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet' ||\r\n $action == 'document' && $data.data.features.mime_type == 'application/vnd.openxmlformats-officedocument.presentationml.presentation' ||\r\n $action == 'document' && $data.data.features.mime_type == 'application/CDFV2' ||\r\n $action == 'document' && $data.data.features.mime_type == 'text/csv' ||\r\n $action == 'document' && $data.data.features.mime_type == 'application/vnd.ms-excel' ||\r\n $action == 'document' && $data.data.features.mime_type == 'application/msword' ||\r\n $action == 'document' && $data.data.features.mime_type == 'text/plain'\r\n ) {\r\n if(PDFObject.supportsPDFs){\r\n PDFObject.embed($data.data.features.preview, $imageContainer, {\r\n height: \"400px\",\r\n pdfOpenParams: {\r\n view:'FitV',\r\n scrollbars: '0',\r\n toolbar: '0',\r\n statusbar: '0',\r\n navpanes: '0',\r\n page:'1'\r\n }\r\n });\r\n } else {\r\n $imageContainer.html('');\r\n }\r\n }\r\n if(\r\n $action == 'video' && $data.data.features.mime_type == 'video/mp4' ||\r\n $action == 'video' && $data.data.features.mime_type == 'video/x-msvideo' ||\r\n $action == 'video' && $data.data.features.mime_type == 'video/mpeg' ||\r\n $action == 'video' && $data.data.features.mime_type == 'video/quicktime' ||\r\n $action == 'video' && $data.data.features.mime_type == 'video/x-flv' ||\r\n $action == 'video' && $data.data.features.mime_type == 'video/x-matroska' ||\r\n $action == 'video' && $data.data.features.mime_type == 'video/x-ms-asf'\r\n ) {\r\n var $player = new Artplayer({\r\n destroy:true,\r\n container: $imageContainer[0],\r\n title: $data.data.features.original_name,\r\n url: $data.data.features.preview + '?temporal=true',\r\n poster: $data.data.features.thumb,\r\n autoplay: true,\r\n type: 'mp4',\r\n mutex: true,\r\n muted: false,\r\n play: true,\r\n pause: false,\r\n toggle: false,\r\n miniProgressBar: true,\r\n loop: true,\r\n fullscreen: false,\r\n fullscreenToggle: false,\r\n fullscreenWeb: false,\r\n fullscreenWebToggle: false,\r\n fullscreenRotate: false,\r\n fullscreenRotateToggle: false,\r\n moreVideoAttr: {\r\n crossOrigin: 'anonymous',\r\n playsInline: true,\r\n 'webkit-playsinline': true,\r\n 'x5-video-player-type': 'h5',\r\n 'x5-video-player-fullscreen': false,\r\n 'x5-video-orientation': 'portraint',\r\n },\r\n whitelist:['*']\r\n }).on('ready', function () {\r\n $player.player.pause = true;\r\n $player.player.play = true;\r\n });\r\n $player.mask.show = false;\r\n }\r\n $modalOptions.html('').html(nlWallHtml.update_options()).promise().done(function(){\r\n var $fileType = $action;\r\n $modalOptions.find('.action').unbind().click(function(){\r\n var $action = $(this).data('action');\r\n if($player != undefined){\r\n $player.player.pause = true;\r\n $player.destroy();\r\n }\r\n $modalOptions.html('');\r\n $modalContainer.html($wallUpdatePreloadHtml).promise().done(function(){\r\n switch($action){\r\n case 'save':\r\n if($fileInput != ''){\r\n if($fileType == 'image' || $fileType == 'webcam_image' || $fileType == 'document'){\r\n $formData.append('preview_file', libs.b64toBlob($data.data.features.preview));\r\n }\r\n if($fileType == 'video'){\r\n $formData.append('preview_file', $data.data.features.preview);\r\n $formData.append('preview_root', $data.data.features.preview_root);\r\n }\r\n $formData.append('action', $action);\r\n $formData.append('file_type', $fileType);\r\n var $wallUpdatePreloadTarget = $nlWallUpdateSettings.wall_update_preload_target;\r\n if($wallUpdatePreloadTarget){\r\n $wallUpdatePreloadTarget().html(nlWallHtml.update_preload()).promise().done(function(){\r\n nlWallUpdate.save($formData, function($data){\r\n $data = $.extend($data, {action:$fileType});\r\n cback($data);\r\n });\r\n });\r\n }else{\r\n nlWallUpdate.save($formData, function($data){\r\n $data = $.extend($data, {action:$fileType});\r\n cback($data);\r\n });\r\n }\r\n }\r\n break;\r\n case 'back':\r\n $modalContainer.html('').promise().done(function(){\r\n nlWallUpdate.popup($options, cback);\r\n });\r\n break;\r\n }\r\n });\r\n });\r\n });\r\n });\r\n });\r\n });\r\n },\r\n analyze:function($formData, cback){\r\n var $wallUpdateAnalyze = $nlWallUpdateSettings.wall_update_analyze;\r\n var $wallDebug = $nlWallSettings.wall_debug;\r\n $.ajax({\r\n type: 'POST',\r\n url: $wallUpdateAnalyze,\r\n data: $formData,\r\n cache: false,\r\n contentType: false,\r\n processData: false,\r\n success: function ($data) {\r\n libs.expire($data);\r\n if($wallDebug){console.log($formData);console.log($wallUpdateAnalyze);console.log($data);}\r\n cback($data);\r\n }\r\n });\r\n },\r\n save:function($formData, cback){\r\n var $wallUpdateSave = $nlWallUpdateSettings.wall_update_save;\r\n var $wallDebug = $nlWallSettings.wall_debug;\r\n $.ajax({\r\n type: 'POST',\r\n url: $wallUpdateSave,\r\n data: $formData,\r\n cache: false,\r\n contentType: false,\r\n processData: false,\r\n success: function ($data) {\r\n libs.expire($data);\r\n if($wallDebug){console.log($formData);console.log($wallUpdateSave);console.log($data);}\r\n if ($data.status == 'success') {\r\n cback($data);\r\n }\r\n }\r\n });\r\n },\r\n fill:function($data, $options){\r\n var $modal = $nlWallUpdateSettings.wall_update_modal();\r\n var $wallUpdateTextArea = $options.wall_update_text_area;\r\n var $onEndCallback = $options.on_end_callback;\r\n var $getDataCallback = $options.get_data_callback;\r\n var $wallUpdateTarget = $options.wall_update_target;\r\n var $albumModal = $nlWallAlbumSettings.album_modal();\r\n var $albumModalTab = $albumModal.find('.nav-pills .nav-link[data-target=\"#profile_'+$data.action+'\"]');\r\n if($data.status == 'error'){\r\n $modal.modal('hide');\r\n }else\r\n if($wallUpdateTextArea && false){\r\n var $txt = $wallUpdateTextArea().val();\r\n $wallUpdateTextArea().val($txt + '\\n' + $data.data.updated_file.name).keypress();\r\n }\r\n if($getDataCallback){\r\n $getDataCallback($data);\r\n if(!$albumModalTab.hasClass('disabled')){\r\n $albumModalTab.click();\r\n }\r\n if($onEndCallback){\r\n $onEndCallback();\r\n }else{\r\n $modal.modal('hide');\r\n }\r\n }else\r\n if(\r\n $data.action == 'image' ||\r\n $data.action == 'document' ||\r\n $data.action == 'video' ||\r\n $data.action == 'webcam_image' ||\r\n $data.action == 'article'\r\n ){\r\n var $chtml = nlWallHtml.update_wall($data.data.updated_file);\r\n libs.checkImageLoad($($chtml).find('img'), function(){\r\n $wallUpdateTarget().html($chtml).promise().done(function(){\r\n $wallUpdateTarget().find(\".cancel\").unbind().click(function(){\r\n var $websiteAttach = $(this).parents('.website-attach:first');\r\n var $type = $websiteAttach.data('type');\r\n if($type == 'website-document'){\r\n $websiteAttach.remove();\r\n }\r\n });\r\n libs.refreshTooltips();\r\n if(!$albumModalTab.hasClass('disabled')){\r\n $albumModalTab.click();\r\n }\r\n if($onEndCallback){\r\n $onEndCallback();\r\n }else{\r\n $modal.modal('hide');\r\n }\r\n });\r\n });\r\n }\r\n },\r\n };\r\n\r\n //nlWallAlbum\r\n var $nlWallAlbumDefaults = {\r\n album_modal:function(){\r\n return $(\"#nurseslounge-home-activity-wall-album-modal\");\r\n },\r\n album_view:\"/myDashboard/activity/wallAlbumView/get\",\r\n album_delete:\"/myDashboard/activity/wallAlbumView/delete\",\r\n };\r\n if($nlWallAlbumOptions != undefined){\r\n $nlWallAlbumSettings = $.extend({}, $nlWallAlbumDefaults, $nlWallAlbumOptions);\r\n }else{\r\n $nlWallAlbumSettings = $.extend({}, $nlWallAlbumDefaults);\r\n }\r\n $nlWallAlbumOriginal = $nlWallAlbumDefaults;\r\n nlWallAlbum = {\r\n open:function($options, selectedDocument){\r\n $options = $options == undefined ? {} : $options;\r\n $options = $.extend({}, {\r\n on_close_modal:false,\r\n on_end_callback:false,\r\n on_start_callback:false,\r\n album_allow_tabs : {\r\n 'profile_webcam_image':true,\r\n 'profile_image':true,\r\n 'profile_document':true,\r\n 'profile_video':true,\r\n 'profile_article':false\r\n },\r\n album_step:11,\r\n album_allow_add:true,\r\n album_allow_select:true\r\n }, $options);\r\n\r\n var $modal = $nlWallAlbumSettings.album_modal();\r\n var $onCloseModal = $options.on_close_modal;\r\n var $albumAllowTabs = $options.album_allow_tabs;\r\n var $allowTabsFiltered = $albumAllowTabs;\r\n $albumAllowTabs = {};\r\n $.each($allowTabsFiltered, function($k, $v) {var $newObj = {};$newObj[$k]=$v;if($v){$.extend($albumAllowTabs, $newObj);}});\r\n if(!$modal.is(':visible') && $onCloseModal){\r\n $modal.unbind().on('hidden.bs.modal', function () {\r\n $onCloseModal();\r\n });\r\n }\r\n $modal.find('.nav-pills .nav-link').addClass('disabled').removeClass('active');\r\n $modal.find('.album-modal-container .tab-pane .container').html('');\r\n //Events\r\n $modal.find('.nav-pills a[data-toggle=\"tab\"]').unbind().on('shown.bs.tab', function ($e) {\r\n var $selectedTab = $e.currentTarget.dataset.target.replace('#','');\r\n if($.inArray($selectedTab, Object.keys($albumAllowTabs)) > -1){\r\n nlWallAlbum.tab($selectedTab, $options, function($document){\r\n selectedDocument($document);\r\n });\r\n }\r\n });\r\n //Enable selected\r\n $.each($albumAllowTabs, function ($i, $v) {\r\n $modal.find('.nav-pills .nav-link[data-target=\"#'+$i+'\"]').removeClass('disabled');\r\n });\r\n $.each($albumAllowTabs, function($i, $v) {\r\n if($v){\r\n $modal.find('.nav-pills .nav-link[data-target=\"#'+$i+'\"]').click();\r\n return false;\r\n }\r\n });\r\n },\r\n tab:function($selectedTab, $options, selectedDocument){\r\n var $modal = $nlWallAlbumSettings.album_modal();\r\n var $onEndCallback = $options.on_end_callback;\r\n var $onStartCallback = $options.on_start_callback;\r\n var $albumStep = $options.album_step;\r\n var $modalContainer = $modal.find('.album-modal-container:first');\r\n var $loadMoreAfterPercent = 90;\r\n var $scrollBinding;\r\n var $albumLength;\r\n var $updateModal = $nlWallUpdateSettings.wall_update_modal();\r\n var $container = $updateModal.find('.container:first');\r\n var $optionsDiv = $updateModal.find('.options:first');\r\n $optionsDiv.hide();\r\n $container.html(nlWallHtml.update_preload()).promise().done(function() {\r\n nlWallAlbum.view($selectedTab, 'view', $options, function ($chtml) {\r\n $modal.find('#' + $selectedTab).html($chtml).promise().done(function () {\r\n var $modalWrapper = $modalContainer.find('#' + $selectedTab);\r\n var $preload = $modalWrapper.find('.preload');\r\n $modalWrapper.unbind().scroll(function () {\r\n var $maxScrollTop = $modalWrapper[0].scrollHeight - $modalWrapper.height();\r\n var $actualScroll = $modalWrapper.scrollTop();\r\n var $triggerPercent = ($actualScroll * 100) / $maxScrollTop > $loadMoreAfterPercent;\r\n if ($triggerPercent) {\r\n try {\r\n clearTimeout($scrollBinding);\r\n } catch (e) {\r\n }\r\n $scrollBinding = setTimeout(function () {\r\n $albumLength = $modalWrapper.find('div:first .item').length;\r\n libs.memorySave('album-offset' + $selectedTab, $albumLength);\r\n libs.memorySave('album-limit' + $selectedTab, $albumStep);\r\n nlWallAlbum.view($selectedTab, 'json', $options, function ($data) {\r\n var $chtml = nlWallHtml.album_view_html($data);\r\n libs.checkImageLoad($($chtml).find('img'), function () {\r\n $modalWrapper.find('div:first').append($chtml).ready(function () {\r\n $albumLength = $modalWrapper.find('div:first .item').length;\r\n if ($albumLength >= $data.data.documents_count) {\r\n $preload.hide();\r\n } else {\r\n $preload.show();\r\n }\r\n nlWallAlbum.events($options, function () {\r\n }, function ($document) {\r\n if ($onEndCallback) {\r\n $onEndCallback();\r\n } else {\r\n $modal.modal('hide');\r\n }\r\n selectedDocument($document);\r\n });\r\n });\r\n });\r\n });\r\n }, 1000);\r\n }\r\n });\r\n nlWallAlbum.events($options, function () {\r\n libs.checkImageLoad($($chtml).find('img'), function () {\r\n if ($onStartCallback) {\r\n $onStartCallback();\r\n } else {\r\n $modal.modal('show');\r\n }\r\n $optionsDiv.show();\r\n $container.html('');\r\n });\r\n }, function ($document) {\r\n if ($onEndCallback) {\r\n $onEndCallback();\r\n } else {\r\n $modal.modal('hide');\r\n }\r\n selectedDocument($document);\r\n });\r\n });\r\n });\r\n });\r\n },\r\n view:function($selectedTab, $only, $options, cback){\r\n var $albumStep = $options.album_step;\r\n var $albumAllowAdd = $options.album_allow_add;\r\n var $withParams = nlWallHelper.get_with_params();\r\n var $modal = $nlWallAlbumSettings.album_modal();\r\n var $modalContainer = $modal.find('.album-modal-container:first');\r\n var $modalWrapper = $modalContainer.find('#'+$selectedTab);\r\n var $albumLength;\r\n if($only == 'view'){\r\n libs.memorySave('album-offset'+$selectedTab, 0);\r\n if(!libs.memoryGet('album-limit'+$selectedTab)){\r\n libs.memorySave('album-limit'+$selectedTab, $albumStep);\r\n }\r\n }else{\r\n $albumLength = $modalWrapper.find('div:first .item').length;\r\n libs.memorySave('album-limit'+$selectedTab, $albumLength);\r\n }\r\n var $offset = libs.memoryGet('album-offset'+$selectedTab);\r\n var $limit = libs.memoryGet('album-limit'+$selectedTab);\r\n var $albumView = $nlWallAlbumSettings.album_view;\r\n var $wallDebug = $nlWallSettings.wall_debug;\r\n $withParams = $.extend({}, $withParams, {type:$selectedTab, allow_add:$albumAllowAdd, only:$only, offset:$offset, limit:$limit});\r\n $.ajax({\r\n url:$albumView,\r\n method: \"POST\",\r\n cache:false,\r\n dataType: $only == 'view' ? 'html' : 'json',\r\n data:$withParams,\r\n success: function ($data) {\r\n libs.expire($data);\r\n if($wallDebug){console.log($withParams);console.log($albumView);console.log($data);}\r\n cback($data);\r\n }\r\n });\r\n },\r\n events:function($options, cback, selectedDocument){\r\n var $modal = $nlWallAlbumSettings.album_modal();\r\n var $image = $modal.find('.img-contain img');\r\n var $addDocument = $modal.find('.btn-add-document');\r\n var $deleteDocument = $modal.find('.btn-delete');\r\n var $albumAllowSelect = $options.album_allow_select;\r\n var $holdTime;\r\n $image.unbind();\r\n if($albumAllowSelect) {\r\n $image.click(function () {\r\n var $that = $(this);\r\n var $modal = $nlWallAlbumSettings.album_modal();\r\n $modal.unbind();\r\n selectedDocument(\r\n {\r\n action: $that.data('filetype'),\r\n data: {\r\n updated_file: {\r\n id: $that.data('id'),\r\n name: $that.data('name'),\r\n document_root: $that.data('documentroot'),\r\n type: $that.data('type'),\r\n size: $that.data('size'),\r\n file_type: $that.data('filetype'),\r\n thumb_name: $that.data('thumbname'),\r\n document_thumb_root: $that.data('documentthumbroot'),\r\n thumb_type: $that.data('thumbtype'),\r\n thumb_size: $that.data('thumbsize'),\r\n preview_name: $that.data('previewname'),\r\n document_preview_root: $that.data('documentpreviewroot'),\r\n preview_type: $that.data('previewtype'),\r\n preview_size: $that.data('previewsize'),\r\n date: $that.data('date')\r\n }\r\n }\r\n }\r\n );\r\n }).on('mousedown', function() {\r\n var $that = $(this);\r\n var $id = $that.data('id');\r\n $holdTime = setTimeout(function(){\r\n nlWallDocumentPreview.init($id);\r\n }, 1000);\r\n }).on('mouseup mouseleave', function() {\r\n clearTimeout($holdTime);\r\n });\r\n }else{\r\n $image.click(function () {\r\n var $that = $(this);\r\n var $id = $that.data('id');\r\n nlWallDocumentPreview.init($id);\r\n });\r\n }\r\n $addDocument.unbind().click(function(){\r\n $modal.unbind();\r\n nlWallUpdate.init({\r\n wall_update_button:false,\r\n wall_update_preload_target:false,\r\n wall_update_target:false,\r\n wall_update_text_area:false,\r\n wall_update_skip:['album'],\r\n on_close_modal_callback:function(){\r\n var $albumModal = $nlWallAlbumSettings.album_modal();\r\n $albumModal.modal('show');\r\n },\r\n on_end_callback:false,\r\n get_data_callback:function($updatedDocument){\r\n var $tab = $updatedDocument.data.updated_file.file_type;\r\n var $modal = $nlWallAlbumSettings.album_modal();\r\n nlWallAlbum.tab('profile_'+$tab, {\r\n on_close_modal:false,\r\n on_end_callback:false,\r\n on_start_callback:function(){\r\n $modal.find('.nav-pills .nav-link[data-target=\"#'+$tab+'\"]').click();\r\n },\r\n album_allow_tabs : {\r\n 'profile_webcam_image':true,\r\n 'profile_image':true,\r\n 'profile_document':true,\r\n 'profile_video':true,\r\n 'profile_article':false\r\n },\r\n album_step:11,\r\n album_allow_add:true,\r\n album_allow_select:true\r\n }, function($document){\r\n selectedDocument($document);\r\n });\r\n }\r\n },function(){\r\n $modal.modal('hide');\r\n });\r\n });\r\n $deleteDocument.unbind().click(function($e){\r\n $e.stopPropagation();\r\n var $that = $(this);\r\n var $item = $that.parents('.item:first');\r\n var $id = $item.find('img:first').data('id');\r\n if(confirm('Delete this document!\\nThis will permanently delete the document from all the Post and Articles where it is used')){\r\n nlWallAlbum.delete($id, function(){\r\n $item.remove();\r\n });\r\n }\r\n });\r\n cback();\r\n },\r\n delete:function($id, cback){\r\n var $albumDelete = $nlWallAlbumSettings.album_delete;\r\n var $wallDebug = $nlWallSettings.wall_debug;\r\n var $withParams = $.extend({}, nlWallHelper.get_with_params(), {id:$id});\r\n $.ajax({\r\n url:$albumDelete,\r\n method: \"POST\",\r\n cache:false,\r\n dataType: \"json\",\r\n data:$withParams,\r\n success: function ($data) {\r\n libs.expire($data);\r\n if($wallDebug){console.log($withParams);console.log($albumDelete);console.log($data);}\r\n if($data.status == 'success'){\r\n cback($data);\r\n }\r\n }\r\n });\r\n },\r\n };\r\n\r\n //nlWallDocumentPreview\r\n var $nlWallDocumentPreviewDefaults = {\r\n wall_document_preview_get:\"/myDashboard/activity/wallDocument/get\",\r\n wall_document_social_share:\"/myDashboard/activity/wallDocument/socialShare\",\r\n photo_swipe_image_target:function(){\r\n return $('#nurseslounge-home-activity-wall-photoswipe-image');\r\n },\r\n photo_swipe_document_target:function(){\r\n return $('#nurseslounge-home-activity-wall-photoswipe-document');\r\n },\r\n photo_swipe_video_target:function(){\r\n return $('#nurseslounge-home-activity-wall-photoswipe-video');\r\n },\r\n photo_swipe_article_target:function(){\r\n return $('#nurseslounge-home-activity-wall-photoswipe-article');\r\n }\r\n };\r\n if($nlWallDocumentPreviewOptions != undefined){\r\n $nlWallDocumentPreviewSettings = $.extend({}, $nlWallDocumentPreviewDefaults, $nlWallDocumentPreviewOptions);\r\n }else{\r\n $nlWallDocumentPreviewSettings = $.extend({}, $nlWallDocumentPreviewDefaults);\r\n }\r\n $nlWallDocumentPreviewOriginal = $nlWallDocumentPreviewDefaults;\r\n\r\n nlWallDocumentPreview = {\r\n init:function($documentId){\r\n nlWallDocumentPreview.get($documentId, function($data){\r\n var $id = $data.data.document.id;\r\n var $type = $data.data.document.file_type;\r\n var $document = $data.data.document;\r\n libs.memorySave($type+$id, $document);\r\n nlWallDocumentPreview.popup($type, $id);\r\n });\r\n },\r\n get:function($id, cback){\r\n var $wallDocumentPreviewGet = $nlWallDocumentPreviewSettings.wall_document_preview_get;\r\n var $wallDebug = $nlWallSettings.wall_debug;\r\n var $withParams = $.extend({}, nlWallHelper.get_with_params(), {id:$id});\r\n $.ajax({\r\n url:$wallDocumentPreviewGet,\r\n method: \"POST\",\r\n cache:false,\r\n dataType: \"json\",\r\n data:$withParams,\r\n success: function ($data) {\r\n libs.expire($data);\r\n if($wallDebug){console.log($withParams);console.log($wallDocumentPreviewGet);console.log($data);}\r\n cback($data);\r\n }\r\n });\r\n },\r\n social_share:function($photoSwipe, $name, $id){\r\n var $chtml = '' +\r\n '
    ' +\r\n '
    ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n '
    '+\r\n '
    ';\r\n var $button = $photoSwipe.find('.pswp__' + $name + ':first');\r\n if($button.find('.pswp__single-tap:first').length == 0){\r\n $button.append($chtml).ready(function(){\r\n $photoSwipe.unbind('click').click(function(){\r\n $button.find('.pswp__share-modal:first').removeClass('pswp__share-modal--fade-in');\r\n $button.find('.pswp__share-modal:first').addClass('pswp__share-modal--hidden');\r\n });\r\n $button.find('.share-with').unbind().click(function(){\r\n var $action = $(this).data('action');\r\n nlWallDocumentPreview.social_share_request($id, function($data){\r\n var $document = $data.data.document;\r\n var $name = $document.name;\r\n var $thumb = $document.document_thumb_root;\r\n $thumb = encodeURIComponent($thumb);\r\n var $shareLink = $document.share_link;\r\n $shareLink = encodeURIComponent($shareLink);\r\n var $url = encodeURIComponent(window.location.href);\r\n var $features = '';\r\n switch ($action) {\r\n case 'facebook':\r\n window.open('https://www.facebook.com/sharer/sharer.php?u=' + $shareLink, '_blank', $features);\r\n break;\r\n case 'twitter':\r\n window.open('https://twitter.com/intent/tweet?url=' + $shareLink + '&text=' + $name, '_blank', $features);\r\n break;\r\n case 'pinterest':\r\n window.open('http://www.pinterest.com/pin/create/button?url=' + $url + '&media=' + $thumb + '&description=' + $name, '_blank', $features);\r\n break;\r\n case 'linkedin':\r\n window.open('https://www.linkedin.com/shareArticle?mini=true&url=' + $shareLink, '_blank', $features);\r\n break;\r\n }\r\n });\r\n });\r\n });\r\n }\r\n $button.find('.pswp__share-modal:first').removeClass('pswp__share-modal--hidden');\r\n $button.find('.pswp__share-modal:first').addClass('pswp__share-modal--fade-in');\r\n $button.unbind('click').click(function($e){\r\n $e.stopPropagation();\r\n });\r\n },\r\n social_share_request:function($id, cback){\r\n var $wallDocumentSocialShare = $nlWallDocumentPreviewSettings.wall_document_social_share;\r\n var $wallDebug = $nlWallSettings.wall_debug;\r\n var $withParams = $.extend({}, nlWallHelper.get_with_params(), {id:$id});\r\n $.ajax({\r\n url:$wallDocumentSocialShare,\r\n method: \"POST\",\r\n cache:false,\r\n dataType: \"json\",\r\n data:$withParams,\r\n success: function ($data) {\r\n libs.expire($data);\r\n if($wallDebug){console.log($withParams);console.log($wallDocumentSocialShare);console.log($data);}\r\n cback($data);\r\n }\r\n });\r\n },\r\n popup:function($type, $id, $function, cback){\r\n var $photoSwipeImage = $nlWallDocumentPreviewSettings.photo_swipe_image_target();\r\n var $photoSwipeDocument = $nlWallDocumentPreviewSettings.photo_swipe_document_target();\r\n var $photoSwipeVideo = $nlWallDocumentPreviewSettings.photo_swipe_video_target();\r\n var $photoSwipeArticle = $nlWallDocumentPreviewSettings.photo_swipe_article_target();\r\n var $data = libs.memoryGet($type+$id);\r\n var $original;\r\n var $preview;\r\n var $thumb;\r\n var $mimeType;\r\n var $name;\r\n var $documentKey;\r\n var $documentDate;\r\n var $userLongName;\r\n var $userImage;\r\n var $articleHtml;\r\n var $articleHeadline;\r\n var $articleSingleImage;\r\n var $specialty;\r\n var $degree;\r\n var $articleTags = [];\r\n var $link;\r\n var $gallery;\r\n var $expirationDate;\r\n var $categories;\r\n var $categoriesTxt = [];\r\n\r\n if(\r\n $type == 'image' ||\r\n $type == 'webcam_image' ||\r\n $type == 'document' ||\r\n $type == 'video' ||\r\n $type == 'article'\r\n ){\r\n $original = $data.document_root ? $data.document_root : null;\r\n $preview = $data.document_preview_root ? $data.document_preview_root : null;\r\n $thumb = $data.document_thumb_root ? $data.document_thumb_root : null;\r\n $mimeType = $data.type ? $data.type : null;\r\n $name = $data.name ? $data.name : null;\r\n $documentKey = $data.key ? $data.key : null;\r\n $documentDate = $data.date ? moment.utc($data.date, 'YYYY-MM-DD HH:mm:ss').local().format('MMMM, DD YYYY hh:mm A') : null;\r\n $userLongName = $data.user && $data.user.long_name ? $data.user.long_name : null;\r\n $userImage = $data.user && $data.user.profile_image_root_wall ? $data.user.profile_image_root_wall : null;\r\n $articleHtml = $data.article_features && $data.article_features.html ? $data.article_features.html : null;\r\n $articleHeadline = $data.article_features && $data.article_features.headline ? $data.article_features.headline : null;\r\n $articleSingleImage = $data.article_features && $data.article_features.image && $data.article_features.image.document_root ? $data.article_features.image.document_root : null;\r\n $degree = $data.article_features && $data.article_features.degree && $data.article_features.degree.subcategory ? $data.article_features.degree.subcategory : null;\r\n $specialty = $data.article_features && $data.article_features.specialty && $data.article_features.specialty.type ? $data.article_features.specialty.type : null;\r\n $expirationDate = $data.article_features && $data.article_features.expiration_date ? moment.utc($data.article_features.expiration_date, 'YYYY/MM/DD').format('MMMM, DD YYYY') : null;\r\n $categories = $data.article_categories ? $data.article_categories : null;\r\n\r\n if($specialty){\r\n $articleTags.push({tag:$specialty});\r\n }\r\n if($degree) {\r\n $articleTags.push({tag:$degree});\r\n }\r\n if($data.article_tags){\r\n $articleTags = $.merge($articleTags, $data.article_tags);\r\n }\r\n if($categories){\r\n for(var $i in $categories){\r\n $categoriesTxt.push($categories[$i].category.category);\r\n }\r\n }\r\n }else{\r\n $link = $data.patternUrl;\r\n }\r\n if(\r\n $type == 'image' ||\r\n $type == 'webcam_image'\r\n ){\r\n libs.getImageWH($original, function($w, $h){\r\n $gallery = new PhotoSwipe($photoSwipeImage[0], PhotoSwipeUI_Default,\r\n [\r\n {\r\n src: $original,\r\n w: $w,\r\n h: $h\r\n },\r\n ],\r\n {\r\n index: 0,\r\n clickToCloseNonZoomable: false,\r\n closeOnScroll: false,\r\n closeOnVerticalDrag:false,\r\n closeElClasses: [],\r\n history:false,\r\n shareButtons: [\r\n {\r\n id:'downloadOriginal',\r\n label:'Download Original',\r\n url:$original+'?name='+$name+'&download=true',\r\n download:true\r\n }\r\n ],\r\n socialShareEvent:function($this){\r\n nlWallDocumentPreview.social_share($photoSwipeImage, $this.name, $id);\r\n }\r\n }\r\n );\r\n $gallery.init();\r\n //var $api = $gallery.ui.getFullscreenAPI();\r\n //$api.enter();\r\n $(\"body\").css('overflowY', 'hidden');\r\n $gallery.listen('close', function() {\r\n $photoSwipeImage.find(\".pswp__zoom-wrap\").html('');\r\n $(\"body\").css('overflowY', 'scroll');\r\n if(cback != undefined){\r\n cback();\r\n }\r\n });\r\n });\r\n }\r\n if($type == 'document'){\r\n var $chtml = '' +\r\n '
    ' +\r\n '
    ' +\r\n '
    ' +\r\n '
    ';\r\n var $shareButtons;\r\n if($mimeType == 'application/pdf'){\r\n $shareButtons = [\r\n {\r\n id:'downloadOriginal',\r\n label:'Download Original',\r\n url:$original+'?name='+$name+'&download=true',\r\n download:true\r\n }\r\n ];\r\n }else{\r\n $shareButtons = [\r\n {\r\n id:'downloadPdf',\r\n label:'Download PDF',\r\n url:$preview+'?name='+$name+'&download=true',\r\n download:true\r\n },\r\n {\r\n id:'downloadOriginal',\r\n label:'Download Original',\r\n url:$original+'?name='+$name+'&download=true',\r\n download:true\r\n }\r\n ];\r\n }\r\n $gallery = new PhotoSwipe($photoSwipeDocument[0], PhotoSwipeUI_Default,\r\n [\r\n {\r\n html: $chtml\r\n }\r\n ],\r\n {\r\n index: 0,\r\n clickToCloseNonZoomable: false,\r\n closeOnScroll: false,\r\n closeOnVerticalDrag:false,\r\n closeElClasses: [],\r\n history:false,\r\n shareButtons: $shareButtons,\r\n socialShareEvent:function($this){\r\n nlWallDocumentPreview.social_share($photoSwipeDocument, $this.name, $id);\r\n }\r\n }\r\n );\r\n $gallery.init();\r\n var $container = $photoSwipeDocument.find('.preview-image-container');\r\n var $target = $container.find('.image:first');\r\n $target.width($(window).width());\r\n $target.height($(window).height());\r\n if(PDFObject.supportsPDFs){\r\n PDFObject.embed($preview, $target, {\r\n height: \"400px\",\r\n pdfOpenParams: {\r\n view:'FitV',\r\n scrollbars: '0',\r\n toolbar: '0',\r\n statusbar: '0',\r\n navpanes: '0',\r\n page:'1'\r\n }\r\n });\r\n } else {\r\n $target.html('');\r\n }\r\n var $fullscreen = false;\r\n //var $api = $gallery.ui.getFullscreenAPI();\r\n //$api.enter();\r\n var $pdfobjectOriginalH = $(window).height();\r\n var $pdfobjectFullH;\r\n $(\"body\").css('overflowY', 'hidden');\r\n $target.find('.pdfobject').height($pdfobjectOriginalH);\r\n $gallery.listen('close', function() {\r\n $container.remove();\r\n $(\"body\").css('overflowY', 'scroll');\r\n if(cback != undefined){\r\n cback();\r\n }\r\n });\r\n $gallery.listen('beforeResize', function() {\r\n if(!$fullscreen){\r\n $target.find('.pdfobject').height($(window).height());\r\n }else{\r\n $target.find('.pdfobject').height($pdfobjectOriginalH);\r\n }\r\n $fullscreen = !$fullscreen;\r\n });\r\n }\r\n if($type == 'video'){\r\n var $chtml = '' +\r\n '
    ' +\r\n '
    ' +\r\n '
    ' +\r\n '
    ';\r\n $gallery = new PhotoSwipe($photoSwipeVideo[0], PhotoSwipeUI_Default,\r\n [\r\n {\r\n html: $chtml\r\n }\r\n ],\r\n {\r\n index: 0,\r\n clickToCloseNonZoomable: false,\r\n closeOnScroll: false,\r\n closeOnVerticalDrag:false,\r\n closeElClasses: [],\r\n history:false,\r\n shareButtons: [\r\n {\r\n id:'downloadOriginal',\r\n label:'Download Original',\r\n url:$original+'?name='+$name+'&download=true',\r\n download:true\r\n }\r\n ],\r\n socialShareEvent:function($this){\r\n nlWallDocumentPreview.social_share($photoSwipeVideo, $this.name, $id);\r\n }\r\n }\r\n );\r\n $gallery.init();\r\n var $smallPlayer = libs.memoryGet('player'+$id);\r\n if($smallPlayer){\r\n $smallPlayer.player.pause = true;\r\n }\r\n var $container = $photoSwipeVideo.find('.preview-image-container');\r\n var $target = $container.find('.image:first');\r\n $target.width($(window).width());\r\n $target.height($(window).height());\r\n var $previewPlayer = new Artplayer({\r\n destroy:true,\r\n container: $target[0],\r\n title: $original,\r\n url: $preview + '?temporal=true',\r\n poster: $thumb,\r\n type: 'mp4',\r\n mutex: true,\r\n muted: false,\r\n play: false,\r\n pause: true,\r\n autoplay: true,\r\n toggle: false,\r\n miniProgressBar: true,\r\n loop: true,\r\n fullscreen: false,\r\n fullscreenToggle: false,\r\n fullscreenWeb: false,\r\n fullscreenWebToggle: false,\r\n fullscreenRotate: false,\r\n fullscreenRotateToggle: false,\r\n moreVideoAttr: {\r\n crossOrigin: 'anonymous',\r\n playsInline: true,\r\n 'webkit-playsinline': true,\r\n 'x5-video-player-type': 'h5',\r\n 'x5-video-player-fullscreen': false,\r\n 'x5-video-orientation': 'portraint',\r\n },\r\n whitelist:['*']\r\n }).on('ready', function () {\r\n $previewPlayer.player.play = true;\r\n libs.refreshTooltips();\r\n });\r\n $previewPlayer.mask.show = false;\r\n var $fullscreen = false;\r\n //var $api = $gallery.ui.getFullscreenAPI();\r\n //$api.enter();\r\n $(\"body\").css('overflowY', 'hidden');\r\n $gallery.listen('close', function() {\r\n $(\"body\").css('overflowY', 'scroll');\r\n $container.remove();\r\n $previewPlayer.player.pause = true;\r\n $previewPlayer.destroy();\r\n if($smallPlayer) {\r\n $smallPlayer.player.play = true;\r\n }\r\n if(cback != undefined){\r\n cback();\r\n }\r\n });\r\n $gallery.listen('beforeResize', function() {\r\n if($fullscreen){\r\n $target.height($(window).height());\r\n }else{\r\n $target.height($(window).height());\r\n }\r\n $fullscreen = !$fullscreen;\r\n });\r\n }\r\n if($type == 'article'){\r\n if($documentKey != null){\r\n var $winHandle = window.open(window.location.origin + '/article/' + $documentKey,'nurseslounge_myDashboard_wall_article_popup_'+$documentKey);\r\n if ($winHandle != null){\r\n return false;\r\n }\r\n }\r\n var $articleDisabled = libs.isEmptyReturnNull($function) == null ? [] : $function.article.disabled;\r\n var $shareEl = false;\r\n var $shareButtons = [];\r\n if($.inArray('download', $articleDisabled) == -1){\r\n $shareEl = true;\r\n $shareButtons.push({\r\n id:'downloadOriginal',\r\n label:'Download Original',\r\n url:$preview+'?name='+$name+'&download=true',\r\n download:true\r\n });\r\n }\r\n var $chtml = '' +\r\n '
    ' +\r\n '
    ' +\r\n '
    ' +\r\n '
    ';\r\n $gallery = new PhotoSwipe($photoSwipeArticle[0], PhotoSwipeUI_Default,\r\n [\r\n {\r\n html: $chtml\r\n }\r\n ],\r\n {\r\n index: 0,\r\n clickToCloseNonZoomable: false,\r\n closeOnScroll: false,\r\n closeOnVerticalDrag:false,\r\n closeElClasses: [],\r\n history:false,\r\n shareEl: $shareEl,\r\n shareButtons: $shareButtons\r\n }\r\n );\r\n $gallery.init();\r\n var $container = $photoSwipeArticle.find('.preview-image-container');\r\n var $target = $container.find('.image:first');\r\n var $chtml = '';\r\n $chtml += '' +\r\n '
    ' +\r\n '
    ' +\r\n '
    ' +\r\n '
    ' +\r\n '
    ' +\r\n '
    ' +\r\n '
    ' +\r\n '
    ' +\r\n '
    ' +\r\n '
    ' +\r\n '

    '+$documentDate+'

    ' +\r\n '
    ';\r\n if($expirationDate){\r\n $chtml += '' +\r\n '
    ' +\r\n '

    Expire: '+$expirationDate+'

    ' +\r\n '
    ';\r\n }\r\n $chtml += '' +\r\n '
    ' +\r\n ' \"profile\"' +\r\n '
    ' +\r\n '
    ' +\r\n '

    '+$userLongName+'

    ' +\r\n '
    ' +\r\n '
    ';\r\n if($articleSingleImage) {\r\n $chtml += '' +\r\n '
    ' +\r\n ' \"article' +\r\n '
    ';\r\n }\r\n if($categoriesTxt){\r\n $chtml += '' +\r\n 'Categories : ' + $categoriesTxt.join(', ') + '';\r\n }\r\n $chtml += '' +\r\n '
    ';\r\n if($articleHeadline) {\r\n $chtml += '' +\r\n '

    ' + $articleHeadline + '

    ';\r\n }\r\n if($articleHtml){\r\n $chtml += $articleHtml;\r\n }\r\n $chtml += '' +\r\n '
    ' +\r\n '
    ' +\r\n '
    ' +\r\n '
    ' +\r\n '
    ' +\r\n '
    ';\r\n $.each($articleTags, function($i, $v){\r\n $chtml += '' +\r\n '
    '+$v.tag+'
    ';\r\n });\r\n $chtml += '' +\r\n '
    ' +\r\n '
    ' +\r\n '
    ' +\r\n '
    ' +\r\n '
    ' +\r\n '
    ' +\r\n '
    ';\r\n libs.checkImageLoad($($chtml).find('img'), function(){\r\n $target.html($chtml).promise().done(function(){\r\n $container.css('overflowY', 'auto')\r\n .css('height', '93vh')\r\n .css('margin', '1vh 0px');\r\n //var $api = $gallery.ui.getFullscreenAPI();\r\n //$api.enter();\r\n $(\"body\").css('overflowY', 'hidden');\r\n $gallery.listen('close', function() {\r\n $container.remove();\r\n $(\"body\").css('overflowY', 'scroll');\r\n if(cback != undefined){\r\n cback();\r\n }\r\n });\r\n var $scrollMousewheelBinding;\r\n $(window).unbind('mousewheel').bind('mousewheel', function($e){\r\n try{\r\n clearTimeout($scrollMousewheelBinding);\r\n }catch ($e) {\r\n\r\n }\r\n $scrollMousewheelBinding = setTimeout(function(){\r\n if($e.originalEvent.wheelDelta / 120 > 0) {\r\n if($container.length > 0){\r\n $container.animate({\r\n scrollTop:'-=280'\r\n });\r\n }\r\n }else{\r\n if($container.length > 0){\r\n $container.animate({\r\n scrollTop:'+=280'\r\n });\r\n }\r\n }\r\n }, 100);\r\n });\r\n });\r\n });\r\n }\r\n },\r\n };\r\n\r\n //nlWallMenu\r\n var $nlWallMenuDefaults = {\r\n wall_menu_options_modal:function(){\r\n return $(\"#nurseslounge-home-activity-options-modal\");\r\n },\r\n wall_menu_get:\"/myDashboard/activity/wallOptionsMenu/get\",\r\n wall_menu_set:\"/myDashboard/activity/wallOptions/set\",\r\n };\r\n if($nlWallMenuOptions != undefined){\r\n $nlWallMenuSettings = $.extend({}, $nlWallMenuDefaults, $nlWallMenuOptions);\r\n }else{\r\n $nlWallMenuSettings = $.extend({}, $nlWallMenuDefaults);\r\n }\r\n\r\n $nlWallMenuOriginal = $nlWallMenuDefaults;\r\n\r\n nlWallMenu = {\r\n init:function($id, $level, $options){\r\n $options = $options == undefined ? {} : $options;\r\n $options = $.extend({}, {\r\n wall_container:function(){\r\n return $(\"#nurseslounge-home-activity .nurseslounge-home-activity-left .wall-container\");\r\n },\r\n }, $options);\r\n nlWallMenu.get($id, $level, function($data){\r\n var $wallPost = $data.data.wall_post;\r\n var $dataOptions = $data.data.options;\r\n var $id = $wallPost && $wallPost.id;\r\n var $modal = $nlWallMenuSettings.wall_menu_options_modal();\r\n var $modalInfo = $modal.find('.modal-info:first');\r\n var $chtml = '';\r\n if(!$modal.is(':visible')) {\r\n $modal.unbind().on('hidden.bs.modal', function () {\r\n $(\"body\").css('overflowY', 'scroll');\r\n $modal.css('overflowY', 'hidden');\r\n var $player = libs.memoryGet('previewPlayer' + $id);\r\n if($player){\r\n $player.player.pause = true;\r\n $player.destroy();\r\n libs.memorySave('previewPlayer' + $id, false);\r\n }\r\n }).on('shown.bs.modal', function () {\r\n $(\"body\").css('overflowY', 'hidden');\r\n $modal.css('overflowY', 'scroll');\r\n })\r\n }\r\n $chtml = nlWallHtml.wall_menu_popup($wallPost, $dataOptions, 'readonly');\r\n $modalInfo.html(nlWallHtml.wall_menu_preload()).promise().done(function(){\r\n libs.checkImageLoad($($chtml).find('img'), function(){\r\n $modalInfo.html($chtml).promise().done(function(){\r\n nlWallMenu.preview($wallPost, $options, function(){\r\n nlWallMenu.events($id, $level, $wallPost, $options, function(){\r\n $modal.modal('show');\r\n });\r\n });\r\n });\r\n });\r\n });\r\n });\r\n },\r\n get:function($id, $level, cback){\r\n var $wallMenuGet = $nlWallMenuSettings.wall_menu_get;\r\n var $wallDebug = $nlWallSettings.wall_debug;\r\n var $withParams = $.extend({}, nlWallHelper.get_with_params(), {id:$id, level:$level});\r\n $.ajax({\r\n url:$wallMenuGet,\r\n method: \"POST\",\r\n cache:false,\r\n dataType: \"json\",\r\n data:$withParams,\r\n success: function ($data) {\r\n libs.expire($data);\r\n if($wallDebug){console.log($withParams);console.log($wallMenuGet);console.log($data);}\r\n cback($data);\r\n }\r\n });\r\n },\r\n preview:function($wallPost, $options, cback){\r\n var $modal = $nlWallMenuSettings.wall_menu_options_modal();\r\n var $target = $modal.find('.post-media');\r\n var $document = $wallPost && $wallPost.documents[0] && $wallPost.documents[0].document ? $wallPost.documents[0].document : null;\r\n if($document){\r\n var $id = $wallPost && $wallPost.id;\r\n var $type = $document ? $document.file_type : null;\r\n var $preview = $document ? $document.document_preview_root : null;\r\n var $thumb = $document ? $document.document_thumb_root : null;\r\n var $name = $document ? $document.name : null;\r\n var $documentId = $document ? $document.id : null;\r\n if($type == 'document') {\r\n setTimeout(function() {\r\n if(PDFObject.supportsPDFs){\r\n PDFObject.embed($preview, $target, {\r\n height: \"300px\",\r\n pdfOpenParams: {\r\n view: 'FitV',\r\n scrollbars: '0',\r\n toolbar: '0',\r\n statusbar: '0',\r\n navpanes: '0',\r\n page: '1'\r\n }\r\n });\r\n } else {\r\n $target.html('');\r\n }\r\n libs.refreshTooltips();\r\n }, 1000);\r\n }\r\n if($type == 'video') {\r\n $target.height(300);\r\n setTimeout(function(){\r\n var $player = new Artplayer({\r\n destroy: true,\r\n container: $target[0],\r\n title: $name,\r\n url: $preview + '?temporal=true',\r\n poster: $thumb,\r\n type: 'mp4',\r\n mutex: true,\r\n muted: false,\r\n play: true,\r\n pause: false,\r\n autoplay: true,\r\n toggle: false,\r\n //controls: [\r\n // {\r\n // position: 'right',\r\n // html: 'Fullscreen',\r\n // click: function () {\r\n // nlWallDocumentPreview.init($documentId);\r\n // },\r\n // },\r\n //],\r\n miniProgressBar: true,\r\n loop: true,\r\n fullscreen: false,\r\n fullscreenToggle: false,\r\n fullscreenWeb: false,\r\n fullscreenWebToggle: false,\r\n fullscreenRotate: false,\r\n fullscreenRotateToggle: false,\r\n moreVideoAttr: {\r\n crossOrigin: 'anonymous',\r\n playsInline: true,\r\n 'webkit-playsinline': true,\r\n 'x5-video-player-type': 'h5',\r\n 'x5-video-player-fullscreen': false,\r\n 'x5-video-orientation': 'portraint',\r\n },\r\n whitelist:['*']\r\n }).on('ready', function () {\r\n $player.player.pause = true;\r\n $player.player.play = true;\r\n libs.refreshTooltips();\r\n });\r\n $player.mask.show = false;\r\n libs.memorySave('previewPlayer' + $id, $player);\r\n }, 1000);\r\n }\r\n }\r\n cback();\r\n },\r\n events:function($id, $level, $wallPost, $options, cback){\r\n var $modal = $nlWallMenuSettings.wall_menu_options_modal();\r\n var $menuOptions = $modal.find('.menu-options .option');\r\n var $postContent = $modal.find('.post-content');\r\n var $postMedia = $modal.find('.post-media');\r\n var $postMediaCancel = $postMedia.find('.cancel');\r\n $menuOptions.unbind().click(function(){\r\n var $that = $(this);\r\n var $action = $that.data('action');\r\n switch($action){\r\n case 'delete':\r\n nlWallMenu.action($id, $level, $action, $options, function($dataWallSet){\r\n var $wallContainer = $options.wall_container();\r\n var $deletedIds = $dataWallSet.data.delete.deleted_ids;\r\n var $parentId = $dataWallSet.data.delete.parent_wall ? $dataWallSet.data.delete.parent_wall.id : null;\r\n var $commentsCount = $dataWallSet.data.delete.parent_wall ? $dataWallSet.data.delete.parent_wall.comments_count : 0;\r\n $modal.modal('hide');\r\n $wallContainer.find(\".item\").each(function(){\r\n var $this = $(this);\r\n var $id = $this.data('id');\r\n if($.inArray($id, $deletedIds) != -1){\r\n $wallContainer.find(\".thread[data-id='\"+$id+\"']\").fadeOut().remove();\r\n $wallContainer.find(\".comments[data-id='\"+$id+\"']\").fadeOut().remove();\r\n $wallContainer.find(\".item[data-id='\"+$id+\"']\").fadeOut().remove();\r\n if($parentId){\r\n $wallContainer.find(\".comments-count[data-id='\"+$parentId+\"']\").html($commentsCount);\r\n }\r\n }\r\n });\r\n });\r\n break;\r\n case 'edit':\r\n nlWallMenu.action($id, $level, $action, $options, function($dataWallSet) {\r\n nlWallMenu.edit($id, $level, $wallPost, $dataWallSet, $options);\r\n });\r\n break;\r\n case 'save':\r\n nlWallMenu.update($id, $level, $action, function($data){\r\n var $wallPost = $data.data.save.wall_post;\r\n var $chtml = '';\r\n if($level == 0){\r\n var $comments = $options.wall_container().find(\".comments[data-id='\"+$id+\"']\")[0].outerHTML;\r\n var $thread = $options.wall_container().find(\".open-thread[data-id='\"+$id+\"']\")[0].outerHTML;\r\n $chtml = nlWallHtml.wall_menu_update_post($wallPost);\r\n $options.wall_container().find(\".item[data-id='\"+$id+\"']\").replaceWith($chtml);\r\n $options.wall_container().find(\".comments[data-id='\"+$id+\"']\").replaceWith($comments);\r\n $options.wall_container().find(\".open-thread[data-id='\"+$id+\"']\").replaceWith($thread);\r\n }else{\r\n $chtml = nlWallHtml.wall_menu_update_thread($wallPost);\r\n $options.wall_container().find(\".item[data-id='\"+$id+\"']\").replaceWith($chtml);\r\n }\r\n if(!$notRun) {\r\n nlWall.init();\r\n }\r\n $modal.modal('hide');\r\n });\r\n break;\r\n case 'attach':\r\n nlWallUpdate.init({\r\n wall_update_button:false,\r\n wall_update_preload_target: function(){\r\n return $postMedia;\r\n },\r\n wall_update_target: function(){\r\n return $postMedia;\r\n },\r\n wall_update_text_area:function(){\r\n return $postContent;\r\n },\r\n on_close_modal_callback:function(){\r\n var $albumModal = $nlWallAlbumSettings.album_modal();\r\n $albumModal.modal('hide');\r\n var $optionsModal = $nlWallMenuSettings.wall_menu_options_modal();\r\n $optionsModal.modal('show');\r\n },\r\n on_end_callback:function(){\r\n var $updateModal = $nlWallUpdateSettings.wall_update_modal();\r\n $updateModal.modal('hide');\r\n var $optionsModal = $nlWallMenuSettings.wall_menu_options_modal();\r\n $optionsModal.modal('show');\r\n },\r\n get_data_callback:false,\r\n wall_update_skip:[]\r\n },function(){\r\n $modal.modal('hide');\r\n });\r\n break;\r\n case 'back':\r\n nlWallMenu.init($id, $level, $options);\r\n break;\r\n }\r\n });\r\n nlWallRecognizeUrl.init({\r\n wall_textarea: function(){\r\n return $postContent;\r\n },\r\n recognize_url_preload_target: function(){\r\n return $postMedia;\r\n },\r\n recognize_url_target: function(){\r\n return $postMedia;\r\n }\r\n }, function(){\r\n $postMediaCancel.unbind().click(function(){\r\n var $that = $(this);\r\n $that.parents('.attach:first').remove();\r\n });\r\n });\r\n libs.refreshTooltips();\r\n $modal.find('[data-link]').unbind().click(function() {\r\n var $that = $(this);\r\n var $link = $that.data('link');\r\n $modal.modal('hide');\r\n router.navigate($link,true);\r\n });\r\n if(cback != undefined){\r\n cback();\r\n }\r\n },\r\n action:function($id, $level, $action, $options, cback){\r\n var $modal = $nlWallMenuSettings.wall_menu_options_modal();\r\n var $wallMenuSet = $nlWallMenuSettings.wall_menu_set;\r\n var $wallDebug = $nlWallSettings.wall_debug;\r\n var $withParams = $.extend({}, nlWallHelper.get_with_params(), {id:$id, level:$level, action:$action});\r\n $.ajax({\r\n url:$wallMenuSet,\r\n method: \"POST\",\r\n cache:false,\r\n dataType: \"json\",\r\n data:$withParams,\r\n success: function ($data) {\r\n libs.expire($data);\r\n if($wallDebug){console.log($withParams);console.log($wallMenuSet);console.log($data);}\r\n if($data.status == 'success'){\r\n cback($data);\r\n }\r\n if($data.status == 'error'){\r\n $modal.modal('hide');\r\n }\r\n }\r\n });\r\n },\r\n edit:function($id, $level, $wallPost, $dataWallSet, $options){\r\n var $dataOptions = $dataWallSet.data.options;\r\n var $modal = $nlWallMenuSettings.wall_menu_options_modal();\r\n var $modalInfo = $modal.find('.modal-info:first');\r\n var $chtml = '';\r\n $chtml = nlWallHtml.wall_menu_popup($wallPost, $dataOptions);\r\n $modalInfo.html(nlWallHtml.wall_menu_preload()).promise().done(function() {\r\n libs.checkImageLoad($($chtml).find('img'), function(){\r\n $modalInfo.html($chtml).promise().done(function(){\r\n nlWallMenu.events($id, $level, $wallPost, $options);\r\n });\r\n });\r\n });\r\n },\r\n update:function($id, $level, $action, cback){\r\n var $modal = $nlWallMenuSettings.wall_menu_options_modal();\r\n var $postMedia = $modal.find('.post-media');\r\n var $postContent = $modal.find('.post-content');\r\n var $post = $postContent.val();\r\n var $urls = [];\r\n var $documents = [];\r\n $postMedia.find(\"> div\").each(function(){\r\n var $that = $(this);\r\n if($that.data('type') == 'website-thumb'){\r\n $urls.push($(this).data('url'));\r\n }\r\n if($that.data('type') == 'website-document'){\r\n $documents.push($(this).data('id'));\r\n }\r\n });\r\n nlWallMenu.set($id, $level, $post, $urls, $documents, 'save', cback);\r\n },\r\n set:function($id, $level, $post, $urls, $documents, $action, cback){\r\n var $modal = $nlWallMenuSettings.wall_menu_options_modal();\r\n var $wallMenuSet = $nlWallMenuSettings.wall_menu_set;\r\n var $wallDebug = $nlWallSettings.wall_debug;\r\n var $withParams = $.extend({}, nlWallHelper.get_with_params(), {id:$id, level:$level, post:$post, urls:$urls, documents:$documents, action:$action});\r\n $.ajax({\r\n url:$wallMenuSet,\r\n method: \"POST\",\r\n cache:false,\r\n dataType: \"json\",\r\n data:$withParams,\r\n success: function ($data) {\r\n libs.expire($data);\r\n if($wallDebug){console.log($withParams);console.log($wallMenuSet);console.log($data);}\r\n if($data.status == 'success'){\r\n cback($data);\r\n }\r\n if($data.status == 'error'){\r\n $modal.modal('hide');\r\n }\r\n }\r\n });\r\n },\r\n };\r\n\r\n if(!$notRun){\r\n nlWall.init();\r\n }\r\n };\r\n $.fn.nurseslounge_myDashboard_wall_get = function($params, $search){\r\n var $arr = [];\r\n var $selected;\r\n $(window).nurseslounge_myDashboard_wall(\r\n $params,\r\n {},\r\n {},\r\n {},\r\n {},\r\n {},\r\n {},\r\n true\r\n );\r\n $arr.push(['nlWall', nlWall]);\r\n $arr.push(['nlWallRecognizeUrl', nlWallRecognizeUrl]);\r\n $arr.push(['nlWallUpdate', nlWallUpdate]);\r\n $arr.push(['nlWallAlbum', nlWallAlbum]);\r\n $arr.push(['nlWallDocumentPreview', nlWallDocumentPreview]);\r\n $arr.push(['nlWallMenuOriginal', $nlWallMenuOriginal]);\r\n $.each($arr, function($i, $v){\r\n if($v[0] == $search){\r\n $selected = $v[1];\r\n return false;\r\n }\r\n });\r\n return $selected;\r\n }\r\n})(jQuery);\r\n","var nurseslounge_myDashboard_camera = {\r\n init:function($params){\r\n nurseslounge_myDashboard_camera.profile_image();\r\n },\r\n profile_image:function(){\r\n var $homeTakepictureModal = $(\"#nurseslounge-home-takepicture-modal\");\r\n $(\"#content .image-change\").unbind().click(function(){\r\n $homeTakepictureModal.find(\".camera\").unbind().click(function(){\r\n $homeTakepictureModal.find(\".camera-container\").fadeOut();\r\n $homeTakepictureModal.find(\".storage-container\").fadeOut();\r\n $homeTakepictureModal.find(\".restore-container\").fadeOut();\r\n nurseslounge_myDashboard_camera.profile_image_animation(function(){\r\n nurseslounge_myDashboard_camera.profile_image_camera();\r\n });\r\n });\r\n $homeTakepictureModal.find(\".storage-file\").unbind().change(function(){\r\n nurseslounge_myDashboard_camera.profile_image_file(this);\r\n });\r\n $homeTakepictureModal.find(\".storage\").unbind().click(function(){\r\n $homeTakepictureModal.find(\".camera-container\").fadeOut();\r\n $homeTakepictureModal.find(\".storage-container\").fadeOut();\r\n $homeTakepictureModal.find(\".restore-container\").fadeOut();\r\n nurseslounge_myDashboard_camera.profile_image_animation(function(){\r\n $homeTakepictureModal.find(\".image-button\").fadeIn();\r\n $homeTakepictureModal.find(\".save-image-picture\").removeClass('active');\r\n $homeTakepictureModal.find(\".storage-file\").click();\r\n $homeTakepictureModal.find(\".take-image-picture\").unbind().click(function(){\r\n $homeTakepictureModal.find(\".storage-file\").click();\r\n });\r\n });\r\n });\r\n $homeTakepictureModal.find(\".restore\").unbind().click(function(){\r\n $homeTakepictureModal.find(\".camera-container\").fadeOut();\r\n $homeTakepictureModal.find(\".storage-container\").fadeOut();\r\n $homeTakepictureModal.find(\".restore-container\").fadeOut();\r\n nurseslounge_myDashboard_camera.profile_image_camera_restore_picture();\r\n });\r\n $homeTakepictureModal.unbind().on('hidden.bs.modal', function () {\r\n $homeTakepictureModal.find(\".storage-file\").val('');\r\n $homeTakepictureModal.find(\".camera-container\").show();\r\n $homeTakepictureModal.find(\".storage-container\").show();\r\n $homeTakepictureModal.find(\".restore-container\").show();\r\n $homeTakepictureModal.find(\".modal-body\").css('height', 'auto');\r\n $homeTakepictureModal.find(\".camera-button\").hide();\r\n $homeTakepictureModal.find(\".my-camera\").html('');\r\n $homeTakepictureModal.find(\".image-button\").hide();\r\n Webcam.reset();\r\n }).modal('show');\r\n });\r\n },\r\n profile_image_animation:function(cback){\r\n var $homeTakepictureModal = $(\"#nurseslounge-home-takepicture-modal\");\r\n $homeTakepictureModal.find(\".modal-body\").animate({\r\n \"height\": \"400px\"\r\n }, 500, \"linear\", function() {\r\n cback();\r\n });\r\n },\r\n profile_image_file:function($that){\r\n var $homeTakepictureModal = $(\"#nurseslounge-home-takepicture-modal\");\r\n $homeTakepictureModal.find(\".my-camera\").html('').promise().done(function(){\r\n libs.renderImage($that, '#nurseslounge-home-takepicture-modal .my-camera #profile-previous-image');\r\n var $myCamera = $(\"#nurseslounge-home-takepicture-modal .my-camera\");\r\n var $image = $(\"#profile-previous-image\").cropme({\r\n \"container\": {\r\n \"width\": $myCamera.width(),\r\n \"height\": $myCamera.height()\r\n },\r\n \"viewport\": {\r\n \"width\": ($myCamera.width() - 140),\r\n \"height\": ($myCamera.width() - 140),\r\n \"type\": \"circle\",\r\n \"border\": {\r\n \"width\": 5,\r\n \"enable\": true,\r\n \"color\": \"#ffffff\"\r\n }\r\n },\r\n \"zoom\": {\r\n \"enable\": true,\r\n \"mouseWheel\": true,\r\n \"slider\": true\r\n },\r\n \"rotation\": {\r\n \"slider\": false,\r\n \"enable\": false,\r\n \"position\": \"left\"\r\n },\r\n \"transformOrigin\": \"viewport\"\r\n });\r\n if($($that)[0].files != ''){\r\n $homeTakepictureModal.find(\".save-image-picture\").unbind().click(function(){\r\n $image.cropme('crop', {\r\n type: 'base64'\r\n }).then(function($imageBase64) {\r\n nurseslounge_myDashboard_camera.profile_image_camera_save_picture($imageBase64);\r\n });\r\n }).addClass('active');\r\n }else{\r\n $homeTakepictureModal.find(\".save-image-picture\").unbind();\r\n }\r\n });\r\n },\r\n profile_image_camera:function(){\r\n var $homeTakepictureModal = $(\"#nurseslounge-home-takepicture-modal\");\r\n $homeTakepictureModal.find(\".my-camera\").html('').promise().done(function(){\r\n Webcam.reset();\r\n Webcam.attach($homeTakepictureModal.find(\".my-camera\")[0]);\r\n $homeTakepictureModal.find(\".camera-button\").fadeIn();\r\n $homeTakepictureModal.find(\".save-camera-picture\").unbind().removeClass('active');\r\n $homeTakepictureModal.find(\".take-camera-picture\").html('Take Picture').unbind().click(function(){\r\n nurseslounge_myDashboard_camera.profile_image_camera_take_picture();\r\n });\r\n });\r\n },\r\n profile_image_camera_take_picture:function(){\r\n var $homeTakepictureModal = $(\"#nurseslounge-home-takepicture-modal\");\r\n Webcam.snap( function($imageBase64) {\r\n $homeTakepictureModal.find(\".my-camera\").html('').promise().done(function(){\r\n var $myCamera = $(\"#nurseslounge-home-takepicture-modal .my-camera\");\r\n var $image = $(\"#profile-previous-image\").cropme({\r\n \"container\": {\r\n \"width\": $myCamera.width(),\r\n \"height\": $myCamera.height()\r\n },\r\n \"viewport\": {\r\n \"width\": ($myCamera.width() - 140),\r\n \"height\": ($myCamera.width() - 140),\r\n \"type\": \"circle\",\r\n \"border\": {\r\n \"width\": 5,\r\n \"enable\": true,\r\n \"color\": \"#ffffff\"\r\n }\r\n },\r\n \"zoom\": {\r\n \"enable\": true,\r\n \"mouseWheel\": true,\r\n \"slider\": true\r\n },\r\n \"rotation\": {\r\n \"slider\": false,\r\n \"enable\": false,\r\n \"position\": \"left\"\r\n },\r\n \"transformOrigin\": \"viewport\"\r\n });\r\n $homeTakepictureModal.find(\".take-camera-picture\").html('Reset').unbind().click(function(){\r\n nurseslounge_myDashboard_camera.profile_image_camera();\r\n });\r\n $homeTakepictureModal.find(\".save-camera-picture\").unbind().click(function(){\r\n $image.cropme('crop', {\r\n type: 'base64'\r\n }).then(function($imageBase64) {\r\n nurseslounge_myDashboard_camera.profile_image_camera_save_picture($imageBase64);\r\n });\r\n }).addClass('active');\r\n });\r\n });\r\n },\r\n profile_image_camera_save_picture:function($imageBase64){\r\n var $image = libs.b64toBlob($imageBase64);\r\n var $formData = new FormData();\r\n $formData.append('_token', $('meta[name=\"csrf-token\"]').attr('content'));\r\n $formData.append('image', $image);\r\n $formData.append('user_id', libs.memoryGet('user_id'));\r\n $.ajax({\r\n type: 'POST',\r\n url: '/myDashboard/header/updateImage',\r\n data: $formData,\r\n cache: false,\r\n contentType: false,\r\n processData: false,\r\n success: function ($data) {\r\n libs.expire($data);\r\n if ($data.status == 'success') {\r\n libs.refreshBoxFrom('.profile-image-box', null, function(){\r\n nurseslounge_myDashboard_camera.profile_image();\r\n if(window.location.pathname == '/myDashboard/myProfile') {\r\n nurseslounge_myDashboard_myProfile.task_list_container(function($container){\r\n nurseslounge_myDashboard_myProfile.task_list($container, {user_id:libs.memoryGet('user_id')});\r\n });\r\n }\r\n });\r\n $(\"#nurseslounge-home-takepicture-modal\").modal('hide');\r\n }\r\n }\r\n });\r\n },\r\n profile_image_camera_restore_picture:function(){\r\n $.ajax({\r\n url: \"/myDashboard/header/restoreImage\",\r\n method: \"POST\",\r\n cache:false,\r\n dataType: \"json\",\r\n data:{user_id:libs.memoryGet('user_id')},\r\n success: function ($data) {\r\n libs.expire($data);\r\n if ($data.status == 'success') {\r\n libs.refreshBoxFrom('.profile-image-box', null, function(){\r\n nurseslounge_myDashboard_camera.profile_image();\r\n if(window.location.pathname == '/myDashboard/myProfile') {\r\n nurseslounge_myDashboard_myProfile.task_list_container(function($container){\r\n nurseslounge_myDashboard_myProfile.task_list($container, {user_id:libs.memoryGet('user_id')});\r\n });\r\n }\r\n });\r\n $(\"#nurseslounge-home-takepicture-modal\").modal('hide');\r\n }\r\n }\r\n });\r\n }\r\n};\r\n","var nurseslounge_myDashboard_followAndFriend = {\r\n init:function($params){\r\n nurseslounge_myDashboard_followAndFriend.add_follow($params.guestId);\r\n },\r\n add_follow:function($guestId){\r\n $(\"#nurseslounge-lounge .follow-button\").unbind().click(function(){\r\n var $data = {\r\n user_id: libs.memoryGet('user_id'),\r\n to_user_id: $guestId\r\n };\r\n nurseslounge_myDashboard_followAndFriend.follow_request($data, function(){\r\n libs.refreshBoxFrom('#nurseslounge-lounge .top-nav-menu' , {guestId:$guestId}, function(){\r\n nurseslounge_profile.profile({guestId:$guestId});\r\n });\r\n });\r\n });\r\n },\r\n /*\r\n friend_request:function($data, cback){\r\n $.ajax({\r\n method: 'POST',\r\n url:'/myDashboard/header/friends/set',\r\n data:$data,\r\n dataType: \"json\",\r\n success: function($data){\r\n libs.expire($data);\r\n if($data.status == 'success'){\r\n cback();\r\n }\r\n }\r\n });\r\n },\r\n */\r\n follow_request:function($data, cback){\r\n $.ajax({\r\n method: 'POST',\r\n url:'/myDashboard/header/follow/set',\r\n data:$data,\r\n dataType: \"json\",\r\n success: function($data){\r\n libs.expire($data);\r\n cback();\r\n }\r\n });\r\n }\r\n};\r\n","var nurseslounge_myDashboard = {\n my_profile:function($params){\n nurseslounge_myDashboard_recommendations.init($params);\n nurseslounge_myDashboard_accountSettings.init($params);\n nurseslounge_myDashboard_camera.init($params);\n nurseslounge_myDashboard.submenu($params, function(){\n $(\".nav-underline a[data-id='my_profile']\").click();\n });\n },\n my_profile_sub:function($params){\n nurseslounge_myDashboard_myProfile.init($params);\n },\n activity:function($params){\n nurseslounge_myDashboard_recommendations.init($params);\n nurseslounge_myDashboard_accountSettings.init($params);\n nurseslounge_myDashboard_camera.init($params);\n nurseslounge_myDashboard.submenu($params, function(){\n $(\".nav-underline a[data-id='activity']\").click();\n });\n },\n activity_sub:function($params){\n nurseslounge_myDashboard_activity.init($params);\n },\n colleagues:function($params){\n nurseslounge_myDashboard_recommendations.init($params);\n nurseslounge_myDashboard_accountSettings.init($params);\n nurseslounge_myDashboard_camera.init($params);\n nurseslounge_myDashboard.submenu($params, function(){\n $(\".nav-underline a[data-id='colleagues']\").click();\n });\n },\n colleagues_sub:function($params){\n nurseslounge_myDashboard_colleagues.init($params);\n },\n my_inbox:function($params){\n nurseslounge_myDashboard_recommendations.init($params);\n nurseslounge_myDashboard_accountSettings.init($params);\n nurseslounge_myDashboard_camera.init($params);\n nurseslounge_myDashboard.submenu($params, function(){\n $(\".nav-underline a[data-id='my_inbox']\").click();\n });\n },\n my_inbox_sub:function($params){\n nurseslounge_myDashboard_myInbox.init($params);\n },\n jobs_near_me:function($params){\n nurseslounge_myDashboard_recommendations.init($params);\n nurseslounge_myDashboard_accountSettings.init($params);\n nurseslounge_myDashboard_camera.init($params);\n nurseslounge_myDashboard.submenu($params, function(){\n $(\".nav-underline a[data-id='jobs_near_me']\").click();\n });\n },\n jobs_near_me_sub:function($params){\n nurseslounge_myDashboard_jobsNearMe.init($params);\n },\n degrees_for_me:function($params){\n nurseslounge_myDashboard_recommendations.init($params);\n nurseslounge_myDashboard_accountSettings.init($params);\n nurseslounge_myDashboard_camera.init($params);\n nurseslounge_myDashboard.submenu($params, function(){\n $(\".nav-underline a[data-id='degrees_for_me']\").click();\n });\n },\n degrees_for_me_sub:function($params){\n nurseslounge_myDashboard_degreesForMe.init($params);\n },\n my_articles:function($params){\n nurseslounge_myDashboard_recommendations.init($params);\n nurseslounge_myDashboard_accountSettings.init($params);\n nurseslounge_myDashboard_camera.init($params);\n nurseslounge_myDashboard.submenu($params, function(){\n $(\".nav-underline a[data-id='my_articles']\").click();\n });\n },\n my_articles_sub:function($params){\n nurseslounge_myDashboard_myArticles.init($params);\n },\n continuing_education:function($params){\n nurseslounge_myDashboard_recommendations.init($params);\n nurseslounge_myDashboard_accountSettings.init($params);\n nurseslounge_myDashboard_camera.init($params);\n nurseslounge_myDashboard.submenu($params, function(){\n $(\".nav-underline a[data-id='continuing_education']\").click();\n });\n },\n continuing_education_sub:function($params){\n nurseslounge_myDashboard_continuingEducation.init($params);\n },\n my_calendar:function($params){\n nurseslounge_myDashboard_recommendations.init($params);\n nurseslounge_myDashboard_accountSettings.init($params);\n nurseslounge_myDashboard_camera.init($params);\n nurseslounge_myDashboard.submenu($params, function(){\n $(\".nav-underline a[data-id='my_calendar']\").click();\n });\n },\n my_calendar_sub:function($params){\n nurseslounge_myDashboard_myCalendar.init($params);\n },\n schedule:function($params){\n nurseslounge_myDashboard_recommendations.init($params);\n nurseslounge_myDashboard_accountSettings.init($params);\n nurseslounge_myDashboard_camera.init($params);\n nurseslounge_myDashboard.submenu($params, function(){\n $(\".nav-underline a[data-id='schedule']\").click();\n });\n },\n schedule_sub:function($params){\n nurseslounge_myDashboard_schedule.init($params);\n },\n my_float_pool:function($params){\n nurseslounge_myDashboard_recommendations.init($params);\n nurseslounge_myDashboard_accountSettings.init($params);\n nurseslounge_myDashboard_camera.init($params);\n nurseslounge_myDashboard.submenu($params, function(){\n $(\".nav-underline a[data-id='my_float_pool']\").click();\n });\n },\n my_float_pool_sub:function($params){\n nurseslounge_myDashboard_my_float_pool.init($params);\n },\n my_credentials_vault:function($params){\n nurseslounge_myDashboard_recommendations.init($params);\n nurseslounge_myDashboard_accountSettings.init($params);\n nurseslounge_myDashboard_camera.init($params);\n nurseslounge_myDashboard.submenu($params, function(){\n $(\".nav-underline a[data-id='my_credentials_vault']\").click();\n });\n },\n my_credentials_vault_sub:function($params){\n nurseslounge_myDashboard_myCredentialsVault.init($params);\n },\n manage_my_lounges:function($params){\n nurseslounge_myDashboard_recommendations.init($params);\n nurseslounge_myDashboard_accountSettings.init($params);\n nurseslounge_myDashboard_camera.init($params);\n nurseslounge_myDashboard.submenu($params, function(){\n $(\".nav-underline a[data-id='manage_my_lounges']\").click();\n });\n },\n manage_my_lounges_sub:function($params){\n nurseslounge_myDashboard_manageMyLounges.init($params);\n },\n preceptors:function($params){\n nurseslounge_myDashboard_recommendations.init($params);\n nurseslounge_myDashboard_accountSettings.init($params);\n nurseslounge_myDashboard_camera.init($params);\n nurseslounge_myDashboard.submenu($params, function(){\n $(\".nav-underline a[data-id='preceptors']\").click();\n });\n },\n preceptors_sub:function($params){\n nurseslounge_myDashboard_preceptors.init($params);\n },\n submenu:function($params, cback){\n $(\".nav-underline a\").unbind().click(function(){\n $(\".nav-underline a\").removeClass('active');\n var $previewProfile = libs.memoryGet('preview_profile');\n var $userId = libs.memoryGet('user_id');\n if($previewProfile && $previewProfile == 1){\n router.navigate(\"profile/\"+$userId);\n }else{\n nurseslounge_myDashboard.submenu_open(this, $(this).data('url'), $(this).data('id')+'_sub', $params)\n }\n });\n nurseslounge_myDashboard.menu_selector();\n nurseslounge_myDashboard.menu_scroll();\n var $notification = nurseslounge_myDashboard.notification_open($params, window.location.href.toString());\n if($notification.valid){\n var $open = '';\n switch($params.notification_type){\n case 'myInbox':{$open = 'my_inbox';break;}\n case 'myPublishedArticle':{$open = 'my_articles';break;}\n case 'myCalendar':{$open = 'my_calendar';break;}\n }\n $(\".nav-underline a\").each(function(){\n var $that = $(this);\n if($that.data('id') == $open){\n $that.addClass('active')\n }\n });\n $params = $.extend({}, $params, {user_id:libs.memoryGet('user_id')});\n libs.subrender('/myDashboard/'+$notification.module, 'nurseslounge_myDashboard', $open+'_sub', $params, 'POST');\n cback();\n }else{\n cback();\n }\n },\n submenu_open:function($this, $url, $module, $params){\n $params = $.extend({}, $params, {\n user_id:libs.memoryGet('user_id'),\n my_room_id:libs.memoryGet('my_room_id'),\n notification_key:null,\n notification_type:null,\n notification_type_key:null,\n });\n $($this).addClass('active');\n router.pause();\n router.navigate($url);\n router.resume();\n $params = $.extend({}, $params, {user_id:libs.memoryGet('user_id')});\n libs.subrender($url, 'nurseslounge_myDashboard', $module, $params, 'POST');\n },\n notification_open:function($params, $location){\n var $notification = {};\n var $notificationData = [];\n if($params && $params.notification_key){$notificationData.push($params.notification_key);}\n if($params && $params.notification_type){$notificationData.push($params.notification_type);}\n if($params && $params.notification_type_key){$notificationData.push($params.notification_type_key);}\n $notification.valid = $notificationData.length == 3;\n $notification.url = $location.replace('/notification/'+$notificationData.join('/'), '');\n var $url = $notification.url.split('/');\n $notification.module = $url[4];\n return $notification;\n },\n menu_selector:function(){\n libs.globalUrl();\n },\n menu_scroll:function(){\n var $nursesLounge = $(\"#nurseslounge-lounge\");\n var $nav = $nursesLounge.find(\".nav.nav-underline\");\n var $maxScrollLeft = $nav[0].scrollWidth - $nav[0].clientWidth;\n var $scrollLeft;\n var $scrollerLeft = $nursesLounge.find(\".nav-scroller-left\");\n var $scrollerRight = $nursesLounge.find(\".nav-scroller-right\");\n var $binding;\n $scrollerLeft.unbind().click(function(){\n $maxScrollLeft = $nav[0].scrollWidth - $nav[0].clientWidth;\n $nav.animate({\n scrollLeft: '-=450',//0\n }, 800, \"linear\", function() {\n $scrollLeft = $nav.scrollLeft();\n try{\n clearTimeout($binding);\n }catch (e) {\n\n }\n $binding = setTimeout(function(){\n if($scrollLeft < 10){\n $scrollerLeft.fadeOut();\n }else{\n $scrollerLeft.fadeIn();\n }\n if($scrollLeft > ($maxScrollLeft-10)){\n $scrollerRight.fadeOut();\n }else{\n $scrollerRight.fadeIn();\n }\n });\n });\n });\n $scrollerRight.unbind().click(function(){\n $maxScrollLeft = $nav[0].scrollWidth - $nav[0].clientWidth;\n $nav.animate({\n scrollLeft: '+=450',//$maxScrollLeft\n }, 800, \"linear\", function() {\n $scrollLeft = $nav.scrollLeft();\n try{\n clearTimeout($binding);\n }catch (e) {\n\n }\n $binding = setTimeout(function(){\n if($scrollLeft < 10){\n $scrollerLeft.fadeOut();\n }else{\n $scrollerLeft.fadeIn();\n }\n if($scrollLeft > ($maxScrollLeft-10)){\n $scrollerRight.fadeOut();\n }else{\n $scrollerRight.fadeIn();\n }\n });\n });\n });\n }\n};\n","var nurseslounge_myDashboard_activity = {\n init:function($params){\n $(window).nurseslounge_myDashboard_wall($params);\n //nurseslounge_myDashboard_activity.wall_articles();\n //nurseslounge_myDashboard_activity.wall_album();\n nurseslounge_myDashboard_activity.lounge_follow_request(function($chtml){\n nurseslounge_myDashboard_activity.lounge_follow_container($chtml);\n });\n nurseslounge_myDashboard_activity.connect_with(function($config){\n nurseslounge_myDashboard_myProfile.connect_engine($config);\n });\n nurseslounge_myDashboard_activity.banners_location(function($config){\n nurseslounge_myDashboard_myProfile.banners_engine($config);\n });\n nurseslounge_myDashboard_activity.become_a_thought_leader(function(){\n nurseslounge_myDashboard_thoughtLeadersForm.open_modal($params);\n });\n nurseslounge_myDashboard_activity.invite_colleagues(function($config){\n nurseslounge_myDashboard_myProfile.invite_colleagues_engine($config);\n });\n nurseslounge_myDashboard_myProfile.profile_is_complete($params, true);\n nurseslounge_myDashboard_activity.task_list_container(function($container){\n nurseslounge_myDashboard_myProfile.task_list($container, $params);\n });\n nurseslounge_myDashboard_activity.preview_profile_container(function($container){\n nurseslounge_myDashboard_myProfile.preview_profile($container, $params);\n });\n nurseslounge_myDashboard_activity.lounge_rate_list($params);\n nurseslounge_myDashboard_activity.notification_link();\n nurseslounge_myDashboard_activity.lounge_ads_location(function($config){\n nurseslounge_lounge_overview.lounge_ads_engine($config);\n });\n nurseslounge_myDashboard_activity.spotlight_container(function($container){\n nurseslounge_myDashboard_myProfile.spotlight($container, $params);\n });\n },\n //Lounge Follow\n lounge_follow_request:function(cback){\n $.ajax({\n method: 'POST',\n url: '/myDashboard/activity/lounge/follow/get',\n data: {\n user_id: libs.memoryGet('user_id')\n },\n dataType: \"json\",\n success: function ($data) {\n libs.expire($data);\n if ($data.status == 'success') {\n var $chtml = nurseslounge_myDashboard_activity.lounge_follow_html($data.data.lounge_follow);\n cback($chtml);\n }\n }\n });\n },\n lounge_follow_html:function($loungeFollow){\n var $chtml = '';\n $.each($loungeFollow, function($i, $v){\n var $img = $v.logo_root_lounge;\n $chtml += '' +\n '
    ' +\n '
    ' +\n ' ' +\n ' \"education\"' +\n ' ' +\n '
    ' +\n '
    ' +\n '

    ' +\n ' '+$v.name+'' +\n '

    ' +\n '
    '+\n '
    ';\n });\n if($chtml == ''){\n $chtml = nurseslounge_myDashboard_activity.lounge_search_html($chtml);\n }\n return $chtml;\n },\n lounge_search_html:function($chtml){\n $chtml += '' +\n '
    ' +\n '
    ' +\n '

    ' +\n ' ' +\n ' Search Lounges to Follow' +\n ' ' +\n '

    ' +\n '
    ' +\n '
    ';\n return $chtml;\n },\n lounge_follow_container:function($chtml){\n libs.checkImageLoad($($chtml).find('img'), function(){\n $(\"#nurseslounge-home-activity .nurseslounge-home-activity-right .follow-lounges\").html($chtml);\n });\n },\n //Connect With\n connect_with:function(cback){\n cback({\n 'connect':$(\"#nurseslounge-home-activity .nurseslounge-home-activity-left .connect-with\")\n });\n },\n //Banners Location\n banners_location:function(cback){\n cback({\n 'banners':$(\"#nurseslounge-home-activity .nurseslounge-home-activity-right .banners\")\n });\n },\n lounge_ads_location:function(cback){\n cback({\n 'ads':$(\"#nurseslounge-home-activity .nurseslounge-home-activity-right .lounge-ads\")\n });\n },\n //Become a Thought Leader\n become_a_thought_leader:function(cback){\n $(\"#nurseslounge-home-activity .nurseslounge-home-activity-right .complete-form-thought-leader\").unbind().click(function(){\n cback();\n });\n },\n //Invite Colleagues\n invite_colleagues:function(cback){\n cback({\n 'colleagues':$(\"#nurseslounge-home-activity .nurseslounge-home-activity-right .send-invite\")\n });\n },\n //Task List Container\n task_list_container:function(cback){\n var $container = $(\"#nurseslounge-home-activity .nurseslounge-home-activity-right\");\n cback($container);\n },\n //Preview Profile\n preview_profile_container:function(cback){\n var $container = $(\"#nurseslounge-home-activity .nurseslounge-home-activity-right\");\n cback($container);\n },\n //Rate Lounge List\n lounge_rate_list:function($params){\n var $loungeActivityLeft = $(\"#nurseslounge-home-activity .nurseslounge-home-activity-left\");\n var $loungeList = $loungeActivityLeft.find(\".lounges-list:first\");\n var $loungeListPreview = nurseslounge_myDashboard_activity.lounge_preview();\n var $resultInfo = $loungeActivityLeft.find(\".result-info-count:first\");\n var $resultPreview = ' ';\n var $paginationNav = $loungeActivityLeft.find('.pagination-nav');\n var $paginationNavPreview = ' ';\n $resultInfo.addClass('nurseslounge-lounge-degrees-preload').html($resultPreview);\n $paginationNav.addClass('nurseslounge-lounge-degrees-preload').html($paginationNavPreview);\n $loungeList.html($loungeListPreview).promise().done(function(){\n nurseslounge_myDashboard_activity.lounge_pagination($params);\n });\n },\n lounge_preview:function(){\n var $chtml = '';\n for(var $i=1; $i<=10; $i++){\n $chtml+= '' +\n '
  • ' +\n '
    ' +\n '
    ' +\n '
    ' +\n '
    ' +\n '                 ' +\n '                 ' +\n '
    ' +\n '
    ' +\n '                   ' +\n '                   ' +\n '                   ' +\n '                   ' +\n '
    ' +\n '
    ' +\n '
    ' +\n '
    ' +\n '                 ' +\n '                 ' +\n '
    ' +\n '
    ' +\n '
  • ';\n }\n return $chtml;\n },\n lounge_pagination:function($params){\n var $reload;\n var $loaded = false;\n var $afterFirstPagination = false;\n var $loungeActivityLeft = $(\"#nurseslounge-home-activity .nurseslounge-home-activity-left\");\n var $loungeList = $loungeActivityLeft.find('.lounges-list:first');\n var $paginationNav = $loungeActivityLeft.find('.pagination-nav');\n var $previewHeight = $loungeActivityLeft.find('.lounges-list .preview:first').innerHeight();\n var $degreeHeight = $loungeList.innerHeight();\n var $pageSize = Math.round(($degreeHeight/$previewHeight));\n var $resultInfo = $loungeActivityLeft.find(\".result-info-count:first\");\n var $saveParams = $params;\n var $paginationObj;\n try{\n $paginationObj = libs.memoryGet('lounge_rate_pagination');\n if($paginationObj){\n $paginationObj.pagination('destroy');\n }\n }catch ($e) {\n }\n try {\n $paginationObj = $paginationNav.pagination({\n pageSize: $pageSize,\n showPageNumbers: true,\n showPrevious: true,\n showNext: true,\n showNavigator: true,\n showFirstOnEllipsisShow: true,\n showLastOnEllipsisShow: true,\n dataSource: window.location.protocol + '//' + window.location.hostname + \"/myDashboard/activity/loungeRate/get\",\n locator: 'data.lounges',\n ajax: {\n method: \"POST\",\n cache: false,\n dataType: \"json\",\n data: $params,\n beforeSend: function () {\n $loungeList.html(nurseslounge_myDashboard_activity.lounge_preview());\n },\n complete: function ($data) {\n libs.expire($data.responseJSON);\n }\n },\n totalNumberLocator: function ($data) {\n return $data.data.total;\n },\n callback: function ($data, $pagination) {\n $loaded = true;\n if ($loungeList.length > 0 && $loungeList.offset().top > 0 && $afterFirstPagination) {\n $('html, body').animate({scrollTop: $loungeList.offset().top - 100});\n } else {\n $afterFirstPagination = true;\n }\n var $pageNumber = $pagination.pageNumber;\n var $pageSize = $pagination.pageSize;\n var $totalNumber = $pagination.totalNumber;\n var $first = $totalNumber > 0 ? (($pageNumber - 1) * $pageSize) + 1 : 0;\n var $last = $totalNumber > 0 ? ($first + $data.length - 1) : 0;\n $paginationNav.removeClass('nurseslounge-lounge-rate-preload');\n $resultInfo.removeClass('nurseslounge-lounge-rate-preload').html('Showing ' + $first + ' - ' + $last + ' of ' + $totalNumber + ' results for Degrees');\n var $chtml = nurseslounge_myDashboard_activity.lounge_item_html($data);\n libs.checkImageLoad($($chtml).find('img'), function () {\n $loungeList.html('').html($chtml).promise().done(function () {\n if ($chtml == '') {\n $loungeActivityLeft.find(\".lounge-rate-wrapper\").remove();\n } else {\n nurseslounge_myDashboard_activity.lounge_item_events($saveParams);\n }\n });\n });\n }\n });\n libs.memorySave('lounge_rate_pagination', $paginationObj);\n $reload = setTimeout(function(){\n if(!$loaded){\n nurseslounge_myDashboard_activity.lounge_pagination($params);\n }else{\n clearTimeout($reload);\n }\n }, 10000);\n }catch ($e) {\n\n }\n },\n lounge_item_html:function($lounges){\n var $chtml = '';\n $.each($lounges, function($i, $v){\n var $img = $v.logo_root_lounge;\n $chtml+='' +\n '
  • ' +\n '
    ' +\n '
    ' +\n '
    ' +\n '
    ' +\n ' \"lounge\"' +\n '
    ' +\n '
    ' +\n '

    ' +\n ' '+$v.name+'' +\n '

    ' +\n nurseslounge_myDashboard_activity.add_stars($v.rating) +\n '
    ' +\n '
    ' +\n '
    '+\n '
    ';\n //TODO::Coins\n if (libs.memoryGet('env') != 'production'){\n $chtml += '' +\n '
    ' +\n '
    ' +\n '
    ' +\n '
    ' +\n '
    ' +\n '
    ' +\n '
    '+\n '
    ';\n }\n if($v.lounge_type_id == 1){\n $chtml+='' +\n '
    ' +\n ' ' +\n '
    ';\n }\n if($v.lounge_type_id == 2){\n $chtml+='' +\n '
    ' +\n ' ' +\n '
    ';\n }\n $chtml+='' +\n '
    ';\n '
    ' +\n '
  • ';\n });\n return $chtml;\n },\n add_stars:function($rating){\n var $chtml = '';\n for(var $i=1; $i<=5; $i++) {\n var $star = $rating - $i;\n var $offsetOn;\n var $offsetOff;\n var $unique = libs.getUniqueId();\n if($star >= 0){\n $offsetOn = 100;\n $offsetOff = 0;\n }else if($star < 0 && $star > -1){\n $star = ($star * -1);\n $offsetOff = ($star * 100);\n $offsetOn = (100 - $offsetOff);\n }else{\n $offsetOn = 0;\n $offsetOff = 100;\n }\n $chtml += '' +\n '' +\n ' ' +\n ' ';\n if($offsetOn > 0) {\n $chtml += '' +\n '';\n }\n if($offsetOff > 0){\n $chtml += '' +\n '';\n }\n $chtml += '' +\n ' ' +\n ' ' +\n ' ' +\n '';\n }\n return $chtml;\n },\n lounge_item_events:function($params){\n var $loungeActivityLeft = $(\"#nurseslounge-home-activity .nurseslounge-home-activity-left\");\n var $loungeList = $loungeActivityLeft.find('.lounges-list:first');\n $loungeList.find(\".lounge-item\").unbind().click(function($e){\n var $link = $(this).data('link');\n window.open($link, '_self');\n });\n $loungeList.find(\".open-rate\").unbind().click(function($e){\n $e.stopPropagation();\n var $key = $(this).parents('.lounge-item:first').data('key');\n $params = $.extend({}, $params, {key:$key});\n nurseslounge_myDashboard_myProfile.lounge_review_get_request($params, function($data){\n var $typeId = $data.data.lounge.lounge_type_id;\n var $link = $data.data.lounge.link;\n nurseslounge_lounge_overview.information_review($typeId, $params, $data, function(){\n router.navigate($link+'/ratingReviews',true);\n $(\"#nurseslounge-lounge-information-review-modal\").modal('hide');\n });\n });\n });\n },\n //Notification Link\n notification_link:function(){\n var $exist = nurseslounge_myDashboard_accountSettings.readCookie('myDashboardActivityLeftWrapper');\n if($exist == 1){\n $(\"#myDashboardActivityLeft-wrapper\").remove();\n }else{\n $(\"#myDashboardActivityLeft-wrapper .close\").unbind().click(function(){\n $(\"#myDashboardActivityLeft-wrapper\").remove();\n nurseslounge_myDashboard_accountSettings.createCookie('myDashboardActivityLeftWrapper',1,100);\n });\n }\n },\n //Spotlight\n spotlight_container:function(cback){\n var $container = $(\"#nurseslounge-home-activity .nurseslounge-home-activity-left .spotlight-wrapper\");\n cback($container);\n },\n};\n","var nurseslounge_myDashboard_myProfile = {\n init:function($params){\n //nurseslounge_myDashboard_activity.lounge_follow_request(function($chtml){\n // nurseslounge_myDashboard_myProfile.lounge_follow_container($chtml);\n //});\n nurseslounge_myDashboard_myProfile.banners_location(function($config){\n nurseslounge_myDashboard_myProfile.banners_engine($config);\n });\n nurseslounge_myDashboard_myProfile.connect_with(function($config){\n nurseslounge_myDashboard_myProfile.connect_engine($config);\n });\n nurseslounge_myDashboard_colleagues.recommended_friends(function($chtml){\n nurseslounge_myDashboard_myProfile.recommended_friends_container($chtml);\n });\n nurseslounge_myDashboard_myProfile.profile($params);\n nurseslounge_myDashboard_myProfile.profile_is_complete($params, true);\n nurseslounge_myDashboard_myProfile.task_list_container(function($container){\n nurseslounge_myDashboard_myProfile.task_list($container, $params);\n });\n nurseslounge_myDashboard_myProfile.preview_profile_container(function($container){\n nurseslounge_myDashboard_myProfile.preview_profile($container, $params);\n });\n nurseslounge_myDashboard_myProfile.download_pdf_container(function($container){\n nurseslounge_myDashboard_myProfile.download_pdf($container, $params);\n });\n nurseslounge_myDashboard_myProfile.notification_link();\n nurseslounge_myDashboard_myProfile.lounge_ads_location(function($config){\n nurseslounge_lounge_overview.lounge_ads_engine($config);\n });\n nurseslounge_myDashboard_myProfile.spotlight_container(function($container){\n nurseslounge_myDashboard_myProfile.spotlight($container, $params);\n });\n //nurseslounge_myDashboard_myProfile.coin_list($params, true, function($eventsIds){\n // nurseslounge_myDashboard_myProfile.coin_events($params, $eventsIds);\n //});\n },\n //General\n general_autocomplete:function($form, $id, $target, $url, $optional, $data){\n if($data == undefined){$data = {};}\n try {\n $($form+\" \"+$id).autocomplete(\"destroy\");\n }catch (e) {\n }\n var $arrId = [];\n var $arrData = [];\n var $value = '';\n $($form+\" \"+$id).autocomplete({\n minLength\t:2,\n search\t\t: function(){\n $(this).addClass(\"ui-autocomplete-loading\");\n },\n open \t\t: function(){\n $(this).removeClass(\"ui-autocomplete-loading\");\n },\n source: function(request, response) {\n $.ajax({\n method: 'POST',\n url:$url,\n data:$.extend({}, $data, {\n value:$($form+\" \"+$id).val()\n }),\n dataType: \"json\",\n success: function($data){\n libs.expire($data);\n response($data);\n /*\n $arrId.length = 0;\n $arrData.length = 0;\n $value = '';\n $.each($data,function($i,$v){\n $arrData.push('\"'+$v.value+'\"');\n $arrId.push([$v.id, $v.value]);\n });\n $arrData = $arrData.sort();\n $arrData = $.unique($arrData);\n response(JSON.parse(\"[\"+$arrData.join(\",\")+\"]\"));\n */\n }\n });\n },\n create:function(){\n $(this).prev().remove();\n $(this).trigger(\"keypress.autocomplete\");\n },\n /*\n select: function (event, ui) {\n $value = ui.item.value;\n $(this).val($value).blur();\n if($optional == 0){\n $($form+\" \"+$target).val('');\n }\n $.each($arrId,function($i,$v){\n if($.trim($v[1]) == $.trim($value)){\n $($form+\" \"+$target).val($v[0]);\n $($form).valid();\n }\n });\n return false;\n },\n focus: function (event, ui) {\n event.preventDefault();\n $value = ui.item.value;\n $(this).val($value);\n if($optional == 0) {\n $($form + \" \" + $target).val('');\n }\n $.each($arrId, function ($i, $v) {\n if ($.trim($v[1]) == $.trim($value)) {\n $($form + \" \" + $target).val($v[0]);\n }\n });\n return false;\n }\n */\n }).blur(function(event){\n if($optional == 0) {\n $($form + \" \" + $id).val($value);\n $($form + \" \" + $target).val('');\n }\n $.each($arrId, function ($i, $v) {\n if ($.trim($v[1]) == $.trim($value)) {\n $($form + \" \" + $target).val($v[0]);\n }\n });\n }).focus(function(){\n $(this).autocomplete(\"search\",\"\");\n $(this).trigger(\"keypress.autocomplete\");\n }).click(function(){\n $(this).autocomplete(\"search\",\"\");\n $(this).trigger($.Event(\"keydown\",{keyCode:40}));\n });\n\n },\n multiple_autocomplete:function($form, $id, $url, $data){\n if($data == undefined){$data = {};}\n try {\n $($form+\" \"+$id).autocomplete(\"destroy\");\n }catch (e) {\n }\n var $arrId = [];\n var $arrData = [];\n var $value = '';\n $($form+\" \"+$id).unbind()\n .on(\"keydown\", function( event ) {\n if (event.keyCode === $.ui.keyCode.TAB && $(this).autocomplete(\"instance\").menu.active) {\n event.preventDefault();\n }\n })\n .autocomplete({\n minLength\t:2,\n search\t\t: function(){\n $(this).addClass(\"ui-autocomplete-loading\");\n },\n open \t\t: function(){\n $(this).removeClass(\"ui-autocomplete-loading\");\n },\n source: function(request, response) {\n $.ajax({\n method: 'POST',\n url:$url,\n data:$.extend(\n {},\n $data,\n {value:$($form+\" \"+$id).val().split(/,\\s*/).pop()}\n ),\n dataType: \"json\",\n success: function($data){\n libs.expire($data);\n $arrId.length = 0;\n $arrData.length = 0;\n $value = '';\n $.each($data,function($i,$v){\n $arrData.push('\"'+$v.value+'\"');\n $arrId.push([$v.id, $v.value]);\n });\n response(JSON.parse(\"[\"+$arrData.join(\",\")+\"]\"));\n }\n });\n },\n select: function (event, ui) {\n var $value = $($form+\" \"+$id).val().split(/,\\s*/);\n $value.pop();\n $value.push(ui.item.value);\n $value.push(\"\");\n this.value = $value.join(\", \");\n return false;\n },\n focus: function (event, ui) {\n event.preventDefault();\n return false;\n }\n });\n },\n //User Degrees\n profile:function($params){\n var $profileLeft = $(\"#nurseslounge-home-my-profile .nurseslounge-home-my-profile-left:first\");\n var $profile = $profileLeft.find('.nurseslounge-home-my-profile-left-profile-info:first');\n $profile.find(\".edit-profile:first\").unbind().click(function(){\n nurseslounge_myDashboard_myProfile.profile_is_complete($params, false, function(){\n nurseslounge_myDashboard_myProfile.user_profile_fill($params, false);\n });\n });\n nurseslounge_myDashboard_myProfile.profile_events($params);\n },\n profile_events:function($params){\n nurseslounge_myDashboard_myProfile.about_my_career($params);\n nurseslounge_myDashboard_myProfile.degree($params);\n nurseslounge_myDashboard_myProfile.specialty($params);\n nurseslounge_myDashboard_myProfile.experience($params);\n nurseslounge_myDashboard_myProfile.education($params);\n nurseslounge_myDashboard_myProfile.license($params);\n nurseslounge_myDashboard_myProfile.certification($params);\n nurseslounge_myDashboard_myProfile.memberships($params);\n nurseslounge_myDashboard_myProfile.volunteer($params);\n nurseslounge_myDashboard_myProfile.research($params);\n nurseslounge_myDashboard_myProfile.publications($params);\n nurseslounge_myDashboard_myProfile.presentations($params);\n nurseslounge_myDashboard_myProfile.awards($params);\n nurseslounge_myDashboard_myProfile.add_cards($params);\n nurseslounge_myDashboard_myProfile.collapse_events();\n libs.refreshTooltips();\n },\n collapse_events:function(){\n $(\".read-more\").unbind().click(function($e){\n $e.stopPropagation();\n var $that = $(this);\n if($that.is(':visible')){\n var $id = $that.parents('.description:first').find('.collapse').attr('id');\n nurseslounge_myDashboard_myProfile.collapse_smooth($that, $id);\n }\n });\n $(\".top-read-more\").unbind().click(function(){\n var $that = $(this).find('.read-more:first');\n if($that.is(':visible')){\n var $id = $that.parents('.description:first').find('.collapse').attr('id');\n nurseslounge_myDashboard_myProfile.collapse_smooth($that, $id);\n }\n });\n },\n collapse_smooth:function($that, $id){\n var $original = $(\"#\"+$id).height();\n var $duration = ($original * 0.8);\n $(\"#\"+$id).height(0);\n $(\"#\"+$id).animate({\n height:$original\n }, $duration,\"linear\", function() {\n $(\"#\"+$id).find('.read-less').unbind().click(function($e) {\n $e.stopPropagation();\n $(\"#\"+$id).removeClass('d-inline');\n $(\"#\"+$id).animate({\n height: '0px'\n }, $duration,\"linear\", function(){\n $that.attr('style', '');\n $(\"#\"+$id).attr('style', '');\n $that.show();\n $(\"#\"+$id).hide();\n nurseslounge_myDashboard_myProfile.collapse_events();\n });\n });\n $that.hide();\n $(\"#\"+$id).addClass('d-inline');\n });\n },\n about_my_career:function($params){\n var $profileLeft = $(\"#nurseslounge-home-my-profile .nurseslounge-home-my-profile-left:first\");\n var $career = $profileLeft.find('.nurseslounge-home-my-profile-left-profile-about-my-career:first');\n var $careerModal = $('#home-my-profile-left-profile-about-my-career-modal');\n $career.find('.edit-aboutMyCareer:first').unbind().click(function(){\n nurseslounge_myDashboard_myProfile.info_request($.extend({}, {type:'about'}, {action:'get'}, $params), function($data){\n $careerModal.find(\"textarea[name='aboutMyCareer']\").val($data.data.summary);\n nurseslounge_myDashboard_myProfile.about_my_career_validate(function($form){\n nurseslounge_myDashboard_myProfile.info_request($.extend({}, {type:'about'}, {action:'set'}, $params, libs.getObjForm($form)), function(){\n libs.refreshBoxFrom('.box-profile', null, function(){\n nurseslounge_myDashboard_myProfile.profile($params);\n $careerModal.modal('hide');\n });\n });\n });\n $careerModal.find('.delete-aboutMyCareer:first').unbind().click(function(){\n nurseslounge_myDashboard_myProfile.info_request($.extend({}, {type:'about'}, {action:'delete'}, $params), function(){\n libs.refreshBoxFrom('.box-profile', null, function(){\n nurseslounge_myDashboard_myProfile.profile($params);\n $careerModal.modal('hide');\n });\n });\n });\n $careerModal.modal('show');\n });\n });\n },\n about_my_career_validate:function(cback){\n var $validator;\n try {\n $validator = $(\"#home-my-profile-left-profile-about-my-career-modal form\").validate();\n $validator.destroy();\n }catch (e) {\n\n }\n $validator = $(\"#home-my-profile-left-profile-about-my-career-modal form\").validate({\n onsubmit: true,\n debug: false,\n ignore: \"*:not(.validate)\",\n rules: {\n aboutMyCareer: {\n required: true\n }\n },\n messages: {\n aboutMyCareer: {\n required: \"About my career is required\"\n }\n },\n errorPlacement: function($error, $element){\n var $ele = $($element);\n var $name = $ele.attr(\"name\");\n if(!$ele.hasClass('is-invalid')){\n $ele.addClass('is-invalid');\n }\n $(\".\"+$name+\"_validate\").html($($error).text()).show();\n },\n success: function($error, $element) {\n var $ele = $($element);\n var $name = $ele.attr(\"name\");\n if($ele.hasClass('is-invalid')){\n $ele.removeClass('is-invalid');\n }\n $(\".\"+$name+\"_validate\").html('').hide();\n },\n submitHandler: function($form) {\n cback($form);\n return false;\n }\n });\n $(\"#home-my-profile-left-profile-about-my-career-modal form\").find('.invalid-feedback').hide();\n $(\"#home-my-profile-left-profile-about-my-career-modal form\").find('.error').removeClass('error');\n $(\"#home-my-profile-left-profile-about-my-career-modal form\").find('.is-invalid').removeClass('is-invalid');\n },\n degree:function($params){\n var $profileLeft = $(\"#nurseslounge-home-my-profile .nurseslounge-home-my-profile-left:first\");\n var $degree = $profileLeft.find('.nurseslounge-home-my-profile-left-profile-degrees:first');\n var $degreeModal = $('#home-my-profile-left-profile-degrees-modal');\n $degree.find('.edit-degree').unbind().click(function(){\n var $id = $(this).data('id');\n nurseslounge_myDashboard_myProfile.degree_request($.extend({}, {action:'get'}, {id:$id}, $params), function($data){\n $degreeModal.find(\"label[name='degree']\").html($data.data.user_degree.degree.type);\n $degreeModal.find(\"textarea[name='description']\").val($data.data.user_degree.description);\n $degreeModal.find(\"select[name='startDateMonth']\").val($data.data.user_degree.start_month);\n $degreeModal.find(\"select[name='startDateYear']\").val($data.data.user_degree.start_year);\n $degreeModal.find(\"select[name='endDateMonth']\").val($data.data.user_degree.end_month);\n $degreeModal.find(\"select[name='endDateYear']\").val($data.data.user_degree.end_year);\n $degreeModal.find(\"input[name='currentlyAttending']\").prop('checked', $data.data.user_degree.currently_attending == 1);\n nurseslounge_myDashboard_myProfile.degree_validate(function($form){\n nurseslounge_myDashboard_myProfile.degree_request($.extend({}, {action:'set'}, {id:$id}, $params, libs.getObjForm($form)), function(){\n libs.refreshBoxFrom('.box-profile', null, function(){\n nurseslounge_myDashboard_myProfile.profile($params);\n $degreeModal.modal('hide');\n });\n });\n });\n $degreeModal.find('.delete-degree').unbind().click(function(){\n nurseslounge_myDashboard_myProfile.degree_request($.extend({}, {action:'delete'}, {id:$id}, $params), function(){\n libs.refreshBoxFrom('.box-profile', null, function(){\n nurseslounge_myDashboard_myProfile.profile($params);\n $degreeModal.modal('hide');\n });\n });\n });\n $degreeModal.modal('show');\n });\n });\n },\n degree_validate:function(cback){\n var $validator;\n try {\n $validator = $(\"#home-my-profile-left-profile-degrees-modal form\").validate();\n $validator.destroy();\n }catch (e) {\n\n }\n $.validator.addMethod(\"compareDates\",\n function($val, $ele, $param) {\n var $sYear = $(\"#home-my-profile-left-profile-degrees-modal form select[name='startDateYear']\").val();\n var $sMonth = $(\"#home-my-profile-left-profile-degrees-modal form select[name='startDateMonth']\").val();\n var $eYear = $(\"#home-my-profile-left-profile-degrees-modal form select[name='endDateYear']\").val();\n var $eMonth = $(\"#home-my-profile-left-profile-degrees-modal form select[name='endDateMonth']\").val();\n if(\n $sYear != '' && $sMonth != '' && $eYear!= '' && $eMonth!='' &&\n !$(\"#home-my-profile-left-profile-degrees-modal form input[name='currentlyAttending']\").is(':checked')\n ){\n return parseInt(new Date($sYear, $sMonth).getTime()) < parseInt(new Date($eYear, $eMonth).getTime());\n }else{\n return true;\n }\n },'Dates error {0}.');\n $validator = $(\"#home-my-profile-left-profile-degrees-modal form\").validate({\n onsubmit: true,\n debug: false,\n ignore: \"*:not(.validate)\",\n rules: {\n description: {\n required: true\n },\n startDateMonth: {\n required: true,\n compareDates:true\n },\n startDateYear: {\n required: true,\n compareDates:true\n },\n endDateMonth: {\n required: function(){\n return !$(\"#home-my-profile-left-profile-degrees-modal form input[name='currentlyAttending']\").is(':checked')\n },\n compareDates:true\n },\n endDateYear: {\n required: function(){\n return !$(\"#home-my-profile-left-profile-degrees-modal form input[name='currentlyAttending']\").is(':checked')\n },\n compareDates:true\n },\n },\n messages: {\n description: {\n required: \"Description is required\"\n },\n startDateMonth: {\n required: \"Start month is required\",\n compareDates: \"Start date is higher than end date\"\n },\n startDateYear: {\n required: \"Start year is required\",\n compareDates: \"Start date is higher than end date\"\n },\n endDateMonth: {\n required: \"End month is required\",\n compareDates: \"End date is lower than start date\"\n },\n endDateYear: {\n required: \"End year is required\",\n compareDates: \"End date is lower than start date\"\n },\n },\n errorPlacement: function($error, $element){\n var $ele = $($element);\n var $name = $ele.attr(\"name\");\n if(!$ele.hasClass('is-invalid')){\n $ele.addClass('is-invalid');\n }\n $(\".\"+$name+\"_validate\").html($($error).text()).show();\n },\n success: function($error, $element) {\n var $ele = $($element);\n var $name = $ele.attr(\"name\");\n if($ele.hasClass('is-invalid')){\n $ele.removeClass('is-invalid');\n }\n $(\".\"+$name+\"_validate\").html('').hide();\n },\n submitHandler: function($form) {\n cback($form);\n return false;\n }\n });\n $(\"#home-my-profile-left-profile-degrees-modal form\").find('.invalid-feedback').hide();\n $(\"#home-my-profile-left-profile-degrees-modal form\").find('.error').removeClass('error');\n $(\"#home-my-profile-left-profile-degrees-modal form\").find('.is-invalid').removeClass('is-invalid');\n },\n degree_request:function($params, cback){\n $.ajax({\n url:\"/myDashboard/myProfile/degree/getSet\",\n method: \"POST\",\n dataType: \"json\",\n data:$params,\n success: function ($data) {\n libs.expire($data);\n if(\n $data.status == 'success'\n ){\n cback($data);\n }\n }\n });\n },\n specialty:function($params){\n var $profileLeft = $(\"#nurseslounge-home-my-profile .nurseslounge-home-my-profile-left:first\");\n var $specialty = $profileLeft.find('.nurseslounge-home-my-profile-left-profile-specialty:first');\n var $specialtyModal = $('#home-my-profile-left-profile-specialty-modal');\n $specialty.find('.edit-specialty').unbind().click(function(){\n var $id = $(this).data('id');\n nurseslounge_myDashboard_myProfile.specialty_request($.extend({}, {action:'get'}, {id:$id}, $params), function($data){\n $specialtyModal.find(\"label[name='specialty']\").html($data.data.user_specialty.specialty.type);\n $specialtyModal.find(\"textarea[name='description']\").val($data.data.user_specialty.description);\n nurseslounge_myDashboard_myProfile.specialty_validate(function($form){\n nurseslounge_myDashboard_myProfile.specialty_request($.extend({}, {action:'set'}, {id:$id}, $params, libs.getObjForm($form)), function(){\n libs.refreshBoxFrom('.box-profile', null, function(){\n nurseslounge_myDashboard_myProfile.profile($params);\n $specialtyModal.modal('hide');\n });\n });\n });\n $specialtyModal.find('.delete-specialty').unbind().click(function(){\n nurseslounge_myDashboard_myProfile.specialty_request($.extend({}, {action:'delete'}, {id:$id}, $params), function(){\n libs.refreshBoxFrom('.box-profile', null, function(){\n nurseslounge_myDashboard_myProfile.profile($params);\n $specialtyModal.modal('hide');\n });\n });\n });\n $specialtyModal.modal('show');\n });\n });\n },\n specialty_validate:function(cback){\n var $validator;\n try {\n $validator = $(\"#home-my-profile-left-profile-specialty-modal form\").validate();\n $validator.destroy();\n }catch (e) {\n\n }\n $validator = $(\"#home-my-profile-left-profile-specialty-modal form\").validate({\n onsubmit: true,\n debug: false,\n ignore: \"*:not(.validate)\",\n rules: {\n description: {\n required: true\n },\n },\n messages: {\n description: {\n required: \"Description is required\"\n },\n },\n errorPlacement: function($error, $element){\n var $ele = $($element);\n var $name = $ele.attr(\"name\");\n if(!$ele.hasClass('is-invalid')){\n $ele.addClass('is-invalid');\n }\n $(\".\"+$name+\"_validate\").html($($error).text()).show();\n },\n success: function($error, $element) {\n var $ele = $($element);\n var $name = $ele.attr(\"name\");\n if($ele.hasClass('is-invalid')){\n $ele.removeClass('is-invalid');\n }\n $(\".\"+$name+\"_validate\").html('').hide();\n },\n submitHandler: function($form) {\n cback($form);\n return false;\n }\n });\n $(\"#home-my-profile-left-profile-specialty-modal form\").find('.invalid-feedback').hide();\n $(\"#home-my-profile-left-profile-specialty-modal form\").find('.error').removeClass('error');\n $(\"#home-my-profile-left-profile-specialty-modal form\").find('.is-invalid').removeClass('is-invalid');\n },\n specialty_request:function($params, cback){\n $.ajax({\n url:\"/myDashboard/myProfile/specialty/getSet\",\n method: \"POST\",\n dataType: \"json\",\n data:$params,\n success: function ($data) {\n libs.expire($data);\n if(\n $data.status == 'success'\n ){\n cback($data);\n }\n }\n });\n },\n experience:function($params){\n var $profileLeft = $(\"#nurseslounge-home-my-profile .nurseslounge-home-my-profile-left:first\");\n var $experience = $profileLeft.find('.nurseslounge-home-my-profile-left-profile-experience:first');\n var $experienceModal = $('#home-my-profile-left-profile-experience-modal');\n var $employerNameInput = $(\"#home-my-profile-left-profile-experience-modal form input[name='employerName']\");\n var $otherEmployer = $(\"#home-my-profile-left-profile-experience-modal form .otherEmployer\");\n var $employerOptions = $(\"#home-my-profile-left-profile-experience-modal form .employerOptions\");\n var $binding;\n $otherEmployer.hide();\n $employerOptions.html('');\n $employerNameInput.unbind();\n nurseslounge_myDashboard_myProfile.general_autocomplete(\n \"#home-my-profile-left-profile-experience-modal form\",\n \"input[name='employerName']\",\n null,\"/myDashboard/myProfile/employers/autocomplete\",\n 1,\n $.extend({}, $params, {type:['employers', 'schools']})\n );\n $employerNameInput.on('blur', function(){\n var $that = $(this);\n var $val = $that.val();\n var $index = $val.indexOf(\"(\");\n if($index > 0){\n $val = $val.substring(0,$index);\n }\n var $newParams = $.extend({}, $params, {employer:$val});\n try{\n clearTimeout($binding);\n }catch (e) {\n }\n $binding = setTimeout(function(){\n $otherEmployer.hide();\n $employerOptions.html('');\n nurseslounge_myDashboard_myProfile.experience_check_lounge($newParams);\n }, 800);\n });\n var $inputAutocomplete = $experienceModal.find('input[name=\"location\"]')[0];\n new google.maps.places.Autocomplete($inputAutocomplete,{\n types: ['(regions)'],\n componentRestrictions: {country: \"us\"}\n });\n $experience.find('.edit-experience').unbind().click(function(){\n $experienceModal.find('.delete-experience').show();\n $experienceModal.find('.save-experience').html('Save');\n var $id = $(this).data('id');\n nurseslounge_myDashboard_myProfile.experience_request($.extend({}, {action:'get'}, {id:$id}, $params), function($data){\n $experienceModal.find(\"input[name='jobTitle']\").val($data.data.user_experience.job_title);\n $experienceModal.find(\"input[name='employerName']\").val($data.data.user_experience.employer_name);\n $experienceModal.find(\"input[name='location']\").val($data.data.user_experience.location);\n $experienceModal.find(\"textarea[name='description']\").val($data.data.user_experience.description);\n $experienceModal.find(\"select[name='startDateMonth']\").val($data.data.user_experience.start_month);\n $experienceModal.find(\"select[name='startDateYear']\").val($data.data.user_experience.start_year);\n $experienceModal.find(\"select[name='endDateMonth']\").val($data.data.user_experience.end_month);\n $experienceModal.find(\"select[name='endDateYear']\").val($data.data.user_experience.end_year);\n $experienceModal.find(\"input[name='presentEmployer']\").prop('checked', $data.data.user_experience.present_employer == 1);\n nurseslounge_myDashboard_myProfile.experience_validate(function($form){\n nurseslounge_myDashboard_myProfile.experience_request($.extend({}, {action:'set'}, {id:$id}, $params, libs.getObjForm($form)), function(){\n libs.refreshBoxFrom('.box-profile', null, function(){\n nurseslounge_myDashboard_myProfile.profile($params);\n $experienceModal.modal('hide');\n });\n });\n });\n $experienceModal.find('.delete-experience').unbind().click(function(){\n nurseslounge_myDashboard_myProfile.experience_request($.extend({}, {action:'delete'}, {id:$id}, $params), function(){\n libs.refreshBoxFrom('.box-profile', null, function(){\n nurseslounge_myDashboard_myProfile.profile($params);\n $experienceModal.modal('hide');\n });\n });\n });\n $experienceModal.modal('show');\n });\n });\n $experience.find('.add-experience').unbind().click(function(){\n $experienceModal.find('form')[0].reset();\n $experienceModal.find('.delete-experience').hide();\n $experienceModal.find('.save-experience').html('Create');\n nurseslounge_myDashboard_myProfile.experience_validate(function($form){\n nurseslounge_myDashboard_myProfile.experience_request($.extend({}, {action:'create'}, $params, libs.getObjForm($form)), function(){\n libs.refreshBoxFrom('.box-profile', null, function(){\n nurseslounge_myDashboard_myProfile.profile($params);\n $experienceModal.modal('hide');\n });\n });\n });\n $experienceModal.modal('show');\n });\n $experience.find('.add-review').unbind().click(function(){\n var $that = $(this);\n var $key = $that.data('key');\n $params = $.extend({}, $params, {key:$key});\n nurseslounge_myDashboard_myProfile.lounge_review_get_request($params, function($data){\n var $typeId = $data.data.lounge.lounge_type_id;\n var $link = $data.data.lounge.link;\n nurseslounge_lounge_overview.information_review($typeId, $params, $data, function(){\n router.navigate($link+'/ratingReviews',true);\n $(\"#nurseslounge-lounge-information-review-modal\").modal('hide');\n });\n });\n });\n $experience.find('.edit-review').unbind().click(function(){\n var $that = $(this);\n var $key = $that.data('key');\n $params = $.extend({}, $params, {key:$key});\n nurseslounge_myDashboard_myProfile.lounge_review_get_request($params, function($data){\n var $typeId = $data.data.lounge.lounge_type_id;\n var $link = $data.data.lounge.link;\n nurseslounge_lounge_overview.information_review($typeId, $params, $data, function(){\n $(\"#nurseslounge-lounge-information-review-modal\").modal('hide');\n libs.refreshBoxFrom('.box-profile', null, function(){\n nurseslounge_myDashboard_myProfile.profile($params);\n });\n });\n });\n });\n $experience.find('.delete-review').unbind().click(function(){\n var $that = $(this);\n var $key = $that.data('key');\n $params = $.extend({}, $params, {key:$key});\n if(confirm('Are you sure you want to delete your review?')){\n nurseslounge_lounge_overview.information_remove_review($params, function(){\n libs.refreshBoxFrom('.box-profile', null, function(){\n nurseslounge_myDashboard_myProfile.profile($params);\n });\n });\n }\n });\n },\n lounge_review_get_request:function($params, cback){\n $.ajax({\n url: \"/myDashboard/myProfile/getLoungeReview\",\n method: \"POST\",\n cache:false,\n dataType: \"json\",\n data:$params,\n success: function ($data) {\n libs.expire($data);\n cback($data);\n }\n });\n },\n experience_check_lounge:function($params){\n var $employerNameInput = $(\"#home-my-profile-left-profile-experience-modal form input[name='employerName']\");\n var $locationInput = $(\"#home-my-profile-left-profile-experience-modal form input[name='location']\");\n var $otherEmployer = $(\"#home-my-profile-left-profile-experience-modal form .otherEmployer\");\n var $employerOptions = $(\"#home-my-profile-left-profile-experience-modal form .employerOptions\");\n nurseslounge_myDashboard_myProfile.experience_check_lounge_request($params, function($data){\n var $lounges = $data.data.lounges;\n if($data.data.list == 1){\n var $chtml = '';\n $.each($lounges, function($i, $v){\n $chtml += '' +\n '
    ' +\n ' ' +\n $v.name +\n '
    ';\n });\n $employerOptions.html($chtml).promise().done(function(){\n var $employerOption = $employerOptions.find('.employer-option');\n $employerOption.unbind().click(function(){\n var $that = $(this);\n var $location = $that.data('location');\n var $name = $that.data('name');\n var $employerNameInputVal = $employerNameInput.val().trim();\n var $index = $employerNameInputVal.indexOf(\" (\");\n if($index > 0){\n $employerNameInputVal = $employerNameInputVal.substring(0,$index);\n }\n $employerNameInput.val($employerNameInputVal+' ('+$name+')');\n $locationInput.val($location);\n $otherEmployer.hide();\n $employerOptions.html('');\n });\n });\n if($lounges.length > 0){\n $otherEmployer.show();\n }\n }else{\n var $employerNameInputVal = $employerNameInput.val().trim();\n var $index = $employerNameInputVal.indexOf(\" (\");\n if($index > 0){\n $employerNameInputVal = $employerNameInputVal.substring(0,$index);\n }\n if($lounges[0].name != $employerNameInputVal){\n $employerNameInput.val($employerNameInputVal+' ('+$lounges[0].name+')');\n }\n $locationInput.val($lounges[0].location.address_state);\n $otherEmployer.hide();\n $employerOptions.html('');\n }\n });\n },\n experience_check_lounge_request:function($params, cback){\n $.ajax({\n url:\"/myDashboard/myProfile/employers/validate\",\n method: \"POST\",\n dataType: \"json\",\n data:$params,\n success: function ($data) {\n libs.expire($data);\n cback($data);\n }\n });\n },\n experience_validate:function(cback){\n var $validator;\n try {\n $validator = $(\"#home-my-profile-left-profile-experience-modal form\").validate();\n $validator.destroy();\n }catch (e) {\n\n }\n $.validator.addMethod(\"compareExperienceDates\",\n function($val, $ele, $param) {\n var $sYear = $(\"#home-my-profile-left-profile-experience-modal form select[name='startDateYear']\").val();\n var $sMonth = $(\"#home-my-profile-left-profile-experience-modal form select[name='startDateMonth']\").val();\n var $eYear = $(\"#home-my-profile-left-profile-experience-modal form select[name='endDateYear']\").val();\n var $eMonth = $(\"#home-my-profile-left-profile-experience-modal form select[name='endDateMonth']\").val();\n if(\n $sYear != '' && $sMonth != '' && $eYear!= '' && $eMonth!='' &&\n !$(\"#home-my-profile-left-profile-experience-modal form input[name='presentEmployer']\").is(':checked')\n ){\n return parseInt(new Date($sYear, $sMonth).getTime()) < parseInt(new Date($eYear, $eMonth).getTime());\n }else{\n return true;\n }\n },'Dates error {0}.');\n $validator = $(\"#home-my-profile-left-profile-experience-modal form\").validate({\n onsubmit: true,\n debug: false,\n ignore: \"*:not(.validate)\",\n rules: {\n jobTitle: {\n required: true\n },\n employerName: {\n required: true\n },\n location: {\n required: true\n },\n description: {\n required: false\n },\n startDateMonth: {\n required: true,\n compareExperienceDates:true\n },\n startDateYear: {\n required: true,\n compareExperienceDates:true\n },\n endDateMonth: {\n required: function(){\n return !$(\"#home-my-profile-left-profile-experience-modal form input[name='presentEmployer']\").is(':checked')\n },\n compareExperienceDates:true\n },\n endDateYear: {\n required: function(){\n return !$(\"#home-my-profile-left-profile-experience-modal form input[name='presentEmployer']\").is(':checked')\n },\n compareExperienceDates:true\n },\n },\n messages: {\n jobTitle: {\n required: \"Job title is required\"\n },\n employerName: {\n required: \"Employer name is required\"\n },\n location: {\n required: \"Location is required\"\n },\n description: {\n required: \"Description is not required\"\n },\n startDateMonth: {\n required: \"Start month is required\",\n compareExperienceDates: \"Start date is higher than end date\"\n },\n startDateYear: {\n required: \"Start year is required\",\n compareExperienceDates: \"Start date is higher than end date\"\n },\n endDateMonth: {\n required: \"End month is required\",\n compareExperienceDates: \"End date is lower than start date\"\n },\n endDateYear: {\n required: \"End year is required\",\n compareExperienceDates: \"End date is lower than start date\"\n },\n },\n errorPlacement: function($error, $element){\n var $ele = $($element);\n var $name = $ele.attr(\"name\");\n if(!$ele.hasClass('is-invalid')){\n $ele.addClass('is-invalid');\n }\n $(\".\"+$name+\"_validate\").html($($error).text()).show();\n },\n success: function($error, $element) {\n var $ele = $($element);\n var $name = $ele.attr(\"name\");\n if($ele.hasClass('is-invalid')){\n $ele.removeClass('is-invalid');\n }\n $(\".\"+$name+\"_validate\").html('').hide();\n },\n submitHandler: function($form) {\n cback($form);\n return false;\n }\n });\n $(\"#home-my-profile-left-profile-experience-modal form\").find('.invalid-feedback').hide();\n $(\"#home-my-profile-left-profile-experience-modal form\").find('.error').removeClass('error');\n $(\"#home-my-profile-left-profile-experience-modal form\").find('.is-invalid').removeClass('is-invalid');\n },\n experience_request:function($params, cback){\n $.ajax({\n url:\"/myDashboard/myProfile/experience/getSet\",\n method: \"POST\",\n dataType: \"json\",\n data:$params,\n success: function ($data) {\n libs.expire($data);\n if(\n $data.status == 'success'\n ){\n if($data.data.msg != ''){\n if(window.location.pathname == '/myDashboard/myProfile') {\n nurseslounge_myDashboard_myProfile.task_list_container(function($container){\n nurseslounge_myDashboard_myProfile.task_list($container, {user_id:libs.memoryGet('user_id')});\n });\n }\n }\n cback($data);\n }\n }\n });\n },\n education:function($params){\n var $profileLeft = $(\"#nurseslounge-home-my-profile .nurseslounge-home-my-profile-left:first\");\n var $education = $profileLeft.find('.nurseslounge-home-my-profile-left-profile-education:first');\n var $educationModal = $('#home-my-profile-left-profile-education-modal');\n nurseslounge_myDashboard_myProfile.general_autocomplete(\n \"#home-my-profile-left-profile-education-modal form\",\n \"input[name='schoolName']\",\n null,\n \"/myDashboard/myProfile/employers/autocomplete\",\n 1,\n $.extend({}, $params, {type:['schools']})\n );\n nurseslounge_myDashboard_myProfile.general_autocomplete(\n \"#home-my-profile-left-profile-education-modal form\",\n \"input[name='degreeName']\",\n null,\n \"/myDashboard/myProfile/degrees/autocomplete\",\n 1,\n $params\n );\n var $inputAutocomplete = $educationModal.find('input[name=\"location\"]')[0];\n new google.maps.places.Autocomplete($inputAutocomplete, {\n types: ['(regions)'],\n componentRestrictions: {country: \"us\"}\n });\n $education.find('.edit-education').unbind().click(function(){\n $educationModal.find('.delete-education').show();\n $educationModal.find('.save-education').html('Save');\n var $id = $(this).data('id');\n nurseslounge_myDashboard_myProfile.education_request($.extend({}, {action:'get'}, {id:$id}, $params), function($data){\n $educationModal.find(\"input[name='schoolName']\").val($data.data.user_education.school_name);\n $educationModal.find(\"input[name='degreeName']\").val($data.data.user_education.other_degree);\n $educationModal.find(\"input[name='location']\").val($data.data.user_education.location);\n $educationModal.find(\"textarea[name='description']\").val($data.data.user_education.description);\n $educationModal.find(\"select[name='startDateMonth']\").val($data.data.user_education.start_month);\n $educationModal.find(\"select[name='startDateYear']\").val($data.data.user_education.start_year);\n $educationModal.find(\"select[name='endDateMonth']\").val($data.data.user_education.end_month);\n $educationModal.find(\"select[name='endDateYear']\").val($data.data.user_education.end_year);\n $educationModal.find(\"input[name='presentStudy']\").prop('checked', $data.data.user_education.present_study == 1);\n nurseslounge_myDashboard_myProfile.education_validate(function($form){\n nurseslounge_myDashboard_myProfile.education_request($.extend({}, {action:'set'}, {id:$id}, $params, libs.getObjForm($form)), function(){\n libs.refreshBoxFrom('.box-profile', null, function(){\n nurseslounge_myDashboard_myProfile.profile($params);\n $educationModal.modal('hide');\n });\n });\n });\n $educationModal.find('.delete-education').unbind().click(function(){\n nurseslounge_myDashboard_myProfile.education_request($.extend({}, {action:'delete'}, {id:$id}, $params), function(){\n libs.refreshBoxFrom('.box-profile', null, function(){\n nurseslounge_myDashboard_myProfile.profile($params);\n $educationModal.modal('hide');\n });\n });\n });\n $educationModal.modal('show');\n });\n });\n $education.find('.add-education').unbind().click(function(){\n $educationModal.find('form')[0].reset();\n $educationModal.find('.delete-education').hide();\n $educationModal.find('.save-education').html('Create');\n nurseslounge_myDashboard_myProfile.education_validate(function($form){\n nurseslounge_myDashboard_myProfile.education_request($.extend({}, {action:'create'}, $params, libs.getObjForm($form)), function(){\n libs.refreshBoxFrom('.box-profile', null, function(){\n nurseslounge_myDashboard_myProfile.profile($params);\n $educationModal.modal('hide');\n });\n });\n });\n $educationModal.modal('show');\n });\n $education.find('.add-review').unbind().click(function(){\n var $that = $(this);\n var $key = $that.data('key');\n $params = $.extend({}, $params, {key:$key});\n nurseslounge_myDashboard_myProfile.lounge_review_get_request($params, function($data){\n var $typeId = $data.data.lounge.lounge_type_id;\n var $link = $data.data.lounge.link;\n nurseslounge_lounge_overview.information_review($typeId, $params, $data, function(){\n router.navigate($link+'/ratingReviews',true);\n $(\"#nurseslounge-lounge-information-review-modal\").modal('hide');\n });\n });\n });\n $education.find('.edit-review').unbind().click(function(){\n var $that = $(this);\n var $key = $that.data('key');\n $params = $.extend({}, $params, {key:$key});\n nurseslounge_myDashboard_myProfile.lounge_review_get_request($params, function($data){\n var $typeId = $data.data.lounge.lounge_type_id;\n var $link = $data.data.lounge.link;\n nurseslounge_lounge_overview.information_review($typeId, $params, $data, function(){\n $(\"#nurseslounge-lounge-information-review-modal\").modal('hide');\n libs.refreshBoxFrom('.box-profile', null, function(){\n nurseslounge_myDashboard_myProfile.profile($params);\n });\n });\n });\n });\n $education.find('.delete-review').unbind().click(function(){\n var $that = $(this);\n var $key = $that.data('key');\n $params = $.extend({}, $params, {key:$key});\n if(confirm('Are you sure you want to delete your review?')){\n nurseslounge_lounge_overview.information_remove_review($params, function(){\n libs.refreshBoxFrom('.box-profile', null, function(){\n nurseslounge_myDashboard_myProfile.profile($params);\n });\n });\n }\n });\n },\n education_validate:function(cback){\n var $validator;\n try {\n $validator = $(\"#home-my-profile-left-profile-education-modal form\").validate();\n $validator.destroy();\n }catch (e) {\n\n }\n $.validator.addMethod(\"compareEducationDates\",\n function($val, $ele, $param) {\n var $sYear = $(\"#home-my-profile-left-profile-education-modal form select[name='startDateYear']\").val();\n var $sMonth = $(\"#home-my-profile-left-profile-education-modal form select[name='startDateMonth']\").val();\n var $eYear = $(\"#home-my-profile-left-profile-education-modal form select[name='endDateYear']\").val();\n var $eMonth = $(\"#home-my-profile-left-profile-education-modal form select[name='endDateMonth']\").val();\n if(\n $sYear != '' && $sMonth != '' && $eYear!= '' && $eMonth!='' &&\n !$(\"#home-my-profile-left-profile-education-modal form input[name='presentStudy']\").is(':checked')\n ){\n return parseInt(new Date($sYear, $sMonth).getTime()) < parseInt(new Date($eYear, $eMonth).getTime());\n }else{\n return true;\n }\n },'Dates error {0}.');\n $validator = $(\"#home-my-profile-left-profile-education-modal form\").validate({\n onsubmit: true,\n debug: false,\n ignore: \"*:not(.validate)\",\n rules: {\n schoolName: {\n required: true\n },\n degreeName: {\n required: true\n },\n location: {\n required: true\n },\n description: {\n required: false\n },\n startDateMonth: {\n required: true,\n compareEducationDates:true\n },\n startDateYear: {\n required: true,\n compareEducationDates:true\n },\n endDateMonth: {\n required: function(){\n return !$(\"#home-my-profile-left-profile-education-modal form input[name='presentStudy']\").is(':checked')\n },\n compareEducationDates:true\n },\n endDateYear: {\n required: function(){\n return !$(\"#home-my-profile-left-profile-education-modal form input[name='presentStudy']\").is(':checked')\n },\n compareEducationDates:true\n },\n },\n messages: {\n schoolName: {\n required: \"School name is required\"\n },\n degreeName: {\n required: \"Degree name is required\"\n },\n location: {\n required: \"Location is required\"\n },\n description: {\n required: \"Description is not required\"\n },\n startDateMonth: {\n required: \"Start month is required\",\n compareEducationDates: \"Start date is higher than end date\"\n },\n startDateYear: {\n required: \"Start year is required\",\n compareEducationDates: \"Start date is higher than end date\"\n },\n endDateMonth: {\n required: \"End month is required\",\n compareEducationDates: \"End date is lower than start date\"\n },\n endDateYear: {\n required: \"End year is required\",\n compareEducationDates: \"End date is lower than start date\"\n },\n },\n errorPlacement: function($error, $element){\n var $ele = $($element);\n var $name = $ele.attr(\"name\");\n if(!$ele.hasClass('is-invalid')){\n $ele.addClass('is-invalid');\n }\n $(\".\"+$name+\"_validate\").html($($error).text()).show();\n },\n success: function($error, $element) {\n var $ele = $($element);\n var $name = $ele.attr(\"name\");\n if($ele.hasClass('is-invalid')){\n $ele.removeClass('is-invalid');\n }\n $(\".\"+$name+\"_validate\").html('').hide();\n },\n submitHandler: function($form) {\n cback($form);\n return false;\n }\n });\n $(\"#home-my-profile-left-profile-education-modal form\").find('.invalid-feedback').hide();\n $(\"#home-my-profile-left-profile-education-modal form\").find('.error').removeClass('error');\n $(\"#home-my-profile-left-profile-education-modal form\").find('.is-invalid').removeClass('is-invalid');\n },\n education_request:function($params, cback){\n $.ajax({\n url:\"/myDashboard/myProfile/education/getSet\",\n method: \"POST\",\n dataType: \"json\",\n data:$params,\n success: function ($data) {\n libs.expire($data);\n if(\n $data.status == 'success'\n ){\n if($data.data.msg != ''){\n if(window.location.pathname == '/myDashboard/myProfile') {\n nurseslounge_myDashboard_myProfile.task_list_container(function($container){\n nurseslounge_myDashboard_myProfile.task_list($container, {user_id:libs.memoryGet('user_id')});\n });\n }\n }\n cback($data);\n }\n }\n });\n },\n license:function($params){\n var $profileLeft = $(\"#nurseslounge-home-my-profile .nurseslounge-home-my-profile-left:first\");\n var $license = $profileLeft.find('.nurseslounge-home-my-profile-left-profile-license:first');\n var $licenseModal = $('#home-my-profile-left-profile-license-modal');\n $license.find('.edit-license').unbind().click(function(){\n var $id = $(this).data('id');\n nurseslounge_myDashboard_myProfile.license_catalog_request($params, function($data){\n var $chtml = '';\n $chtml+='';\n $.each($data.data.states, function($i, $v){\n $chtml+='';\n });\n $licenseModal.find(\"select[name='stateId']\").html($chtml).promise().done(function(){\n $licenseModal.find('.delete-license').show();\n $licenseModal.find('.save-license').html('Save');\n nurseslounge_myDashboard_myProfile.license_request($.extend({}, {action:'get'}, {id:$id}, $params), function($data){\n $licenseModal.find(\"select[name='stateId']\").val($data.data.user_license.state.id);\n $licenseModal.find(\"select[name='startDateMonth']\").val($data.data.user_license.start_month);\n $licenseModal.find(\"select[name='startDateYear']\").val($data.data.user_license.start_year);\n $licenseModal.find(\"select[name='endDateMonth']\").val($data.data.user_license.end_month);\n $licenseModal.find(\"select[name='endDateYear']\").val($data.data.user_license.end_year);\n nurseslounge_myDashboard_myProfile.license_validate(function($form){\n nurseslounge_myDashboard_myProfile.license_request($.extend({}, {action:'set'}, {id:$id}, $params, libs.getObjForm($form)), function(){\n libs.refreshBoxFrom('.box-profile', null, function(){\n nurseslounge_myDashboard_myProfile.profile($params);\n $licenseModal.modal('hide');\n });\n });\n });\n $licenseModal.find('.delete-license').unbind().click(function(){\n nurseslounge_myDashboard_myProfile.license_request($.extend({}, {action:'delete'}, {id:$id}, $params), function(){\n libs.refreshBoxFrom('.box-profile', null, function(){\n nurseslounge_myDashboard_myProfile.profile($params);\n $licenseModal.modal('hide');\n });\n });\n });\n $licenseModal.modal('show');\n });\n });\n });\n });\n $license.find('.add-license').unbind().click(function(){\n nurseslounge_myDashboard_myProfile.license_catalog_request($params, function($data){\n var $chtml = '';\n $chtml+='';\n $.each($data.data.states, function($i, $v){\n $chtml+='';\n });\n $licenseModal.find(\"select[name='stateId']\").html($chtml).promise().done(function() {\n $licenseModal.find('form')[0].reset();\n $licenseModal.find('.delete-license').hide();\n $licenseModal.find('.save-license').html('Create');\n nurseslounge_myDashboard_myProfile.license_validate(function($form){\n nurseslounge_myDashboard_myProfile.license_request($.extend({}, {action:'create'}, $params, libs.getObjForm($form)), function(){\n libs.refreshBoxFrom('.box-profile', null, function(){\n nurseslounge_myDashboard_myProfile.profile($params);\n $licenseModal.modal('hide');\n });\n });\n });\n $licenseModal.modal('show');\n });\n });\n });\n\n },\n license_validate:function(cback){\n var $validator;\n try {\n $validator = $(\"#home-my-profile-left-profile-license-modal form\").validate();\n $validator.destroy();\n }catch (e) {\n\n }\n $.validator.addMethod(\"compareLicenseDates\",\n function($val, $ele, $param) {\n var $sYear = $(\"#home-my-profile-left-profile-license-modal form select[name='startDateYear']\").val();\n var $sMonth = $(\"#home-my-profile-left-profile-license-modal form select[name='startDateMonth']\").val();\n var $eYear = $(\"#home-my-profile-left-profile-license-modal form select[name='endDateYear']\").val();\n var $eMonth = $(\"#home-my-profile-left-profile-license-modal form select[name='endDateMonth']\").val();\n return parseInt(new Date($sYear, $sMonth).getTime()) < parseInt(new Date($eYear, $eMonth).getTime());\n },'Dates error {0}.');\n $validator = $(\"#home-my-profile-left-profile-license-modal form\").validate({\n onsubmit: true,\n debug: false,\n ignore: \"*:not(.validate)\",\n rules: {\n state: {\n required: true\n },\n startDateMonth: {\n required: true,\n compareLicenseDates:true\n },\n startDateYear: {\n required: true,\n compareLicenseDates:true\n },\n endDateMonth: {\n required: function(){\n return !$(\"#home-my-profile-left-profile-license-modal form input[name='currentlyAttending']\").is(':checked')\n },\n compareLicenseDates:true\n },\n endDateYear: {\n required: function(){\n return !$(\"#home-my-profile-left-profile-license-modal form input[name='currentlyAttending']\").is(':checked')\n },\n compareLicenseDates:true\n },\n },\n messages: {\n state: {\n required: \"State is required\"\n },\n startDateMonth: {\n required: \"Start month is required\",\n compareLicenseDates: \"Start date is higher than end date\"\n },\n startDateYear: {\n required: \"Start year is required\",\n compareLicenseDates: \"Start date is higher than end date\"\n },\n endDateMonth: {\n required: \"End month is required\",\n compareLicenseDates: \"End date is lower than start date\"\n },\n endDateYear: {\n required: \"End year is required\",\n compareLicenseDates: \"End date is lower than start date\"\n },\n },\n errorPlacement: function($error, $element){\n var $ele = $($element);\n var $name = $ele.attr(\"name\");\n if(!$ele.hasClass('is-invalid')){\n $ele.addClass('is-invalid');\n }\n $(\".\"+$name+\"_validate\").html($($error).text()).show();\n },\n success: function($error, $element) {\n var $ele = $($element);\n var $name = $ele.attr(\"name\");\n if($ele.hasClass('is-invalid')){\n $ele.removeClass('is-invalid');\n }\n $(\".\"+$name+\"_validate\").html('').hide();\n },\n submitHandler: function($form) {\n cback($form);\n return false;\n }\n });\n $(\"#home-my-profile-left-profile-license-modal form\").find('.invalid-feedback').hide();\n $(\"#home-my-profile-left-profile-license-modal form\").find('.error').removeClass('error');\n $(\"#home-my-profile-left-profile-license-modal form\").find('.is-invalid').removeClass('is-invalid');\n },\n license_request:function($params, cback){\n $.ajax({\n url:\"/myDashboard/myProfile/license/getSet\",\n method: \"POST\",\n dataType: \"json\",\n data:$params,\n success: function ($data) {\n libs.expire($data);\n if(\n $data.status == 'success'\n ){\n cback($data);\n }\n }\n });\n },\n license_catalog_request:function($params, cback){\n $.ajax({\n url:\"/myDashboard/myProfile/licenseCatalog/get\",\n method: \"POST\",\n dataType: \"json\",\n data:$params,\n success: function ($data) {\n libs.expire($data);\n if(\n $data.status == 'success'\n ){\n cback($data);\n }\n }\n });\n },\n certification:function($params){\n var $profileLeft = $(\"#nurseslounge-home-my-profile .nurseslounge-home-my-profile-left:first\");\n var $certification = $profileLeft.find('.nurseslounge-home-my-profile-left-profile-certification:first');\n $certification.find('.edit-certification:first').unbind().click(function(){\n nurseslounge_myDashboard_myProfile.certification_open($params);\n });\n },\n certification_validate:function(cback){\n var $validator;\n try {\n $validator = $(\"#home-my-profile-left-profile-certification-modal form\").validate();\n $validator.destroy();\n }catch (e) {\n\n }\n $validator = $(\"#home-my-profile-left-profile-certification-modal form\").validate({\n onsubmit: true,\n debug: false,\n ignore: \"*:not(.validate)\",\n rules: {\n certification: {\n required: true\n }\n },\n messages: {\n certification: {\n required: \"Licenses & Certifications is required\"\n }\n },\n errorPlacement: function($error, $element){\n var $ele = $($element);\n var $name = $ele.attr(\"name\");\n if(!$ele.hasClass('is-invalid')){\n $ele.addClass('is-invalid');\n }\n $(\".\"+$name+\"_validate\").html($($error).text()).show();\n },\n success: function($error, $element) {\n var $ele = $($element);\n var $name = $ele.attr(\"name\");\n if($ele.hasClass('is-invalid')){\n $ele.removeClass('is-invalid');\n }\n $(\".\"+$name+\"_validate\").html('').hide();\n },\n submitHandler: function($form) {\n cback($form);\n return false;\n }\n });\n $(\"#home-my-profile-left-profile-certification-modal form\").find('.invalid-feedback').hide();\n $(\"#home-my-profile-left-profile-certification-modal form\").find('.error').removeClass('error');\n $(\"#home-my-profile-left-profile-certification-modal form\").find('.is-invalid').removeClass('is-invalid');\n },\n certification_open:function($params){\n var $certificationModal = $('#home-my-profile-left-profile-certification-modal');\n nurseslounge_myDashboard_myProfile.info_request($.extend({}, {type:'certification'}, {action:'get'}, $params), function($data){\n $certificationModal.find(\"textarea[name='certification']\").val($data.data.certification);\n nurseslounge_myDashboard_myProfile.certification_validate(function($form){\n nurseslounge_myDashboard_myProfile.info_request($.extend({}, {type:'certification'}, {action:'set'}, $params, libs.getObjForm($form)), function(){\n libs.refreshBoxFrom('.box-profile', null, function(){\n nurseslounge_myDashboard_myProfile.profile($params);\n $certificationModal.modal('hide');\n });\n });\n });\n $certificationModal.find('.delete-certification:first').unbind().click(function(){\n nurseslounge_myDashboard_myProfile.info_request($.extend({}, {type:'certification'}, {action:'delete'}, $params), function(){\n libs.refreshBoxFrom('.box-profile', null, function(){\n nurseslounge_myDashboard_myProfile.profile($params);\n $certificationModal.modal('hide');\n });\n });\n });\n $certificationModal.modal('show');\n });\n },\n memberships:function($params){\n var $profileLeft = $(\"#nurseslounge-home-my-profile .nurseslounge-home-my-profile-left:first\");\n var $memberships = $profileLeft.find('.nurseslounge-home-my-profile-left-profile-memberships:first');\n $memberships.find('.edit-memberships:first').unbind().click(function(){\n nurseslounge_myDashboard_myProfile.memberships_open($params);\n });\n },\n memberships_validate:function(cback){\n var $validator;\n try {\n $validator = $(\"#home-my-profile-left-profile-memberships-modal form\").validate();\n $validator.destroy();\n }catch (e) {\n\n }\n $validator = $(\"#home-my-profile-left-profile-memberships-modal form\").validate({\n onsubmit: true,\n debug: false,\n ignore: \"*:not(.validate)\",\n rules: {\n memberships: {\n required: true\n }\n },\n messages: {\n memberships: {\n required: \"Memberships is required\"\n }\n },\n errorPlacement: function($error, $element){\n var $ele = $($element);\n var $name = $ele.attr(\"name\");\n if(!$ele.hasClass('is-invalid')){\n $ele.addClass('is-invalid');\n }\n $(\".\"+$name+\"_validate\").html($($error).text()).show();\n },\n success: function($error, $element) {\n var $ele = $($element);\n var $name = $ele.attr(\"name\");\n if($ele.hasClass('is-invalid')){\n $ele.removeClass('is-invalid');\n }\n $(\".\"+$name+\"_validate\").html('').hide();\n },\n submitHandler: function($form) {\n cback($form);\n return false;\n }\n });\n $(\"#home-my-profile-left-profile-memberships-modal form\").find('.invalid-feedback').hide();\n $(\"#home-my-profile-left-profile-memberships-modal form\").find('.error').removeClass('error');\n $(\"#home-my-profile-left-profile-memberships-modal form\").find('.is-invalid').removeClass('is-invalid');\n },\n memberships_open:function($params){\n var $membershipsModal = $('#home-my-profile-left-profile-memberships-modal');\n nurseslounge_myDashboard_myProfile.info_request($.extend({}, {type:'memberships'}, {action:'get'}, $params), function($data){\n $membershipsModal.find(\"textarea[name='memberships']\").val($data.data.memberships);\n nurseslounge_myDashboard_myProfile.memberships_validate(function($form){\n nurseslounge_myDashboard_myProfile.info_request($.extend({}, {type:'memberships'}, {action:'set'}, $params, libs.getObjForm($form)), function(){\n libs.refreshBoxFrom('.box-profile', null, function(){\n nurseslounge_myDashboard_myProfile.profile($params);\n $membershipsModal.modal('hide');\n });\n });\n });\n $membershipsModal.find('.delete-memberships:first').unbind().click(function(){\n nurseslounge_myDashboard_myProfile.info_request($.extend({}, {type:'memberships'}, {action:'delete'}, $params), function(){\n libs.refreshBoxFrom('.box-profile', null, function(){\n nurseslounge_myDashboard_myProfile.profile($params);\n $membershipsModal.modal('hide');\n });\n });\n });\n $membershipsModal.modal('show');\n });\n },\n volunteer:function($params){\n var $profileLeft = $(\"#nurseslounge-home-my-profile .nurseslounge-home-my-profile-left:first\");\n var $volunteer = $profileLeft.find('.nurseslounge-home-my-profile-left-profile-volunteer:first');\n $volunteer.find('.edit-volunteer:first').unbind().click(function(){\n nurseslounge_myDashboard_myProfile.volunteer_open($params);\n });\n },\n volunteer_validate:function(cback){\n var $validator;\n try {\n $validator = $(\"#home-my-profile-left-profile-volunteer-modal form\").validate();\n $validator.destroy();\n }catch (e) {\n\n }\n $validator = $(\"#home-my-profile-left-profile-volunteer-modal form\").validate({\n onsubmit: true,\n debug: false,\n ignore: \"*:not(.validate)\",\n rules: {\n volunteer: {\n required: true\n }\n },\n messages: {\n volunteer: {\n required: \"Volunteer is required\"\n }\n },\n errorPlacement: function($error, $element){\n var $ele = $($element);\n var $name = $ele.attr(\"name\");\n if(!$ele.hasClass('is-invalid')){\n $ele.addClass('is-invalid');\n }\n $(\".\"+$name+\"_validate\").html($($error).text()).show();\n },\n success: function($error, $element) {\n var $ele = $($element);\n var $name = $ele.attr(\"name\");\n if($ele.hasClass('is-invalid')){\n $ele.removeClass('is-invalid');\n }\n $(\".\"+$name+\"_validate\").html('').hide();\n },\n submitHandler: function($form) {\n cback($form);\n return false;\n }\n });\n $(\"#home-my-profile-left-profile-volunteer-modal form\").find('.invalid-feedback').hide();\n $(\"#home-my-profile-left-profile-volunteer-modal form\").find('.error').removeClass('error');\n $(\"#home-my-profile-left-profile-volunteer-modal form\").find('.is-invalid').removeClass('is-invalid');\n },\n volunteer_open:function($params){\n var $volunteerModal = $('#home-my-profile-left-profile-volunteer-modal');\n nurseslounge_myDashboard_myProfile.info_request($.extend({}, {type:'volunteer'}, {action:'get'}, $params), function($data){\n $volunteerModal.find(\"textarea[name='volunteer']\").val($data.data.volunteer);\n nurseslounge_myDashboard_myProfile.volunteer_validate(function($form){\n nurseslounge_myDashboard_myProfile.info_request($.extend({}, {type:'volunteer'}, {action:'set'}, $params, libs.getObjForm($form)), function(){\n libs.refreshBoxFrom('.box-profile', null, function(){\n nurseslounge_myDashboard_myProfile.profile($params);\n $volunteerModal.modal('hide');\n });\n });\n });\n $volunteerModal.find('.delete-volunteer:first').unbind().click(function(){\n nurseslounge_myDashboard_myProfile.info_request($.extend({}, {type:'volunteer'}, {action:'delete'}, $params), function(){\n libs.refreshBoxFrom('.box-profile', null, function(){\n nurseslounge_myDashboard_myProfile.profile($params);\n $volunteerModal.modal('hide');\n });\n });\n });\n $volunteerModal.modal('show');\n });\n },\n research:function($params){\n var $profileLeft = $(\"#nurseslounge-home-my-profile .nurseslounge-home-my-profile-left:first\");\n var $research = $profileLeft.find('.nurseslounge-home-my-profile-left-profile-research:first');\n $research.find('.edit-research:first').unbind().click(function(){\n nurseslounge_myDashboard_myProfile.research_open($params);\n });\n },\n research_validate:function(cback){\n var $validator;\n try {\n $validator = $(\"#home-my-profile-left-profile-research-modal form\").validate();\n $validator.destroy();\n }catch (e) {\n\n }\n $validator = $(\"#home-my-profile-left-profile-research-modal form\").validate({\n onsubmit: true,\n debug: false,\n ignore: \"*:not(.validate)\",\n rules: {\n research: {\n required: true\n }\n },\n messages: {\n research: {\n required: \"Research is required\"\n }\n },\n errorPlacement: function($error, $element){\n var $ele = $($element);\n var $name = $ele.attr(\"name\");\n if(!$ele.hasClass('is-invalid')){\n $ele.addClass('is-invalid');\n }\n $(\".\"+$name+\"_validate\").html($($error).text()).show();\n },\n success: function($error, $element) {\n var $ele = $($element);\n var $name = $ele.attr(\"name\");\n if($ele.hasClass('is-invalid')){\n $ele.removeClass('is-invalid');\n }\n $(\".\"+$name+\"_validate\").html('').hide();\n },\n submitHandler: function($form) {\n cback($form);\n return false;\n }\n });\n $(\"#home-my-profile-left-profile-research-modal form\").find('.invalid-feedback').hide();\n $(\"#home-my-profile-left-profile-research-modal form\").find('.error').removeClass('error');\n $(\"#home-my-profile-left-profile-research-modal form\").find('.is-invalid').removeClass('is-invalid');\n },\n research_open:function($params){\n var $researchModal = $('#home-my-profile-left-profile-research-modal');\n nurseslounge_myDashboard_myProfile.info_request($.extend({}, {type:'research'}, {action:'get'}, $params), function($data){\n $researchModal.find(\"textarea[name='research']\").val($data.data.research);\n nurseslounge_myDashboard_myProfile.research_validate(function($form){\n nurseslounge_myDashboard_myProfile.info_request($.extend({}, {type:'research'}, {action:'set'}, $params, libs.getObjForm($form)), function(){\n libs.refreshBoxFrom('.box-profile', null, function(){\n nurseslounge_myDashboard_myProfile.profile($params);\n $researchModal.modal('hide');\n });\n });\n });\n $researchModal.find('.delete-research:first').unbind().click(function(){\n nurseslounge_myDashboard_myProfile.info_request($.extend({}, {type:'research'}, {action:'delete'}, $params), function(){\n libs.refreshBoxFrom('.box-profile', null, function(){\n nurseslounge_myDashboard_myProfile.profile($params);\n $researchModal.modal('hide');\n });\n });\n });\n $researchModal.modal('show');\n });\n },\n publications:function($params){\n var $profileLeft = $(\"#nurseslounge-home-my-profile .nurseslounge-home-my-profile-left:first\");\n var $publications = $profileLeft.find('.nurseslounge-home-my-profile-left-profile-publications:first');\n $publications.find('.edit-publications:first').unbind().click(function(){\n nurseslounge_myDashboard_myProfile.publications_open($params);\n });\n },\n publications_validate:function(cback){\n var $validator;\n try {\n $validator = $(\"#home-my-profile-left-profile-publications-modal form\").validate();\n $validator.destroy();\n }catch (e) {\n\n }\n $validator = $(\"#home-my-profile-left-profile-publications-modal form\").validate({\n onsubmit: true,\n debug: false,\n ignore: \"*:not(.validate)\",\n rules: {\n publications: {\n required: true\n }\n },\n messages: {\n publications: {\n required: \"Publications is required\"\n }\n },\n errorPlacement: function($error, $element){\n var $ele = $($element);\n var $name = $ele.attr(\"name\");\n if(!$ele.hasClass('is-invalid')){\n $ele.addClass('is-invalid');\n }\n $(\".\"+$name+\"_validate\").html($($error).text()).show();\n },\n success: function($error, $element) {\n var $ele = $($element);\n var $name = $ele.attr(\"name\");\n if($ele.hasClass('is-invalid')){\n $ele.removeClass('is-invalid');\n }\n $(\".\"+$name+\"_validate\").html('').hide();\n },\n submitHandler: function($form) {\n cback($form);\n return false;\n }\n });\n $(\"#home-my-profile-left-profile-publications-modal form\").find('.invalid-feedback').hide();\n $(\"#home-my-profile-left-profile-publications-modal form\").find('.error').removeClass('error');\n $(\"#home-my-profile-left-profile-publications-modal form\").find('.is-invalid').removeClass('is-invalid');\n },\n publications_open:function($params){\n var $publicationsModal = $('#home-my-profile-left-profile-publications-modal');\n nurseslounge_myDashboard_myProfile.info_request($.extend({}, {type:'publications'}, {action:'get'}, $params), function($data){\n $publicationsModal.find(\"textarea[name='publications']\").val($data.data.publications);\n nurseslounge_myDashboard_myProfile.publications_validate(function($form){\n nurseslounge_myDashboard_myProfile.info_request($.extend({}, {type:'publications'}, {action:'set'}, $params, libs.getObjForm($form)), function(){\n libs.refreshBoxFrom('.box-profile', null, function(){\n nurseslounge_myDashboard_myProfile.profile($params);\n $publicationsModal.modal('hide');\n });\n });\n });\n $publicationsModal.find('.delete-publications:first').unbind().click(function(){\n nurseslounge_myDashboard_myProfile.info_request($.extend({}, {type:'publications'}, {action:'delete'}, $params), function(){\n libs.refreshBoxFrom('.box-profile', null, function(){\n nurseslounge_myDashboard_myProfile.profile($params);\n $publicationsModal.modal('hide');\n });\n });\n });\n $publicationsModal.modal('show');\n });\n },\n presentations:function($params){\n var $profileLeft = $(\"#nurseslounge-home-my-profile .nurseslounge-home-my-profile-left:first\");\n var $presentations = $profileLeft.find('.nurseslounge-home-my-profile-left-profile-presentations:first');\n $presentations.find('.edit-presentations:first').unbind().click(function(){\n nurseslounge_myDashboard_myProfile.presentations_open($params);\n });\n },\n presentations_validate:function(cback){\n var $validator;\n try {\n $validator = $(\"#home-my-profile-left-profile-presentations-modal form\").validate();\n $validator.destroy();\n }catch (e) {\n\n }\n $validator = $(\"#home-my-profile-left-profile-presentations-modal form\").validate({\n onsubmit: true,\n debug: false,\n ignore: \"*:not(.validate)\",\n rules: {\n presentations: {\n required: true\n }\n },\n messages: {\n presentations: {\n required: \"Presentations is required\"\n }\n },\n errorPlacement: function($error, $element){\n var $ele = $($element);\n var $name = $ele.attr(\"name\");\n if(!$ele.hasClass('is-invalid')){\n $ele.addClass('is-invalid');\n }\n $(\".\"+$name+\"_validate\").html($($error).text()).show();\n },\n success: function($error, $element) {\n var $ele = $($element);\n var $name = $ele.attr(\"name\");\n if($ele.hasClass('is-invalid')){\n $ele.removeClass('is-invalid');\n }\n $(\".\"+$name+\"_validate\").html('').hide();\n },\n submitHandler: function($form) {\n cback($form);\n return false;\n }\n });\n $(\"#home-my-profile-left-profile-presentations-modal form\").find('.invalid-feedback').hide();\n $(\"#home-my-profile-left-profile-presentations-modal form\").find('.error').removeClass('error');\n $(\"#home-my-profile-left-profile-presentations-modal form\").find('.is-invalid').removeClass('is-invalid');\n },\n presentations_open:function($params){\n var $presentationsModal = $('#home-my-profile-left-profile-presentations-modal');\n nurseslounge_myDashboard_myProfile.info_request($.extend({}, {type:'presentations'}, {action:'get'}, $params), function($data){\n $presentationsModal.find(\"textarea[name='presentations']\").val($data.data.presentations);\n nurseslounge_myDashboard_myProfile.presentations_validate(function($form){\n nurseslounge_myDashboard_myProfile.info_request($.extend({}, {type:'presentations'}, {action:'set'}, $params, libs.getObjForm($form)), function(){\n libs.refreshBoxFrom('.box-profile', null, function(){\n nurseslounge_myDashboard_myProfile.profile($params);\n $presentationsModal.modal('hide');\n });\n });\n });\n $presentationsModal.find('.delete-presentations:first').unbind().click(function(){\n nurseslounge_myDashboard_myProfile.info_request($.extend({}, {type:'presentations'}, {action:'delete'}, $params), function(){\n libs.refreshBoxFrom('.box-profile', null, function(){\n nurseslounge_myDashboard_myProfile.profile($params);\n $presentationsModal.modal('hide');\n });\n });\n });\n $presentationsModal.modal('show');\n });\n },\n awards:function($params){\n var $profileLeft = $(\"#nurseslounge-home-my-profile .nurseslounge-home-my-profile-left:first\");\n var $awards = $profileLeft.find('.nurseslounge-home-my-profile-left-profile-awards:first');\n $awards.find('.edit-awards:first').unbind().click(function(){\n nurseslounge_myDashboard_myProfile.awards_open($params);\n });\n },\n awards_validate:function(cback){\n var $validator;\n try {\n $validator = $(\"#home-my-profile-left-profile-awards-modal form\").validate();\n $validator.destroy();\n }catch (e) {\n\n }\n $validator = $(\"#home-my-profile-left-profile-awards-modal form\").validate({\n onsubmit: true,\n debug: false,\n ignore: \"*:not(.validate)\",\n rules: {\n awards: {\n required: true\n }\n },\n messages: {\n awards: {\n required: \"Awards is required\"\n }\n },\n errorPlacement: function($error, $element){\n var $ele = $($element);\n var $name = $ele.attr(\"name\");\n if(!$ele.hasClass('is-invalid')){\n $ele.addClass('is-invalid');\n }\n $(\".\"+$name+\"_validate\").html($($error).text()).show();\n },\n success: function($error, $element) {\n var $ele = $($element);\n var $name = $ele.attr(\"name\");\n if($ele.hasClass('is-invalid')){\n $ele.removeClass('is-invalid');\n }\n $(\".\"+$name+\"_validate\").html('').hide();\n },\n submitHandler: function($form) {\n cback($form);\n return false;\n }\n });\n $(\"#home-my-profile-left-profile-awards-modal form\").find('.invalid-feedback').hide();\n $(\"#home-my-profile-left-profile-awards-modal form\").find('.error').removeClass('error');\n $(\"#home-my-profile-left-profile-awards-modal form\").find('.is-invalid').removeClass('is-invalid');\n },\n awards_open:function($params){\n var $awardsModal = $('#home-my-profile-left-profile-awards-modal');\n nurseslounge_myDashboard_myProfile.info_request($.extend({}, {type:'awards'}, {action:'get'}, $params), function($data){\n $awardsModal.find(\"textarea[name='awards']\").val($data.data.awards);\n nurseslounge_myDashboard_myProfile.awards_validate(function($form){\n nurseslounge_myDashboard_myProfile.info_request($.extend({}, {type:'awards'}, {action:'set'}, $params, libs.getObjForm($form)), function(){\n libs.refreshBoxFrom('.box-profile', null, function(){\n nurseslounge_myDashboard_myProfile.profile($params);\n $awardsModal.modal('hide');\n });\n });\n });\n $awardsModal.find('.delete-awards:first').unbind().click(function(){\n nurseslounge_myDashboard_myProfile.info_request($.extend({}, {type:'awards'}, {action:'delete'}, $params), function(){\n libs.refreshBoxFrom('.box-profile', null, function(){\n nurseslounge_myDashboard_myProfile.profile($params);\n $awardsModal.modal('hide');\n });\n });\n });\n $awardsModal.modal('show');\n });\n },\n info_request:function($params, cback){\n $.ajax({\n url:\"/myDashboard/myProfile/info/getSet\",\n method: \"POST\",\n dataType: \"json\",\n data:$params,\n success: function ($data) {\n libs.expire($data);\n if(\n $data.status == 'success'\n ){\n cback($data);\n }\n }\n });\n },\n add_cards:function($params){\n var $profileLeft = $(\"#nurseslounge-home-my-profile .nurseslounge-home-my-profile-left:first\");\n var $cards = $profileLeft.find('.home-my-profile-left-profile-add-cards:first');\n $cards.find('.add-cards:first').unbind().change(function(){\n var $section = $(this).val();\n if($section != ''){\n switch ($section) {\n case 'certification':\n nurseslounge_myDashboard_myProfile.certification_open($params);\n break;\n case 'memberships':\n nurseslounge_myDashboard_myProfile.memberships_open($params);\n break;\n case 'volunteer':\n nurseslounge_myDashboard_myProfile.volunteer_open($params);\n break;\n case 'research':\n nurseslounge_myDashboard_myProfile.research_open($params);\n break;\n case 'publications':\n nurseslounge_myDashboard_myProfile.publications_open($params);\n break;\n case 'presentations':\n nurseslounge_myDashboard_myProfile.presentations_open($params);\n break;\n case 'awards':\n nurseslounge_myDashboard_myProfile.awards_open($params);\n break;\n }\n }\n $(this).val('');\n });\n },\n //User Profile Settings\n user_profile_fill:function($params, $isDashboardSetting){\n if($isDashboardSetting){\n if(!$(\"#nurseslounge-home-my-profile-edit-modal .state\").hasClass('col-sm-6')){\n $(\"#nurseslounge-home-my-profile-edit-modal .state\").addClass('col-sm-6').removeClass('col-sm-12');\n }\n $(\"#nurseslounge-home-my-profile-edit-modal .profile-type\").show();\n $(\"#nurseslounge-home-my-profile-edit-modal .city\").show();\n $(\"#nurseslounge-home-my-profile-edit-modal .state\").show();\n $(\"#nurseslounge-home-my-profile-edit-modal .email-address\").show();\n $(\"#nurseslounge-home-my-profile-edit-modal .postal-code\").show();\n $(\"#nurseslounge-home-my-profile-edit-modal .change-password\").show();\n $(\"#nurseslounge-home-my-profile-edit-modal .first-name\").hide();\n $(\"#nurseslounge-home-my-profile-edit-modal .last-name\").hide();\n }else{\n if($(\"#nurseslounge-home-my-profile-edit-modal .state\").hasClass('col-sm-6')){\n $(\"#nurseslounge-home-my-profile-edit-modal .state\").removeClass('col-sm-6').addClass('col-sm-12');\n }\n $(\"#nurseslounge-home-my-profile-edit-modal .profile-type\").hide();\n $(\"#nurseslounge-home-my-profile-edit-modal .city\").hide();\n $(\"#nurseslounge-home-my-profile-edit-modal .state\").show();\n $(\"#nurseslounge-home-my-profile-edit-modal .email-address\").hide();\n $(\"#nurseslounge-home-my-profile-edit-modal .postal-code\").hide();\n $(\"#nurseslounge-home-my-profile-edit-modal .change-password\").hide();\n $(\"#nurseslounge-home-my-profile-edit-modal .first-name\").show();\n $(\"#nurseslounge-home-my-profile-edit-modal .last-name\").show();\n }\n $.ajax({\n url: \"/myDashboard/myProfile/permissions/droplists\",\n method: \"POST\",\n cache:false,\n dataType: \"json\",\n success: function ($data) {\n libs.expire($data);\n if($data.status == 'success'){\n var $catalog = $data;\n var $inputAutocomplete = $(\"#nurseslounge-home-my-profile-edit-modal form input[name='city']\")[0];\n new google.maps.places.Autocomplete($inputAutocomplete, {\n types: ['(regions)'],\n componentRestrictions: {country: \"us\"}\n });\n $(\"#nurseslounge-home-my-profile-edit-modal form select[name='state']\").html($data.data.state);\n $(\"#nurseslounge-home-my-profile-edit-modal form select[name='profile']\").html($data.data.profile);\n $(\"#nurseslounge-home-my-profile-edit-modal form select[name='nursingRecruiterEmployerType']\").html($data.data.nursingRecruiterEmployerType);\n $(\"#nurseslounge-home-my-profile-edit-modal form select[name='organizationRepresentativeOrganizationType']\").html($data.data.organizationRepresentativeOrganizationType);\n $(\"#nurseslounge-home-my-profile-edit-modal form select[name='nursingStudentDegreeType']\").html($data.data.nursingStudentDegreeType);\n $(\"#nurseslounge-home-my-profile-edit-modal form select[name='nursingStudentMonth']\").html($data.data.nursingStudentMonth);\n $(\"#nurseslounge-home-my-profile-edit-modal form select[name='nursingStudentYear']\").html($data.data.nursingStudentYear);\n $(\"#nurseslounge-home-my-profile-edit-modal form select[name='nurseNursingDegrees']\").html($data.data.nurseNursingDegrees);\n $(\"#nurseslounge-home-my-profile-edit-modal form select[name='nurseFacultyNursingDegrees']\").html($data.data.nurseFacultyNursingDegrees);\n var $nurseFacultySpecialty = '';\n $nurseFacultySpecialty = $nurseFacultySpecialty+$data.data.nurseFacultySpecialty;\n $(\"#nurseslounge-home-my-profile-edit-modal form select[name='nurseFacultySpecialty']\").html($nurseFacultySpecialty);\n $(\"#nurseslounge-home-my-profile-edit-modal form select[name='nurseYearsOfExperience']\").html($data.data.nurseYearsOfExperience);\n $(\"#nurseslounge-home-my-profile-edit-modal form select[name='nurseFacultyYearsOfExperience']\").html($data.data.nurseFacultyYearsOfExperience);\n $.ajax({\n url: \"/myDashboard/myProfile/permissions/fill\",\n method: \"POST\",\n cache:false,\n data:$params,\n dataType: \"json\",\n success: function ($data) {\n libs.expire($data);\n if($data.status == 'success') {\n $(\"#nurseslounge-home-my-profile-edit-modal form input[name='firstName']\").val($data.data.first_name);\n $(\"#nurseslounge-home-my-profile-edit-modal form input[name='lastName']\").val($data.data.last_name);\n $(\"#nurseslounge-home-my-profile-edit-modal form input[name='email']\").val($data.data.email);\n $(\"#nurseslounge-home-my-profile-edit-modal form select[name='systemProfile']\").val($data.data.administrator_profile_id);\n $(\"#nurseslounge-home-my-profile-edit-modal form select[name='state']\").val($data.data.state_id);\n $(\"#nurseslounge-home-my-profile-edit-modal form input[name='city']\").val($data.data.city);\n $(\"#nurseslounge-home-my-profile-edit-modal form input[name='zipCode']\").val($data.data.zip_code);\n $(\"#nurseslounge-home-my-profile-edit-modal form select[name='profile']\").val($data.data.profile_id).unbind().change(function(){\n var $profile = $(this).val();\n\n $(\"#nurseslounge-home-my-profile-edit-modal form .nursing-recruiter\").hide();\n $(\"#nurseslounge-home-my-profile-edit-modal form .organization-representative\").hide();\n $(\"#nurseslounge-home-my-profile-edit-modal form .nursing-student\").hide();\n $(\"#nurseslounge-home-my-profile-edit-modal form .nurse\").hide();\n $(\"#nurseslounge-home-my-profile-edit-modal form .nurse-faculty\").hide();\n\n $params = $.extend({}, $params, $data.data);\n\n\n var $nurseSpecialty = '';\n if($profile == 6){\n $nurseSpecialty = $nurseSpecialty+$catalog.data.advanceSpecialty;\n }else{\n $nurseSpecialty = $nurseSpecialty+$catalog.data.nurseSpecialty;\n }\n $(\"#nurseslounge-home-my-profile-edit-modal form select[name='nurseSpecialty']\").html($nurseSpecialty);\n\n if($profile == 1){\n nurseslounge_myDashboard_myProfile.user_profile_recruiter_edit_events($params, $isDashboardSetting);\n }else\n if($profile == 2){\n nurseslounge_myDashboard_myProfile.user_profile_organization_representative_edit_events($params, $isDashboardSetting);\n }else\n if($profile == 3 || $profile == 7){\n nurseslounge_myDashboard_myProfile.user_profile_nursing_student_edit_events($params, $isDashboardSetting, $profile);\n }else\n if($profile == 4 || $profile == 6){\n nurseslounge_myDashboard_myProfile.user_profile_nurse_edit_events($params, $isDashboardSetting, $profile);\n }else\n if($profile == 5){\n nurseslounge_myDashboard_myProfile.user_profile_nurse_faculty_edit_events($params, $isDashboardSetting);\n }\n });\n\n $(\"#nurseslounge-home-my-profile-edit-modal form .nursing-recruiter\").hide();\n $(\"#nurseslounge-home-my-profile-edit-modal form .organization-representative\").hide();\n $(\"#nurseslounge-home-my-profile-edit-modal form .nursing-student\").hide();\n $(\"#nurseslounge-home-my-profile-edit-modal form .nurse\").hide();\n $(\"#nurseslounge-home-my-profile-edit-modal form .nurse-faculty\").hide();\n\n var $profile = $data.data.profile_id;\n\n $params = $.extend({}, $params, $data.data);\n\n var $nurseSpecialty = '';\n if($profile == 6){\n $nurseSpecialty = $nurseSpecialty+$catalog.data.advanceSpecialty;\n }else{\n $nurseSpecialty = $nurseSpecialty+$catalog.data.nurseSpecialty;\n }\n $(\"#nurseslounge-home-my-profile-edit-modal form select[name='nurseSpecialty']\").html($nurseSpecialty);\n\n if($profile == 1){\n nurseslounge_myDashboard_myProfile.user_profile_recruiter_edit_events($params, $isDashboardSetting);\n }else\n if($profile == 2){\n nurseslounge_myDashboard_myProfile.user_profile_organization_representative_edit_events($params, $isDashboardSetting);\n }else\n if($profile == 3 || $profile == 7){\n nurseslounge_myDashboard_myProfile.user_profile_nursing_student_edit_events($params, $isDashboardSetting, $profile);\n }else\n if($profile == 4 || $profile == 6){\n nurseslounge_myDashboard_myProfile.user_profile_nurse_edit_events($params, $isDashboardSetting, $profile);\n }else\n if($profile == 5){\n nurseslounge_myDashboard_myProfile.user_profile_nurse_faculty_edit_events($params, $isDashboardSetting);\n }\n }\n $(\"#nurseslounge-home-my-profile-edit-modal\").on('hidden.bs.modal', function () {\n $(\"#nurseslounge-home-my-profile-edit-modal form\")[0].reset();\n $(\"#nurseslounge-home-my-profile-edit-modal form .nursing-recruiter\").hide();\n $(\"#nurseslounge-home-my-profile-edit-modal form .organization-representative\").hide();\n $(\"#nurseslounge-home-my-profile-edit-modal form .nursing-student\").hide();\n $(\"#nurseslounge-home-my-profile-edit-modal form .nurse\").hide();\n $(\"#nurseslounge-home-my-profile-edit-modal form .nurse-faculty\").hide();\n }).modal('show');\n }\n });\n }\n }\n });\n },\n user_profile_recruiter_edit_events:function($params, $isDashboardSetting){\n\n if(!$isDashboardSetting){\n $(\"#nurseslounge-home-my-profile-edit-modal .nursing-recruiter-employer\").hide();\n }else{\n $(\"#nurseslounge-home-my-profile-edit-modal .nursing-recruiter-employer\").show();\n }\n\n nurseslounge_myDashboard_myProfile.user_profile_recruiter_validate($params, function($form){\n nurseslounge_myDashboard_myProfile.user_profile_edit_request($.extend({}, $params, {id:$params.id},libs.getObjForm($form)));\n });\n\n $(\"#nurseslounge-home-my-profile-edit-modal form select[name='nursingRecruiterEmployerType']\").val($params.employer_type_id);\n $(\"#nurseslounge-home-my-profile-edit-modal form input[name='nursingRecruiterEmployerName']\").val($params.nursingRecruiterEmployerName.join(','));\n $(\"#nurseslounge-home-my-profile-edit-modal form input[name='nursingRecruiterJobTitle']\").val($params.job_title);\n\n nurseslounge_myDashboard_myProfile.general_autocomplete(\n \"#nurseslounge-home-my-profile-edit-modal form\",\n \"input[name='nursingRecruiterEmployerName']\",\n null,\n \"/signup/nursing/recruiter/employer/type\",\n 1,\n $.extend({}, $params, {type:['employers']})\n );\n //nurseslounge_myDashboard_myProfile.multiple_autocomplete(\"#nurseslounge-home-my-profile-edit-modal form\",\"input[name='nursingRecruiterEmployerName']\",\"/signup/nursing/recruiter/employer/type\");\n //nurseslounge_myDashboard_myProfile.general_autocomplete(\"#nurseslounge-home-my-profile-edit-modal form\",\"input[name='nursingRecruiterJobTitle']\",\"input[name='nursingRecruiterJobTitleID']\",\"/signup/nursing/recruiter/job/title\", 1);\n\n $(\"#nurseslounge-home-my-profile-edit-modal form .nursing-recruiter\").show();\n $(\"#nurseslounge-home-my-profile-edit-modal .specialty\").show();\n },\n user_profile_recruiter_validate:function($params, cback){\n var $validator;\n try {\n $validator = $(\"#nurseslounge-home-my-profile-edit-modal form\").validate();\n $validator.destroy();\n }catch (e) {\n\n }\n $validator = $(\"#nurseslounge-home-my-profile-edit-modal form\").validate({\n onsubmit: true,\n debug: false,\n ignore: \"*:not(.validate)\",\n rules: {\n password: {\n required: false,\n minlength: 8,\n maxlength: 191\n },\n retypePassword: {\n required: false,\n equalTo: \"#nurseslounge-home-my-profile-edit-modal form input[name='password']\"\n },\n firstName: {\n required: true,\n maxlength: 191\n },\n lastName: {\n required: true,\n maxlength: 191\n },\n email: {\n required: function(){\n var $form = $(\"#nurseslounge-home-my-profile-edit-modal form\");\n return $form.find(\".change-password\").is(':visible');\n },\n minlength: 3,\n maxlength: 191,\n email:true,\n remote: {\n url: \"/signup/email/exist\",\n type: \"post\",\n data: {\n email: function(){\n return $(\"#nurseslounge-home-my-profile-edit-modal form input[name='email']\").val();\n },\n emailSaved: $params.email\n }\n }\n },\n state: {\n required: true\n },\n city: {\n required: false\n },\n zipCode: {\n required: function(){\n return $(\"#nurseslounge-home-my-profile-edit-modal form .postal-code\").is(':visible');\n },\n minlength: 3,\n maxlength: 191\n },\n profile: {\n required: function(){\n return $(\"#nurseslounge-home-my-profile-edit-modal form .profile-type\").is(':visible');\n }\n },\n nursingRecruiterEmployerType: {\n required: false\n },\n nursingRecruiterEmployerName: {\n required: false\n },\n nursingRecruiterJobTitle: {\n required: false\n }\n },\n messages: {\n password: {\n required: \"The new password is not required\",\n minlength: \"The new password must have at least 8 characters\",\n maxlength: \"The new password cannot exceed 191 characters\"\n },\n retypePassword: {\n required: \"The retype password is not required\",\n equalTo: \"The retype password must be identical\"\n },\n firstName: {\n required: \"The first name is required\",\n maxlength: \"The first name cannot exceed 191 characters\"\n },\n lastName: {\n required: \"The last name is required\",\n maxlength: \"The last name cannot exceed 191 characters\"\n },\n email: {\n required: \"The email is required\",\n minlength: \"The email must have at least 3 characters\",\n maxlength: \"The email cannot exceed 191 characters\",\n email:\"The email is invalid\",\n remote:\"The email exist, choose another\"\n },\n state: {\n required: \"The state is required\"\n },\n city: {\n required: \"The city is not required\"\n },\n zipCode: {\n required: \"The zip code is required\",\n minlength: \"The zip code must have at least 3 characters\",\n maxlength: \"The zip code cannot exceed 191 characters\"\n },\n profile: {\n required: \"The profile is required\"\n },\n nursingRecruiterEmployerType: {\n required: \"The employer type is not required\"\n },\n nursingRecruiterEmployerName: {\n required: \"The employer name is not required\"\n },\n nursingRecruiterJobTitle: {\n required: \"The job title is not required\"\n },\n },\n errorPlacement: function($error, $element){\n var $ele = $($element);\n var $name = $ele.attr(\"name\");\n if(!$ele.hasClass('is-invalid')){\n $ele.addClass('is-invalid');\n }\n $(\".\"+$name+\"_validate\").html($($error).text()).show();\n },\n success: function($error, $element) {\n var $ele = $($element);\n var $name = $ele.attr(\"name\");\n if($ele.hasClass('is-invalid')){\n $ele.removeClass('is-invalid');\n }\n $(\".\"+$name+\"_validate\").html('').hide();\n },\n submitHandler: function($form) {\n cback($form);\n return false;\n }\n });\n },\n user_profile_organization_representative_edit_events:function($params, $isDashboardSetting){\n\n if(!$isDashboardSetting){\n $(\"#nurseslounge-home-my-profile-edit-modal .organization-representative-type\").hide();\n $(\"#nurseslounge-home-my-profile-edit-modal .organization-representative-organization\").hide();\n }else{\n $(\"#nurseslounge-home-my-profile-edit-modal .organization-representative-type\").show();\n $(\"#nurseslounge-home-my-profile-edit-modal .organization-representative-organization\").show();\n }\n\n nurseslounge_myDashboard_myProfile.user_profile_organization_representative_validate($params, function($form){\n nurseslounge_myDashboard_myProfile.user_profile_edit_request($.extend({}, $params, {id:$params.id},libs.getObjForm($form)));\n });\n\n $(\"#nurseslounge-home-my-profile-edit-modal form select[name='organizationRepresentativeOrganizationType']\").val($params.organization_type_id);\n $(\"#nurseslounge-home-my-profile-edit-modal form input[name='organizationRepresentativeOrganization']\").val($params.organizationRepresentativeOrganization.join(','));\n $(\"#nurseslounge-home-my-profile-edit-modal form input[name='organizationRepresentativeJobTitle']\").val($params.job_title);\n\n nurseslounge_myDashboard_myProfile.general_autocomplete(\n \"#nurseslounge-home-my-profile-edit-modal form\",\n \"input[name='organizationRepresentativeOrganization']\",\n null,\n \"/signup/nursing/recruiter/employer/type\",\n 1,\n $.extend({}, $params, {type:['employers', 'schools']})\n );\n //nurseslounge_myDashboard_myProfile.general_autocomplete(\"#nurseslounge-home-my-profile-edit-modal form\",\"input[name='organizationRepresentativeJobTitle']\",\"input[name='organizationRepresentativeJobTitleID']\",\"/signup/organization/representative/job/title\", 1);\n\n $(\"#nurseslounge-home-my-profile-edit-modal form .organization-representative\").show();\n $(\"#nurseslounge-home-my-profile-edit-modal .specialty\").show();\n },\n user_profile_organization_representative_validate:function($params, cback){\n var $validator;\n try {\n $validator = $(\"#nurseslounge-home-my-profile-edit-modal form\").validate();\n $validator.destroy();\n }catch (e) {\n\n }\n $validator = $(\"#nurseslounge-home-my-profile-edit-modal form\").validate({\n onsubmit: true,\n debug: false,\n ignore: \"*:not(.validate)\",\n rules: {\n password: {\n required: false,\n minlength: 8,\n maxlength: 191\n },\n retypePassword: {\n required: false,\n equalTo: \"#nurseslounge-home-my-profile-edit-modal form input[name='password']\"\n },\n firstName: {\n required: true,\n maxlength: 191\n },\n lastName: {\n required: true,\n maxlength: 191\n },\n email: {\n required: function(){\n var $form = $(\"#nurseslounge-home-my-profile-edit-modal form\");\n return $form.find(\".change-password\").is(':visible');\n },\n minlength: 3,\n maxlength: 191,\n email:true,\n remote: {\n url: \"/signup/email/exist\",\n type: \"post\",\n data: {\n email: function(){\n return $(\"#nurseslounge-home-my-profile-edit-modal form input[name='email']\").val();\n },\n emailSaved: $params.email\n }\n }\n },\n state: {\n required: true\n },\n city: {\n required: false\n },\n zipCode: {\n required: function(){\n return $(\"#nurseslounge-home-my-profile-edit-modal form .postal-code\").is(':visible');\n },\n minlength: 3,\n maxlength: 191\n },\n profile: {\n required: function(){\n return $(\"#nurseslounge-home-my-profile-edit-modal form .profile-type\").is(':visible');\n }\n },\n organizationRepresentativeOrganizationType: {\n required: function(){\n return $(\"#nurseslounge-home-my-profile-edit-modal form .organization-representative-type\").is(':visible');\n }\n },\n organizationRepresentativeOrganization: {\n required: function(){\n return $(\"#nurseslounge-home-my-profile-edit-modal form .organization-representative-organization\").is(':visible');\n }\n },\n organizationRepresentativeJobTitle: {\n required: false\n }\n },\n messages: {\n password: {\n required: \"The new password is not required\",\n minlength: \"The new password must have at least 8 characters\",\n maxlength: \"The new password cannot exceed 191 characters\"\n },\n retypePassword: {\n required: \"The retype password is not required\",\n equalTo: \"The retype password must be identical\"\n },\n firstName: {\n required: \"The first name is required\",\n maxlength: \"The first name cannot exceed 191 characters\"\n },\n lastName: {\n required: \"The last name is required\",\n maxlength: \"The last name cannot exceed 191 characters\"\n },\n email: {\n required: \"The email is required\",\n minlength: \"The email must have at least 3 characters\",\n maxlength: \"The email cannot exceed 191 characters\",\n email:\"The email is invalid\",\n remote:\"The email exist, choose another\"\n },\n state: {\n required: \"The state is required\"\n },\n city: {\n required: \"The city is not required\"\n },\n zipCode: {\n required: \"The zip code is required\",\n minlength: \"The zip code must have at least 3 characters\",\n maxlength: \"The zip code cannot exceed 191 characters\"\n },\n profile: {\n required: \"The profile is required\"\n },\n organizationRepresentativeOrganizationType: {\n required: \"The organization type is required\"\n },\n organizationRepresentativeOrganization: {\n required: \"The organization is required\"\n },\n organizationRepresentativeJobTitle: {\n required: \"The job title is not required\"\n }\n },\n errorPlacement: function($error, $element){\n var $ele = $($element);\n var $name = $ele.attr(\"name\");\n if(!$ele.hasClass('is-invalid')){\n $ele.addClass('is-invalid');\n }\n $(\".\"+$name+\"_validate\").html($($error).text()).show();\n },\n success: function($error, $element) {\n var $ele = $($element);\n var $name = $ele.attr(\"name\");\n if($ele.hasClass('is-invalid')){\n $ele.removeClass('is-invalid');\n }\n $(\".\"+$name+\"_validate\").html('').hide();\n },\n submitHandler: function($form) {\n cback($form);\n return false;\n }\n });\n },\n user_profile_nursing_student_edit_events:function($params, $isDashboardSetting, $profile){\n var $additionalDegreesInput = $(\"#nurseslounge-home-my-profile-edit-modal input[name='nursingStudentAdditionalDegrees']\");\n var $tagifyTags = libs.memoryGet('nurseslounge_myDashboard_myProfile_nursing_student_additional_degrees');\n if($tagifyTags){\n try{\n $tagifyTags.DOM.input.classList.remove('tagify__input--outside');\n $tagifyTags.DOM.input.classList.remove('tagify__input');\n $tagifyTags.removeAllTags();\n $tagifyTags.destroy();\n }catch ($e) {\n\n }\n }\n if($profile == 7) {\n $tagifyTags = new Tagify($additionalDegreesInput[0]);\n $tagifyTags.DOM.input.classList.add('tagify__input--outside');\n $tagifyTags.DOM.scope.parentNode.insertBefore($tagifyTags.DOM.input, $tagifyTags.DOM.scope);\n var $designationLevel = $params.designation_level;\n $designationLevel = $designationLevel.filter(function($designation){\n return $designation.profile_id == $profile\n });\n for (var $i in $designationLevel) {\n $tagifyTags.addTags($designationLevel[$i].designation);\n }\n libs.memorySave('nurseslounge_myDashboard_myProfile_nursing_student_additional_degrees', $tagifyTags);\n $(\"#nurseslounge-home-my-profile-edit-modal .nursing-student-additional-degrees\").show();\n }else{\n $(\"#nurseslounge-home-my-profile-edit-modal .nursing-student-additional-degrees\").hide();\n }\n if(!$isDashboardSetting){\n $(\"#nurseslounge-home-my-profile-edit-modal .nursing-student-degree\").hide();\n $(\"#nurseslounge-home-my-profile-edit-modal .nursing-student-school\").hide();\n }else{\n $(\"#nurseslounge-home-my-profile-edit-modal .nursing-student-degree\").show();\n $(\"#nurseslounge-home-my-profile-edit-modal .nursing-student-school\").show();\n }\n\n nurseslounge_myDashboard_myProfile.user_profile_nursing_student_validate($params, function($form){\n var $additionalDegrees = [];\n var $additionalDegreesVal = $additionalDegreesInput.val();\n if($additionalDegreesVal != '') {\n var $selectedTags = JSON.parse($additionalDegreesVal);\n for (var $i in $selectedTags) {\n $additionalDegrees.push($selectedTags[$i].value);\n }\n }\n $params = $.extend({}, $params, {additionalDegrees:$additionalDegrees});\n nurseslounge_myDashboard_myProfile.user_profile_edit_request($.extend({}, $params, {id:$params.id},libs.getObjForm($form)));\n });\n\n $(\"#nurseslounge-home-my-profile-edit-modal form select[name='nursingStudentDegreeType']\").val($params.nursingStudentDegreeType);\n $(\"#nurseslounge-home-my-profile-edit-modal form input[name='nursingStudentSchoolAttended']\").val($params.nursingStudentSchoolAttended);\n $(\"#nurseslounge-home-my-profile-edit-modal form select[name='nursingStudentMonth']\").val($params.month);\n $(\"#nurseslounge-home-my-profile-edit-modal form select[name='nursingStudentYear']\").val($params.year);\n\n nurseslounge_myDashboard_myProfile.general_autocomplete(\n \"#nurseslounge-home-my-profile-edit-modal form\",\n \"input[name='nursingStudentSchoolAttended']\",\n null,\n \"/signup/nursing/recruiter/employer/type\",\n 1,\n $.extend({}, $params, {type:['schools']})\n );\n\n try{\n $(\"#nurseslounge-home-my-profile-edit-modal form select[name='nursingStudentDegreeType']\").chosen(\"destroy\");\n }catch (e) {}\n $(\"#nurseslounge-home-my-profile-edit-modal form select[name='nursingStudentDegreeType']\").chosen();\n\n $(\"#nurseslounge-home-my-profile-edit-modal form .nursing-student\").show();\n $(\"#nurseslounge-home-my-profile-edit-modal .specialty\").hide();\n\n },\n user_profile_nursing_student_validate:function($params, cback){\n var $validator;\n try {\n $validator = $(\"#nurseslounge-home-my-profile-edit-modal form\").validate();\n $validator.destroy();\n }catch (e) {\n\n }\n $validator = $(\"#nurseslounge-home-my-profile-edit-modal form\").validate({\n onsubmit: true,\n debug: false,\n ignore: \"*:not(.validate)\",\n rules: {\n password: {\n required: false,\n minlength: 8,\n maxlength: 191\n },\n retypePassword: {\n required: false,\n equalTo: \"#nurseslounge-home-my-profile-edit-modal form input[name='password']\"\n },\n firstName: {\n required: true,\n maxlength: 191\n },\n lastName: {\n required: true,\n maxlength: 191\n },\n email: {\n required: function(){\n var $form = $(\"#nurseslounge-home-my-profile-edit-modal form\");\n return $form.find(\".change-password\").is(':visible');\n },\n minlength: 3,\n maxlength: 191,\n email:true,\n remote: {\n url: \"/signup/email/exist\",\n type: \"post\",\n data: {\n email: function(){\n return $(\"#nurseslounge-home-my-profile-edit-modal form input[name='email']\").val();\n },\n emailSaved: $params.email\n }\n }\n },\n state: {\n required: true\n },\n city: {\n required: false\n },\n zipCode: {\n required: function(){\n return $(\"#nurseslounge-home-my-profile-edit-modal form .postal-code\").is(':visible');\n },\n minlength: 3,\n maxlength: 191\n },\n profile: {\n required: function(){\n return $(\"#nurseslounge-home-my-profile-edit-modal form .profile-type\").is(':visible');\n }\n },\n nursingStudentDegreeType: {\n required: function(){\n return $(\"#nurseslounge-home-my-profile-edit-modal form .nursing-student-degree\").is(':visible');\n }\n },\n nursingStudentSchoolAttended: {\n required: function(){\n return $(\"#nurseslounge-home-my-profile-edit-modal form .nursing-student-school\").is(':visible');\n }\n },\n nursingStudentMonth: {\n required: function(){\n return $(\"#nurseslounge-home-my-profile-edit-modal form .nursing-student-expected-graduation\").is(':visible');\n }\n },\n nursingStudentYear: {\n required: function(){\n return $(\"#nurseslounge-home-my-profile-edit-modal form .nursing-student-expected-graduation\").is(':visible');\n }\n }\n },\n messages: {\n password: {\n required: \"The new password is not required\",\n minlength: \"The new password must have at least 8 characters\",\n maxlength: \"The new password cannot exceed 191 characters\"\n },\n retypePassword: {\n required: \"The retype password is not required\",\n equalTo: \"The retype password must be identical\"\n },\n firstName: {\n required: \"The first name is required\",\n maxlength: \"The first name cannot exceed 191 characters\"\n },\n lastName: {\n required: \"The last name is required\",\n maxlength: \"The last name cannot exceed 191 characters\"\n },\n email: {\n required: \"The email is required\",\n minlength: \"The email must have at least 3 characters\",\n maxlength: \"The email cannot exceed 191 characters\",\n email:\"The email is invalid\",\n remote:\"The email exist, choose another\"\n },\n state: {\n required: \"The state is required\"\n },\n city: {\n required: \"The city is not required\"\n },\n zipCode: {\n required: \"The zip code is required\",\n minlength: \"The zip code must have at least 3 characters\",\n maxlength: \"The zip code cannot exceed 191 characters\"\n },\n profile: {\n required: \"The profile is required\"\n },\n nursingStudentDegreeType: {\n required: \"The degree type is required\"\n },\n nursingStudentSchoolAttended: {\n required: \"The school name is required\"\n },\n nursingStudentMonth: {\n required: \"The month is required\"\n },\n nursingStudentYear: {\n required: \"The year is required\"\n }\n },\n errorPlacement: function($error, $element){\n var $ele = $($element);\n var $name = $ele.attr(\"name\");\n if(!$ele.hasClass('is-invalid')){\n $ele.addClass('is-invalid');\n }\n $(\".\"+$name+\"_validate\").html($($error).text()).show();\n },\n success: function($error, $element) {\n var $ele = $($element);\n var $name = $ele.attr(\"name\");\n if($ele.hasClass('is-invalid')){\n $ele.removeClass('is-invalid');\n }\n $(\".\"+$name+\"_validate\").html('').hide();\n },\n submitHandler: function($form) {\n if($(\"#nurseslounge-home-my-profile-edit-modal form select[name='nursingStudentDegreeType']\").val() == null){\n $validator.showErrors({ nursingStudentDegreeType: \"The degree type is required\" });\n return false;\n }\n cback($form);\n return false;\n }\n });\n },\n user_profile_nurse_edit_events:function($params, $isDashboardSetting, $profile){\n var $additionalDegreesInput = $(\"#nurseslounge-home-my-profile-edit-modal input[name='nurseAdditionalDegrees']\");\n var $tagifyTags = libs.memoryGet('nurseslounge_myDashboard_myProfile_nurse_additional_degrees');\n if($tagifyTags){\n try{\n $tagifyTags.DOM.input.classList.remove('tagify__input--outside');\n $tagifyTags.DOM.input.classList.remove('tagify__input');\n $tagifyTags.removeAllTags();\n $tagifyTags.destroy();\n }catch ($e) {\n\n }\n }\n if($profile == 6) {\n $tagifyTags = new Tagify($additionalDegreesInput[0]);\n $tagifyTags.DOM.input.classList.add('tagify__input--outside');\n $tagifyTags.DOM.scope.parentNode.insertBefore($tagifyTags.DOM.input, $tagifyTags.DOM.scope);\n var $designationLevel = $params.designation_level;\n $designationLevel = $designationLevel.filter(function($designation){\n return $designation.profile_id == $profile\n });\n for (var $i in $designationLevel) {\n $tagifyTags.addTags($designationLevel[$i].designation);\n }\n libs.memorySave('nurseslounge_myDashboard_myProfile_nurse_additional_degrees', $tagifyTags);\n $(\"#nurseslounge-home-my-profile-edit-modal .nurse-additional-degrees\").show();\n }else{\n $(\"#nurseslounge-home-my-profile-edit-modal .nurse-additional-degrees\").hide();\n }\n if(!$isDashboardSetting){\n $(\"#nurseslounge-home-my-profile-edit-modal .nurse-school-name\").hide();\n $(\"#nurseslounge-home-my-profile-edit-modal .nurse-specialty\").hide();\n $(\"#nurseslounge-home-my-profile-edit-modal .nurse-years-of-experience\").hide();\n $(\"#nurseslounge-home-my-profile-edit-modal .nurse-employer\").hide();\n }else{\n $(\"#nurseslounge-home-my-profile-edit-modal .nurse-school-name\").show();\n $(\"#nurseslounge-home-my-profile-edit-modal .nurse-specialty\").show();\n $(\"#nurseslounge-home-my-profile-edit-modal .nurse-years-of-experience\").show();\n $(\"#nurseslounge-home-my-profile-edit-modal .nurse-employer\").show();\n }\n\n nurseslounge_myDashboard_myProfile.user_profile_nurse_validate($params, function($form){\n var $additionalDegrees = [];\n var $additionalDegreesVal = $additionalDegreesInput.val();\n if($additionalDegreesVal != '') {\n var $selectedTags = JSON.parse($additionalDegreesVal);\n for (var $i in $selectedTags) {\n $additionalDegrees.push($selectedTags[$i].value);\n }\n }\n $params = $.extend({}, $params, {additionalDegrees:$additionalDegrees});\n nurseslounge_myDashboard_myProfile.user_profile_edit_request($.extend({}, $params, {id:$params.id},libs.getObjForm($form)));\n });\n\n $(\"#nurseslounge-home-my-profile-edit-modal form select[name='nurseNursingDegrees']\").val($params.nurseNursingDegrees);\n $(\"#nurseslounge-home-my-profile-edit-modal form input[name='nurseNursingSchoolAttended']\").val($params.nurseNursingSchoolAttended.join(','));\n $(\"#nurseslounge-home-my-profile-edit-modal form select[name='nurseSpecialty']\").val($params.nurseSpecialty);\n $(\"#nurseslounge-home-my-profile-edit-modal form input[name='nurseJobTitle']\").val($params.job_title);\n $(\"#nurseslounge-home-my-profile-edit-modal form input[name='nurseEmployer']\").val($params.nurseEmployer.join(','));\n $(\"#nurseslounge-home-my-profile-edit-modal form select[name='nurseYearsOfExperience']\").val($params.nurseYearsOfExperience);\n\n /*\n try{\n $(\"#nurseslounge-home-my-profile-edit-modal form select[name='nurseYearsOfExperience']\").chosen(\"destroy\");\n }catch (e) {}\n $(\"#nurseslounge-home-my-profile-edit-modal form select[name='nurseYearsOfExperience']\").chosen();\n */\n\n try{\n $(\"#nurseslounge-home-my-profile-edit-modal form select[name='nurseNursingDegrees']\").chosen(\"destroy\");\n }catch (e) {}\n $(\"#nurseslounge-home-my-profile-edit-modal form select[name='nurseNursingDegrees']\").chosen();\n\n try{\n $(\"#nurseslounge-home-my-profile-edit-modal form select[name='nurseSpecialty']\").chosen(\"destroy\");\n }catch (e) {}\n $(\"#nurseslounge-home-my-profile-edit-modal form select[name='nurseSpecialty']\").chosen();\n\n nurseslounge_myDashboard_myProfile.general_autocomplete(\n \"#nurseslounge-home-my-profile-edit-modal form\",\n \"input[name='nurseNursingSchoolAttended']\",\n null,\n \"/signup/nursing/recruiter/employer/type\",\n 1,\n $.extend({}, $params, {type:['schools']})\n );\n //nurseslounge_myDashboard_myProfile.general_autocomplete(\"#nurseslounge-home-my-profile-edit-modal form\",\"input[name='nurseJobTitle']\",\"input[name='nurseJobTitleID']\",\"/signup/nurse/job/title\", 1);\n nurseslounge_myDashboard_myProfile.general_autocomplete(\n \"#nurseslounge-home-my-profile-edit-modal form\",\n \"input[name='nurseEmployer']\",\n null,\n \"/signup/nurse/employer\",\n 1,\n $.extend({}, $params, {type:['employers']})\n );\n\n $(\"#nurseslounge-home-my-profile-edit-modal form .nurse\").show();\n $(\"#nurseslounge-home-my-profile-edit-modal .specialty\").show();\n },\n user_profile_nurse_validate:function($params, cback){\n var $validator;\n try {\n $validator = $(\"#nurseslounge-home-my-profile-edit-modal form\").validate();\n $validator.destroy();\n }catch (e) {\n\n }\n $validator = $(\"#nurseslounge-home-my-profile-edit-modal form\").validate({\n onsubmit: true,\n debug: false,\n ignore: \"*:not(.validate)\",\n rules: {\n password: {\n required: false,\n minlength: 8,\n maxlength: 191\n },\n retypePassword: {\n required: false,\n equalTo: \"#nurseslounge-home-my-profile-edit-modal form input[name='password']\"\n },\n firstName: {\n required: true,\n maxlength: 191\n },\n lastName: {\n required: true,\n maxlength: 191\n },\n email: {\n required: function(){\n var $form = $(\"#nurseslounge-home-my-profile-edit-modal form\");\n return $form.find(\".change-password\").is(':visible');\n },\n minlength: 3,\n maxlength: 191,\n email:true,\n remote: {\n url: \"/signup/email/exist\",\n type: \"post\",\n data: {\n email: function(){\n return $(\"#nurseslounge-home-my-profile-edit-modal form input[name='email']\").val();\n },\n emailSaved: $params.email\n }\n }\n },\n state: {\n required: true\n },\n city: {\n required: false\n },\n zipCode: {\n required: function(){\n return $(\"#nurseslounge-home-my-profile-edit-modal form .postal-code\").is(':visible');\n },\n minlength: 3,\n maxlength: 191\n },\n profile: {\n required: function(){\n return $(\"#nurseslounge-home-my-profile-edit-modal form .profile-type\").is(':visible');\n }\n },\n nurseNursingDegrees: {\n required: function(){\n return $(\"#nurseslounge-home-my-profile-edit-modal form .nurse-destination-level\").is(':visible');\n }\n },\n nurseNursingSchoolAttended: {\n required: function(){\n return $(\"#nurseslounge-home-my-profile-edit-modal form .nurse-school-name\").is(':visible');\n }\n },\n nurseSpecialty: {\n required: function(){\n return $(\"#nurseslounge-home-my-profile-edit-modal form .nurse-specialty\").is(':visible');\n }\n },\n nurseYearsOfExperience: {\n required: function(){\n return $(\"#nurseslounge-home-my-profile-edit-modal form .nurse-years-of-experience\").is(':visible');\n }\n },\n nurseJobTitle: {\n required: false\n },\n nurseEmployer: {\n required: false\n }\n },\n messages: {\n password: {\n required: \"The new password is not required\",\n minlength: \"The new password must have at least 8 characters\",\n maxlength: \"The new password cannot exceed 191 characters\"\n },\n retypePassword: {\n required: \"The retype password is not required\",\n equalTo: \"The retype password must be identical\"\n },\n firstName: {\n required: \"The first name is required\",\n maxlength: \"The first name cannot exceed 191 characters\"\n },\n lastName: {\n required: \"The last name is required\",\n maxlength: \"The last name cannot exceed 191 characters\"\n },\n email: {\n required: \"The email is required\",\n minlength: \"The email must have at least 3 characters\",\n maxlength: \"The email cannot exceed 191 characters\",\n email:\"The email is invalid\",\n remote:\"The email exist, choose another\"\n },\n state: {\n required: \"The state is required\"\n },\n city: {\n required: \"The city is not required\"\n },\n zipCode: {\n required: \"The zip code is required\",\n minlength: \"The zip code must have at least 3 characters\",\n maxlength: \"The zip code cannot exceed 191 characters\"\n },\n profile: {\n required: \"The profile is required\"\n },\n nurseNursingDegrees: {\n required: \"The nursing degrees is required\"\n },\n nurseNursingSchoolAttended: {\n required: \"The school name is required\"\n },\n nurseSpecialty: {\n required: \"The specialty is required\"\n },\n nurseYearsOfExperience: {\n required: \"The year of experience is required\"\n },\n nurseJobTitle: {\n required: \"The job title is not required\"\n },\n nurseEmployer: {\n required: \"The employer is not required\"\n }\n },\n errorPlacement: function($error, $element){\n var $ele = $($element);\n var $name = $ele.attr(\"name\");\n if(!$ele.hasClass('is-invalid')){\n $ele.addClass('is-invalid');\n }\n $(\".\"+$name+\"_validate\").html($($error).text()).show();\n },\n success: function($error, $element) {\n var $ele = $($element);\n var $name = $ele.attr(\"name\");\n if($ele.hasClass('is-invalid')){\n $ele.removeClass('is-invalid');\n }\n $(\".\"+$name+\"_validate\").html('').hide();\n },\n submitHandler: function($form) {\n if($(\"#nurseslounge-home-my-profile-edit-modal form select[name='nurseNursingDegrees']\").val() == null){\n $validator.showErrors({ nurseNursingDegrees: \"The nursing degrees is required\" });\n return false;\n }\n if($(\"#nurseslounge-home-my-profile-edit-modal form select[name='nurseSpecialty']\").val() == null){\n $validator.showErrors({ nurseSpecialty: \"The specialty is required\" });\n return false;\n }\n cback($form);\n return false;\n }\n });\n },\n user_profile_nurse_faculty_edit_events:function($params, $isDashboardSetting){\n\n if(!$isDashboardSetting){\n $(\"#nurseslounge-home-my-profile-edit-modal .nurse-faculty-school-name\").hide();\n $(\"#nurseslounge-home-my-profile-edit-modal .nurse-faculty-specialty\").hide();\n $(\"#nurseslounge-home-my-profile-edit-modal .nurse-faculty-years-of-experience\").hide();\n $(\"#nurseslounge-home-my-profile-edit-modal .nurse-faculty-employer\").hide();\n }else{\n $(\"#nurseslounge-home-my-profile-edit-modal .nurse-faculty-school-name\").show();\n $(\"#nurseslounge-home-my-profile-edit-modal .nurse-faculty-specialty\").show();\n $(\"#nurseslounge-home-my-profile-edit-modal .nurse-faculty-years-of-experience\").show();\n $(\"#nurseslounge-home-my-profile-edit-modal .nurse-faculty-employer\").show();\n }\n\n nurseslounge_myDashboard_myProfile.user_profile_nurse_faculty_validate($params, function($form){\n nurseslounge_myDashboard_myProfile.user_profile_edit_request($.extend({}, $params, {id:$params.id},libs.getObjForm($form)));\n });\n\n $(\"#nurseslounge-home-my-profile-edit-modal form select[name='nurseFacultyNursingDegrees']\").val($params.nurseFacultyNursingDegrees);\n $(\"#nurseslounge-home-my-profile-edit-modal form input[name='nurseFacultyNursingSchoolAttended']\").val($params.nurseFacultyNursingSchoolAttended.join(','));\n $(\"#nurseslounge-home-my-profile-edit-modal form select[name='nurseFacultySpecialty']\").val($params.nurseFacultySpecialty);\n $(\"#nurseslounge-home-my-profile-edit-modal form select[name='nurseFacultyYearsOfExperience']\").val($params.nurseFacultyYearsOfExperience);\n $(\"#nurseslounge-home-my-profile-edit-modal form input[name='nurseFacultyEmployer']\").val($params.nurseFacultyEmployer.join(','));\n $(\"#nurseslounge-home-my-profile-edit-modal form input[name='nurseFacultyJobTitle']\").val($params.job_title);\n\n /*\n try{\n $(\"#nurseslounge-home-my-profile-edit-modal form select[name='nurseYearsOfExperience']\").chosen(\"destroy\");\n }catch (e) {}\n $(\"#nurseslounge-home-my-profile-edit-modal form select[name='nurseYearsOfExperience']\").chosen();\n */\n\n try{\n $(\"#nurseslounge-home-my-profile-edit-modal form select[name='nurseFacultyNursingDegrees']\").chosen(\"destroy\");\n }catch (e) {}\n $(\"#nurseslounge-home-my-profile-edit-modal form select[name='nurseFacultyNursingDegrees']\").chosen();\n\n try{\n $(\"#nurseslounge-home-my-profile-edit-modal form select[name='nurseFacultySpecialty']\").chosen(\"destroy\");\n }catch (e) {}\n $(\"#nurseslounge-home-my-profile-edit-modal form select[name='nurseFacultySpecialty']\").chosen();\n\n nurseslounge_myDashboard_myProfile.general_autocomplete(\n \"#nurseslounge-home-my-profile-edit-modal form\",\n \"input[name='nurseFacultyNursingSchoolAttended']\",\n null,\n \"/signup/nursing/recruiter/employer/type\",\n 1,\n $.extend({}, $params, {type:['schools']})\n );\n //nurseslounge_myDashboard_myProfile.general_autocomplete(\"#nurseslounge-home-my-profile-edit-modal form\",\"input[name='nurseJobTitle']\",\"input[name='nurseJobTitleID']\",\"/signup/nurse/job/title\", 1);\n nurseslounge_myDashboard_myProfile.general_autocomplete(\n \"#nurseslounge-home-my-profile-edit-modal form\",\n \"input[name='nurseFacultyEmployer']\",\n null,\n \"/signup/nursing/recruiter/employer/type\",\n 1,\n $.extend({}, $params, {type:['schools']})\n );\n\n $(\"#nurseslounge-home-my-profile-edit-modal form .nurse-faculty\").show();\n },\n user_profile_nurse_faculty_validate:function($params, cback){\n var $validator;\n try {\n $validator = $(\"#nurseslounge-home-my-profile-edit-modal form\").validate();\n $validator.destroy();\n }catch (e) {\n\n }\n $validator = $(\"#nurseslounge-home-my-profile-edit-modal form\").validate({\n onsubmit: true,\n debug: false,\n ignore: \"*:not(.validate)\",\n rules: {\n password: {\n required: false,\n minlength: 8,\n maxlength: 191\n },\n retypePassword: {\n required: false,\n equalTo: \"#nurseslounge-home-my-profile-edit-modal form input[name='password']\"\n },\n firstName: {\n required: true,\n maxlength: 191\n },\n lastName: {\n required: true,\n maxlength: 191\n },\n email: {\n required: function(){\n var $form = $(\"#nurseslounge-home-my-profile-edit-modal form\");\n return $form.find(\".change-password\").is(':visible');\n },\n minlength: 3,\n maxlength: 191,\n email:true,\n remote: {\n url: \"/signup/email/exist\",\n type: \"post\",\n data: {\n email: function(){\n return $(\"#nurseslounge-home-my-profile-edit-modal form input[name='email']\").val();\n },\n emailSaved: $params.email\n }\n }\n },\n state: {\n required: true\n },\n city: {\n required: false\n },\n zipCode: {\n required: function(){\n return $(\"#nurseslounge-home-my-profile-edit-modal form .postal-code\").is(':visible');\n },\n minlength: 3,\n maxlength: 191\n },\n profile: {\n required: function(){\n return $(\"#nurseslounge-home-my-profile-edit-modal form .profile-type\").is(':visible');\n }\n },\n nurseFacultyNursingDegrees: {\n required: function(){\n return $(\"#nurseslounge-home-my-profile-edit-modal form .nurse-faculty-destination-level\").is(':visible');\n }\n },\n nurseFacultyNursingSchoolAttended: {\n required: function(){\n return $(\"#nurseslounge-home-my-profile-edit-modal form .nurse-faculty-school-name\").is(':visible');\n }\n },\n nurseFacultySpecialty: {\n required: function(){\n return $(\"#nurseslounge-home-my-profile-edit-modal form .nurse-faculty-specialty\").is(':visible');\n }\n },\n nurseFacultyYearsOfExperience: {\n required: function(){\n return $(\"#nurseslounge-home-my-profile-edit-modal form .nurse-faculty-years-of-experience\").is(':visible');\n }\n },\n nurseFacultyEmployer: {\n required: false\n },\n nurseFacultyJobTitle: {\n required: false\n },\n },\n messages: {\n password: {\n required: \"The new password is not required\",\n minlength: \"The new password must have at least 8 characters\",\n maxlength: \"The new password cannot exceed 191 characters\"\n },\n retypePassword: {\n required: \"The retype password is not required\",\n equalTo: \"The retype password must be identical\"\n },\n firstName: {\n required: \"The first name is required\",\n maxlength: \"The first name cannot exceed 191 characters\"\n },\n lastName: {\n required: \"The last name is required\",\n maxlength: \"The last name cannot exceed 191 characters\"\n },\n email: {\n required: \"The email is required\",\n minlength: \"The email must have at least 3 characters\",\n maxlength: \"The email cannot exceed 191 characters\",\n email:\"The email is invalid\",\n remote:\"The email exist, choose another\"\n },\n state: {\n required: \"The state is required\"\n },\n city: {\n required: \"The city is not required\"\n },\n zipCode: {\n required: \"The zip code is required\",\n minlength: \"The zip code must have at least 3 characters\",\n maxlength: \"The zip code cannot exceed 191 characters\"\n },\n profile: {\n required: \"The profile is required\"\n },\n nurseFacultyNursingDegrees: {\n required: \"The nursing faculty degrees is required\"\n },\n nurseFacultyNursingSchoolAttended: {\n required: \"The nursing school i graduate from is required\"\n },\n nurseFacultySpecialty: {\n required: \"The specialty is required\"\n },\n nurseFacultyYearsOfExperience: {\n required: \"The year of experience is required\"\n },\n nurseFacultyEmployer: {\n required: \"The nursing school i currently teach at is not required\"\n },\n nurseFacultyJobTitle: {\n required: \"The job title is not required\"\n },\n },\n errorPlacement: function($error, $element){\n var $ele = $($element);\n var $name = $ele.attr(\"name\");\n if(!$ele.hasClass('is-invalid')){\n $ele.addClass('is-invalid');\n }\n $(\".\"+$name+\"_validate\").html($($error).text()).show();\n },\n success: function($error, $element) {\n var $ele = $($element);\n var $name = $ele.attr(\"name\");\n if($ele.hasClass('is-invalid')){\n $ele.removeClass('is-invalid');\n }\n $(\".\"+$name+\"_validate\").html('').hide();\n },\n submitHandler: function($form) {\n if($(\"#nurseslounge-home-my-profile-edit-modal form select[name='nurseFacultyNursingDegrees']\").val() == null){\n $validator.showErrors({ nurseFacultyNursingDegrees: \"The nursing faculty degrees is required\" });\n return false;\n }\n if($(\"#nurseslounge-home-my-profile-edit-modal form select[name='nurseFacultySpecialty']\").val() == null){\n $validator.showErrors({ nurseFacultySpecialty:\"The specialty is required\"});\n return false;\n }\n cback($form);\n return false;\n }\n });\n },\n user_profile_edit_request:function($params){\n var $jobsNearMe = $(\".nav-underline a[data-id='jobs_near_me']\");\n var $degreesForMe = $(\".nav-underline a[data-id='degrees_for_me']\");\n var $preceptors = $(\".nav-underline a[data-id='preceptors']\");\n var $ce = $(\".nav-underline a[data-id='continuing_education']\");\n var $myCalendar = $(\".nav-underline a[data-id='my_calendar']\");\n var $myCredentialVault = $(\".nav-underline a[data-id='my_credentials_vault']\");\n var $myFloatPool = $(\".nav-underline a[data-id='my_float_pool']\");\n var $nursesLounge = $(\"#nurseslounge-lounge\");\n var $scrollerLeft = $nursesLounge.find(\".nav-scroller-left\");\n var $scrollerRight = $nursesLounge.find(\".nav-scroller-right\");\n $.ajax({\n url:\"/myDashboard/myProfile/permissions/addUserRequest\",\n method: \"POST\",\n dataType: \"json\",\n data:$params,\n success: function ($data) {\n libs.expire($data);\n if(\n $data.status == 'success'\n ){\n var $profile = $data.data.profile_id;\n if($profile == 1 || $profile == 2){\n if(!$jobsNearMe.hasClass('d-none')){\n $jobsNearMe.addClass('d-none');\n }\n if(!$degreesForMe.hasClass('d-none')){\n $degreesForMe.addClass('d-none');\n }\n if(!$ce.hasClass('d-none')){\n $ce.addClass('d-none');\n }\n if(!$myCalendar.hasClass('d-none')){\n $myCalendar.addClass('d-none');\n }\n if(!$myCredentialVault.hasClass('d-none')){\n $myCredentialVault.addClass('d-none');\n }\n if(!$scrollerLeft.hasClass('d-none')){\n $scrollerLeft.addClass('d-none');\n }\n if(!$scrollerRight.hasClass('d-none')){\n $scrollerRight.addClass('d-none');\n }\n }else{\n if($jobsNearMe.hasClass('d-none')){\n $jobsNearMe.removeClass('d-none');\n }\n if($degreesForMe.hasClass('d-none')){\n $degreesForMe.removeClass('d-none');\n }\n if($ce.hasClass('d-none')){\n $ce.removeClass('d-none');\n }\n if($myCalendar.hasClass('d-none')){\n $myCalendar.removeClass('d-none');\n }\n if($myCredentialVault.hasClass('d-none')){\n $myCredentialVault.removeClass('d-none');\n }\n if($scrollerLeft.hasClass('d-none')){\n $scrollerLeft.removeClass('d-none');\n }\n if($scrollerRight.hasClass('d-none')){\n $scrollerRight.removeClass('d-none');\n }\n }\n if($profile == 6 || $profile == 7){\n if($preceptors.hasClass('d-none')){\n $preceptors.removeClass('d-none');\n }\n }else{\n if(!$preceptors.hasClass('d-none')){\n $preceptors.addClass('d-none');\n }\n }\n if($profile == 4 || $profile == 6 || $profile == 7){\n if($myFloatPool.hasClass('d-none')){\n $myFloatPool.removeClass('d-none');\n }\n }else{\n if(!$myFloatPool.hasClass('d-none')){\n $myFloatPool.addClass('d-none');\n }\n }\n $(\".nav.nav-underline\").scrollLeft(0);\n $scrollerLeft.fadeOut();\n $scrollerRight.fadeIn();\n libs.refreshBoxFrom('.box-profile', null, function(){\n nurseslounge_myDashboard_myProfile.profile({user_id:libs.memoryGet('user_id')});\n if(window.location.pathname == '/myDashboard/myProfile'){\n nurseslounge_myDashboard_myProfile.task_list_container(function($container){\n nurseslounge_myDashboard_myProfile.task_list($container, {user_id:libs.memoryGet('user_id')});\n });\n }\n if(window.location.pathname == '/myDashboard/activity') {\n nurseslounge_myDashboard_activity.task_list_container(function($container){\n nurseslounge_myDashboard_myProfile.task_list($container, {user_id:libs.memoryGet('user_id')});\n });\n var nlWall = $(window).nurseslounge_myDashboard_wall_get($params, 'nlWall');\n nlWall.isEmpty({\n wall_container:function(){\n return $(\"#nurseslounge-home-activity .nurseslounge-home-activity-left .wall-container\");\n }\n });\n }\n if(window.location.pathname == '/myDashboard/colleagues') {\n nurseslounge_myDashboard_colleagues.task_list_container(function($container){\n nurseslounge_myDashboard_myProfile.task_list($container, {user_id:libs.memoryGet('user_id')});\n });\n }\n if(window.location.pathname == '/myDashboard/degreesForMe') {\n nurseslounge_myDashboard_degreesForMe.task_list_container(function($container){\n nurseslounge_myDashboard_myProfile.task_list($container, {user_id:libs.memoryGet('user_id')});\n });\n }\n nurseslounge_myDashboard_activity.lounge_follow_request(function($chtml){\n nurseslounge_myDashboard_myProfile.lounge_follow_container($chtml);\n });\n nurseslounge_lounge_header.followers_reload_last();\n $(\"#nurseslounge-home-my-profile-edit-modal\").modal('hide');\n });\n }\n }\n });\n },\n //Connect With\n connect_with:function(cback){\n cback({\n 'connect':$(\"#nurseslounge-home-my-profile .nurseslounge-home-my-profile-right .connect-with\")\n });\n },\n connect_engine:function($config){\n $config.connect.unbind().click(function(){\n var $toUserId = $(this).data('id');\n var $url = $(this).data('url');\n var $name = $(this).data('name');\n nurseslounge_myDashboard_colleagues.colleagues_invitation_modal($url, $name, function($ok){\n if($ok){\n var $params = {user_id:libs.memoryGet('user_id'),to_user_id:$toUserId, status_id:1};\n nurseslounge_myDashboard_colleagues.colleagues_home_set($params, function () {\n router.navigate('/profile/'+$toUserId);\n });\n }\n });\n });\n },\n //Banners\n banners_location:function(cback){\n cback({\n 'banners':$(\"#nurseslounge-home-my-profile .nurseslounge-home-my-profile-right .banners\")\n });\n },\n banners_engine:function($config){\n var $userId = libs.memoryGet('user_id');\n var $key = $config.banners.data('key');\n $key = $key == undefined ? '' : $key;\n var $banners = $config.banners.not('.slick-initialized');\n try {\n $banners.slick('unslick');\n } catch (e) {\n }\n var $widget = $banners.parents('.banners-container:first');\n $.ajax({\n url: \"/myDashboard/myProfile/banners\",\n method: \"POST\",\n cache: false,\n dataType: \"json\",\n data: {\n user_id: $userId,\n key: $key\n },\n success: function ($data) {\n libs.expire($data);\n $banners.width($widget.width());\n var $chtml = '';\n if ($data.status == 'success') {\n $.each($data.data.advertisements, function($i, $v){\n $chtml+='
    ';\n $chtml+=' ';\n $chtml+='
    ';\n });\n libs.checkImageLoad($($chtml).find('img'), function(){\n $banners.width($widget.width());\n $banners.html($chtml).promise().done(function(){\n $banners.on('init', function () {\n $banners.find('.open-url').unbind().click(function(){\n var $id = $(this).data('id');\n $.ajax({\n url: \"/myDashboard/myProfile/banners/visits\",\n method: \"POST\",\n cache: false,\n dataType: \"json\",\n data: {\n user_id: $userId,\n id:$id\n },\n success: function ($data) {\n if($data.data.advertisement_url){\n window.open($data.data.advertisement_url, '_blank', '');\n }\n }\n });\n });\n }).slick({\n slidesToShow: 1,\n slidesToScroll: 1,\n autoplay: true,\n autoplaySpeed: 5000,\n arrows: false,\n dots: false,\n pauseOnHover: false\n });\n });\n });\n }\n }\n });\n },\n lounge_ads_location:function(cback){\n cback({\n 'ads':$(\"#nurseslounge-home-my-profile .nurseslounge-home-my-profile-right .lounge-ads\")\n });\n },\n //Follow Lounges\n lounge_follow_container:function($chtml){\n libs.checkImageLoad($($chtml).find('img'), function(){\n $(\"#nurseslounge-home-my-profile .nurseslounge-home-my-profile-right .follow-lounges\").html($chtml);\n });\n },\n //Invite Collegues\n invite_colleagues_engine:function($config){\n var $colleagues = $config.colleagues;\n $colleagues.unbind().click(function(){\n $.ajax({\n url: \"/myDashboard/myProfile/invite/preview\",\n method: \"POST\",\n cache: false,\n dataType: \"html\",\n data: {user_id: libs.memoryGet('user_id')},\n success: function ($chtml) {\n libs.expire($chtml);\n nurseslounge_myDashboard_myProfile.invite_colleagues_modal($chtml);\n }\n });\n });\n },\n invite_colleagues_modal:function($chtml){\n var $modal = $(\"#nurseslounge-invite-colleagues-modal\");\n var $colleaguesInput = $modal.find(\"input[name='colleagues']\");\n var $sendInviteList = $modal.find(\".send-invite-list\");\n var $preview = $modal.find(\".preview\");\n var $form = $modal.find(\"form\");\n $colleaguesInput.unbind();\n var $multiEmail = $colleaguesInput.unbind().multiEmail({\n delete: true,\n target:$sendInviteList,\n model:'' +\n '
  • ' +\n ' ' +\n ' ' +\n ' ' +\n '
    ' +\n ' ' +\n ' ' +\n ' ' +\n '
    ' +\n '
    ' +\n ' ' +\n '
    ' +\n '
  • ',\n removeEle:'.email-remove',\n emailSend:'.email-send',\n ajax:{\n method:'POST',\n url:'/myDashboard/myProfile/invite/exist',\n data:{\n user_id:libs.memoryGet('user_id')\n },\n dataType:'json'\n },\n callback:function($emails){\n var $userId = libs.memoryGet('user_id');\n nurseslounge_myDashboard_myProfile.invite_colleagues_request($emails, function () {\n if(window.location.pathname == '/myDashboard/activity') {\n nurseslounge_myDashboard_accountSettings.coins({user_id:$userId});\n nurseslounge_myDashboard_activity.task_list_container(function($container){\n nurseslounge_myDashboard_myProfile.task_list($container, {user_id:libs.memoryGet('user_id')});\n });\n }\n if(window.location.pathname == '/myDashboard/colleagues') {\n nurseslounge_myDashboard_accountSettings.coins({user_id:$userId});\n nurseslounge_myDashboard_colleagues.task_list_container(function($container){\n nurseslounge_myDashboard_myProfile.task_list($container, {user_id:libs.memoryGet('user_id')});\n });\n }\n $multiEmail.delete();\n //$modal.modal('hide');\n });\n }\n });\n $sendInviteList.html('');\n $multiEmail.delete();\n $multiEmail.selector;\n $form.unbind().submit(function ($e) {\n $e.preventDefault();\n if($colleaguesInput.val() != ''){\n var $event = $.Event(\"keydown\",{keyCode:32});\n $colleaguesInput.trigger($event);\n }\n });\n nurseslounge_myDashboard_myProfile.invite_colleagues_autocomplete(\n $colleaguesInput,\n {\n user_id:libs.memoryGet('user_id')\n },\n '/myDashboard/allUsers/get'\n );\n $preview.html($chtml).promise().done(function(){\n $modal.modal('show');\n });\n },\n invite_colleagues_autocomplete:function($target, $data, $url, cback){\n try {\n $($target).autocomplete(\"destroy\");\n }catch (e) {\n }\n var $value = '';\n var $longName = [];\n $($target).autocomplete({\n minLength\t:2,\n search\t\t: function(){\n $(this).addClass(\"ui-autocomplete-loading\");\n },\n open \t\t: function(){\n $(this).removeClass(\"ui-autocomplete-loading\");\n },\n source: function(request, response) {\n $.ajax({\n method: 'POST',\n url:$url,\n data:$.extend({},{\n search:$($target).val()\n }, $data),\n dataType: \"json\",\n success: function($data){\n libs.expire($data);\n $value = '';\n response($data.data.emails);\n }\n });\n },\n create:function(){\n $(this).prev().remove();\n $(this).trigger(\"keypress.autocomplete\");\n },\n select: function (event, ui) {\n $value = ui.item.value;\n $(this).val($value);\n cback($value);\n return false;\n }\n }).keypress(function ($e) {\n if ($e.which == 13) {\n cback($(this).val());\n $(this).autocomplete(\"close\");\n }\n });\n },\n invite_colleagues_request:function($emails, cback){\n $.ajax({\n url: \"/myDashboard/myProfile/invite/colleagues\",\n method: \"POST\",\n cache: false,\n dataType: \"json\",\n data: {\n user_id: libs.memoryGet('user_id'),\n emails: $emails\n },\n success: function ($data) {\n libs.expire($data);\n cback();\n }\n });\n },\n //Recommended Friends\n recommended_friends_container:function($chtml){\n if($chtml == ''){\n $(\"#nurseslounge-home-my-profile .nurseslounge-home-my-profile-right .invite-colleagues\").parents('.card:first').remove();\n return false;\n }\n libs.checkImageLoad($($chtml).find('img'), function(){\n $(\"#nurseslounge-home-my-profile .nurseslounge-home-my-profile-right .invite-colleagues\").html($chtml).promise().done(function(){\n $(this).find(\".open-profile\").unbind().click(function(){\n var $guestId = $(this).data('id');\n router.navigate('/profile/'+$guestId);\n });\n $(this).find(\".send-friend-request\").unbind().click(function($e){\n $e.stopPropagation();\n var $li = $(this).parents('li:first');\n var $toUserId = $li.data('id');\n var $name = $li.data('name');\n var $url = $li.data('url');\n nurseslounge_myDashboard_colleagues.colleagues_invitation_modal($url, $name, function($ok){\n if($ok){\n $li.fadeOut().remove();\n var $params = {user_id:libs.memoryGet('user_id'),to_user_id:$toUserId, status_id:1};\n nurseslounge_myDashboard_colleagues.colleagues_home_set($params, function () {\n nurseslounge_myDashboard_colleagues.init($params);\n });\n }\n });\n });\n });\n });\n },\n //Profile Is Complete Engine\n profile_is_complete:function($params, $isDashboardSetting, cback){\n var $chtml = '';\n var $modal = $(\"#nurseslounge-home-my-profile-edit-modal\");\n var $modalTitle = $modal.find('.modal-title');\n nurseslounge_myDashboard_myProfile.profile_is_complete_request($params, function($data){\n nurseslounge_myDashboard_myProfile.previous_pop_up($data, $isDashboardSetting, function(){\n if($isDashboardSetting){\n $modal.unbind().on('hide.bs.modal', function () {\n if($modalTitle.data('tour') == 1){\n nurseslounge_lounges_tour.init({profile_id:$data.data.profile_id});\n }\n });\n $chtml = '' +\n '
    ' +\n ' ' +\n '
    ' +\n '
    Dashboard Settings
    ' +\n '
    ' +\n '
    ' +\n ' This information is private. We will not give or sell this information to a third party. We use this information to deliver accurate and relevant content to your dashboard.' +\n '
    ' +\n '
    ';\n libs.checkImageLoad($($chtml).find('img'), function(){\n $modalTitle.html($chtml).promise().done(function(){\n if(cback != undefined){\n $modalTitle.data('tour', 0);\n cback();\n }else{\n if($data.data.zip_code == null){\n $modalTitle.data('tour', 1);\n nurseslounge_myDashboard_myProfile.user_profile_fill($params, $isDashboardSetting);\n nurseslounge_myDashboard_myProfile.profile_events($params);\n }\n }\n });\n });\n }else{\n $chtml = '' +\n '
    Edit Profile Overview
    ';\n libs.checkImageLoad($($chtml).find('img'), function(){\n $modalTitle.html($chtml).promise().done(function(){\n if(cback != undefined){\n $modalTitle.data('tour', 0);\n cback();\n }\n });\n });\n }\n });\n });\n },\n profile_is_complete_request:function($params, cback){\n $.ajax({\n url:\"/myDashboard/myProfile/isComplete\",\n method: \"POST\",\n dataType: \"json\",\n data:$params,\n success: function ($data) {\n libs.expire($data);\n cback($data);\n }\n });\n },\n //Previous PopUp\n previous_pop_up:function($data, $isDashboardSetting, execute){\n var $profileId = $data.data.profile_id;\n var $firstTime = $data.data.first_time;\n var $modal = $(\"#nurseslounge-welcome-modal\");\n var $modalBody = $modal.find('.modal-body');\n var $modalInfo = $modalBody.find('.modal-info');\n var $chtml = '';\n if($firstTime == 1 && $isDashboardSetting){ //Non nurse\n if($profileId == 1 || $profileId == 2){\n $chtml = '' +\n '
    ' +\n '
    ' +\n '
    ' +\n '

    Your Privacy is Important to Us

    ' +\n '

    We will never sell or give your information to third parties.' +\n ' No one on Nurses Lounge has access to your information or can contact you directly.' +\n ' We use your information to deliver relevant and accurate content to your dashboard.

    ' +\n '
    ' +\n '

    Own Your Organization’s Lounge Page

    ' +\n '

    If you want to share jobs, events, hiring incentives, news and other information with nurses then you must be an owner of your organization’s Lounge page.' +\n ' Get started and you can search for your organization’s page to complete the form and become an owner.' +\n ' Only schools, employers and professional nurse associations can have Lounge pages.

    ' +\n '
    ' +\n ' ' +\n ' ' +\n '
    ' +\n ' ' +\n '
    ' +\n '
    ' +\n '
    ';\n }else{\n $chtml = '' +\n '
    ' +\n '
    ' +\n '
    ' +\n '

    Your Privacy is Important to Us

    ' +\n '

    We will never sell or give your information to third parties.' +\n ' No one on Nurses Lounge has access to your information or can contact you directly.' +\n ' We use your information to deliver relevant and accurate content to your dashboard.

    ' +\n '
    ' +\n '

    Anonymous Ratings & Reviews

    ' +\n '

    Your experiences as a nurse matter.' +\n ' Rate past and present employers as well as nursing programs 1 to 5 stars.' +\n ' Leave an optional review to describe your experiences.' +\n ' Your ratings and reviews are 100% anonymous. Organizations can not see who created them.

    ' +\n '
    ' +\n ' ' +\n ' ' +\n '
    ' +\n ' ' +\n '
    ' +\n '
    ' +\n '
    ';\n }\n $modalInfo.html($chtml).promise().done(function(){\n var $agreeCheckbox = $modalInfo.find('input[name=\"agree\"]');\n var $startBtn = $modalInfo.find('.start-btn');\n $agreeCheckbox.unbind().click(function(){\n if($agreeCheckbox.is(':checked')){\n $startBtn.unbind().click(function(){\n $modal.on('hidden.bs.modal', function ($e) {\n execute();\n }).modal('hide');\n });\n $startBtn.prop('disabled', false);\n }else{\n $startBtn.prop('disabled', true);\n }\n });\n $modal.modal('show');\n });\n }else{\n execute();\n }\n },\n //Task Container\n task_list_container:function(cback){\n var $modal = $(\"#nurseslounge-home-myinbox-no-task\");\n var $container = $(\"#nurseslounge-home-my-profile .nurseslounge-home-my-profile-right\");\n var $noThank = $container.find(\".no-thank\");\n var $params = {user_id:libs.memoryGet('user_id')};\n $noThank.unbind().click(function(){\n var $keepIt = $modal.find(\".keep-it\");\n var $dissmisIt = $modal.find(\".dismiss-it\");\n $keepIt.unbind().click(function(){\n $modal.modal('hide');\n });\n $dissmisIt.unbind().click(function(){\n nurseslounge_myDashboard_myProfile.task_list_container_request($params, function($data){\n $modal.modal('hide');\n });\n });\n $modal.modal('show');\n });\n cback($container);\n },\n //Task Engine\n task_list_container_request:function($params, cback){\n $.ajax({\n url:\"/myDashboard/myProfile/dismissList\",\n method: \"POST\",\n dataType: \"json\",\n data:$params,\n success: function ($data) {\n libs.expire($data);\n if(window.location.pathname == '/myDashboard/myProfile') {\n nurseslounge_myDashboard_myProfile.task_list_container(function($container){\n nurseslounge_myDashboard_myProfile.task_list($container, {user_id:libs.memoryGet('user_id')});\n });\n }\n if(window.location.pathname == '/myDashboard/activity') {\n nurseslounge_myDashboard_activity.task_list_container(function($container){\n nurseslounge_myDashboard_myProfile.task_list($container, {user_id:libs.memoryGet('user_id')});\n });\n }\n if(window.location.pathname == '/myDashboard/colleagues') {\n nurseslounge_myDashboard_colleagues.task_list_container(function($container){\n nurseslounge_myDashboard_myProfile.task_list($container, {user_id:libs.memoryGet('user_id')});\n });\n }\n cback($data);\n }\n });\n },\n task_list:function($container, $params){\n var $taskListContainer = $container.find('.task-list-container:first');\n var $cardTitle = $taskListContainer.find('.card-title:first');\n var $taskListList = $taskListContainer.find('.task-list:first');\n var $forOwners = null;\n var $show = null;\n nurseslounge_myDashboard_myProfile.task_list_request($params, function($data){\n var $chtml = '';\n $forOwners = $data && $data.data && $data.data.task_list && $data.data.task_list[0] ? $data.data.task_list[0].for_owners : 0;\n var $progress = $data.data.progress;\n var $taskList = $data.data.task_list;\n if($taskList.length > 0){\n if($progress != 100){\n $.each($taskList, function($i, $v){\n if($v.status){\n $chtml+= '
  • '+$v.task+'
  • ';\n }else{\n $chtml+= '
  • '+$v.task+'
  • ';\n }\n });\n if($forOwners == 1){\n $cardTitle.html('' +\n 'Monthly Progress' +\n '

    ' +\n ' Complete the tasks to maximize reach to nurse dashboards. Tasks reset each month. ' +\n '

    ' +\n '
    ' +\n '
    ' +\n '
    ' +\n '
    ' +\n ' ' +\n $progress+ '%' +\n ' ' +\n '
    ' +\n '
    ' +\n '');\n $show = true;\n }\n if($forOwners == 0){\n $cardTitle.html('' +\n 'Getting Started' +\n '

    ' +\n ' Here are few tasks to help you get started. Click on the tasks below to watch videos.' +\n '

    ' +\n '
    ' +\n '
    ' +\n '
    ' +\n '
    ' +\n ' ' +\n $progress+ '%' +\n ' ' +\n '
    ' +\n '
    ' +\n '');\n $show = true;\n }\n }else{\n if($forOwners == 1){\n $cardTitle.html(\n 'Congratulations!' +\n '

    ' +\n ' You have completed all monthly tasks. Keep creating content to extend your reach even more! ' +\n '

    ' +\n '
    ' +\n '
    ' +\n '
    ' +\n '
    ' +\n ' ' +\n $progress+ '%' +\n ' ' +\n '
    ' +\n '
    ' +\n '');\n $show = true;\n }\n if($forOwners == 0){\n $show = false;\n }\n }\n $taskListList.html($chtml).promise().done(function(){\n nurseslounge_myDashboard_myProfile.task_list_events($container, $params);\n if($show == true){\n $taskListContainer.fadeIn();\n }\n if($show == false || $chtml == ''){\n $taskListContainer.hide();\n }\n });\n }\n });\n },\n task_list_request:function($params, cback){\n $.ajax({\n url:\"/myDashboard/myProfile/taskList\",\n method: \"POST\",\n dataType: \"json\",\n data:$params,\n success: function ($data) {\n libs.expire($data);\n cback($data);\n }\n });\n },\n task_list_events:function($container, $params){\n var $taskList = $container.find('.task-list:first');\n var $taskListLi = $taskList.find('li');\n var $modal = $(\"#nurseslounge-home-tasklist-modal\");\n var $modalTitle = $modal.find(\".modal-title\");\n var $try = $modal.find('.try:first');\n var $reviewModal = $(\"#nurseslounge-lounge-information-review-modal\");\n var $key = $params && $params.key ? $params.key : null;\n $taskListLi.unbind().click(function(){\n var $that = $(this);\n var $title = $that.data('title');\n var $id = $that.data('id');\n var $video = $that.data('video');\n var $loungeKey = $that.data('loungekey');\n var $loungeTypeId = $that.data('loungetypeid');\n switch($id){\n case 1:\n $try.unbind().click(function(){\n $params = {user_id:libs.memoryGet('user_id')};\n $modal.modal('hide');\n router.navigate('/myDashboard/myProfile');\n nurseslounge_myDashboard_myProfile.profile_is_complete($params, true, function(){\n nurseslounge_myDashboard_myProfile.user_profile_fill($params, true);\n nurseslounge_myDashboard_myProfile.profile_events($params);\n $(\"#nurseslounge-home-my-profile-edit-modal .change-password\").hide();\n });\n });\n break;\n case 2:\n case 3:\n $try.unbind().click(function(){\n $params = {user_id:libs.memoryGet('user_id'), tab:'review_init', key:$loungeKey}; $modal.modal('hide');\n router.navigate('/lounge/'+$loungeKey+'/ratingReviews');\n nurseslounge_lounge_ratingReviews.reviews_get($params, function($data){\n nurseslounge_lounge_overview.information_review($loungeTypeId, $params, $data, function(){\n libs.refreshBoxFrom('.review-box', $params, function(){\n nurseslounge_lounge_ratingReviews.init($params);\n $reviewModal.modal('hide');\n });\n });\n });\n });\n break;\n case 4:\n $try.unbind().click(function(){\n $modal.modal('hide');\n router.navigate('/myDashboard/jobsNearMe');\n });\n break;\n case 5:\n $try.unbind().click(function(){\n $modal.modal('hide');\n router.navigate('/myDashboard/degreesForMe');\n });\n break;\n case 6:\n $try.unbind().click(function(){\n $modal.modal('hide');\n router.navigate('/articles');\n });\n break;\n case 7:\n $try.unbind().click(function(){\n $params = {user_id:libs.memoryGet('user_id'), choose:'activity'};\n if($key != null){\n $params = $.extend({}, $params, {key:$key});\n }\n $modal.modal('hide');\n nurseslounge_myDashboard_myProfile.choose_lounge($params, function($loungeKey){\n router.navigate('/lounge/'+$loungeKey+'/activity');\n });\n });\n break;\n case 8:\n $try.unbind().click(function(){\n $params = {user_id:libs.memoryGet('user_id'), choose:'jobs'};\n if($key != null){\n $params = $.extend({}, $params, {key:$key});\n }\n $modal.modal('hide');\n nurseslounge_myDashboard_myProfile.choose_lounge($params, function($loungeKey, $loungeSection){\n router.navigate('/lounge/'+$loungeKey+'/'+$loungeSection);\n $params = {\n user_id:libs.memoryGet('user_id'),\n action:'info',\n tab:'jobs',\n key:$loungeKey\n };\n nurseslounge_lounge_nursingJobs.nursing_jobs_up_request($params, function($data){\n var $credential = $data && $data.data && $data.data.user_credential ? $data.data.user_credential : [];\n $credential = $credential.map(function($x){return parseInt($x);});\n var $allowTabs = {\n 'job_information': $.inArray(19, $credential) != -1 ? true : false,\n 'job_location': $.inArray(19, $credential) != -1 ? true : false\n };\n var $allowTabsFiltered = $allowTabs;\n $allowTabs = {};\n $.each($allowTabsFiltered, function($k, $v) {var $newObj = {};$newObj[$k]=$v;if($v){$.extend($allowTabs, $newObj);}});\n var $tab = null;\n $.each($allowTabs, function($i, $v){\n if($v){\n $tab = $i;\n return false;\n }\n });\n nurseslounge_job_jobDetail.information_request_select_tab('create', $tab, $allowTabs, $params, function () {\n $(\"#nurseslounge-job-information-edit-modal\").scrollTop(0);\n $(\"#nurseslounge-job-information-edit-modal\").modal('show');\n });\n });\n });\n });\n break;\n case 9:\n $try.unbind().click(function(){\n $modal.modal('hide');\n nurseslounge_myDashboard_myArticles.section = 'editor';\n router.navigate('/myDashboard/myArticles');\n });\n break;\n case 10:\n $try.unbind().click(function(){\n $params = {user_id:libs.memoryGet('user_id'), choose:'invite'};\n if($key != null){\n $params = $.extend({}, $params, {key:$key});\n }\n $modal.modal('hide');\n nurseslounge_myDashboard_myProfile.choose_lounge($params, function($loungeKey){\n router.navigate('/lounge/'+$loungeKey+'/overview');\n $params = {\n user_id:libs.memoryGet('user_id'),\n tab:'init',\n key:$loungeKey\n };\n nurseslounge_lounge_overview.information_lounge_get('init', $params, function($data){\n var $isEmployer = $data && $data.data && $data.data.lounge && $data.data.lounge.lounge_type_id ? $data.data.lounge.lounge_type_id == 1 : false;\n var $isSchool = $data && $data.data && $data.data.lounge && $data.data.lounge.lounge_type_id ? $data.data.lounge.lounge_type_id == 2 : false;\n var $credential = $data && $data.data && $data.data.user_credential ? $data.data.user_credential : [];\n $credential = $credential.map(function($x){return parseInt($x);});\n var $allowTabs = {\n 'information': $.inArray(7, $credential) != -1 ? true : false,\n 'otherNames': $.inArray(62, $credential) != -1 ? true : false,\n 'specialties': $.inArray(80, $credential) != -1 && $isSpecialty ? true : false,\n 'location': $.inArray(8, $credential) != -1 ? true : false,\n 'multimedia': $.inArray(9, $credential) != -1 ? true : false,\n 'virtualTour': $.inArray(83, $credential) != -1 ? true : false,\n 'recruiters': $.inArray(10, $credential) != -1 ? true : false,\n 'owners': $.inArray(11, $credential) != -1 ? true : false,\n 'jobs': $.inArray(12, $credential) != -1 && $isEmployer || $.inArray(12, $credential) != -1 && $isSchool ? true : false,\n 'import': $.inArray(13, $credential) != -1 && $isEmployer || $.inArray(13, $credential) != -1 && $isSchool ? true : false,\n 'api': $.inArray(13, $credential) != -1 && $isEmployer || $.inArray(13, $credential) != -1 && $isSchool ? true : false,\n 'statistics': $.inArray(14, $credential) != -1 ? true : false,\n 'degrees': $.inArray(17, $credential) != -1 && $isSchool ? true : false,\n 'invite': $.inArray(24, $credential) != -1 ? true : false,\n 'inviteStatistics': $.inArray(28, $credential) != -1 ? true : false,\n 'inviteTemplates': $.inArray(66, $credential) != -1 ? true : false,\n 'createLogo': $.inArray(67, $credential) != -1 ? true : false,\n 'buyAds': $.inArray(71, $credential) != -1 && $isSchool ? true : false,\n 'sponsorDegrees': $.inArray(75, $credential) != -1 && $isSchool ? true : false,\n 'spotlightJobs': $.inArray(77, $credential) != -1 && !$isSchool ? true : false,\n };\n var $allowTabsFiltered = $allowTabs;\n $allowTabs = {};\n $.each($allowTabsFiltered, function($k, $v) {var $newObj = {};$newObj[$k]=$v;if($v){$.extend($allowTabs, $newObj);}});\n var $tab = null;\n $.each($allowTabs, function($i, $v){\n if($v && $i == 'invite'){\n $tab = $i;\n return false;\n }\n });\n nurseslounge_lounge_overview.information_administrator_select_tab('edit', $tab, $allowTabs, $params, function () {\n $(\"#nurseslounge-lounge-information-edit-modal\").scrollTop(0);\n $(\"#nurseslounge-lounge-information-edit-modal\").modal('show');\n });\n });\n });\n });\n break;\n case 11:\n $try.unbind().click(function(){\n $modal.modal('hide');\n router.navigate('/myDashboard/colleagues');\n });\n break;\n case 12:\n $try.unbind().click(function(){\n $params = {user_id:libs.memoryGet('user_id'), choose:'needAnswer'};\n if($key != null){\n $params = $.extend({}, $params, {key:$key});\n }\n $modal.modal('hide');\n nurseslounge_myDashboard_myProfile.choose_lounge($params, function($loungeKey){\n router.navigate('/lounge/'+$loungeKey+'/ratingReviews');\n });\n });\n break;\n case 13:\n $try.unbind().click(function(){\n $modal.modal('hide');\n router.navigate('/lounge/'+$key+'/calendar');\n });\n break;\n case 14:\n $try.unbind().click(function(){\n $modal.modal('hide');\n $(\"#content .image-change\").click();\n });\n break;\n case 15:\n $try.unbind().click(function(){\n $modal.modal('hide');\n if(window.location.pathname == '/myDashboard/myProfile'){\n var $profileLeft = $(\"#nurseslounge-home-my-profile .nurseslounge-home-my-profile-left:first\");\n var $experience = $profileLeft.find('.nurseslounge-home-my-profile-left-profile-experience:first');\n $experience.find(\".add-experience:first\").click();\n }else{\n router.navigate('/myDashboard/myProfile');\n }\n });\n break;\n case 16:\n $try.unbind().click(function(){\n $modal.modal('hide');\n if(window.location.pathname == '/myDashboard/myProfile'){\n var $profileLeft = $(\"#nurseslounge-home-my-profile .nurseslounge-home-my-profile-left:first\");\n var $education = $profileLeft.find('.nurseslounge-home-my-profile-left-profile-education:first');\n $education.find(\".edit-profile:first\").click();\n }else{\n router.navigate('/myDashboard/myProfile');\n }\n });\n break;\n }\n $modalTitle.html($title).promise().done(function(){\n $modal.unbind().on('shown.bs.modal', function(){\n nurseslounge_myDashboard_myProfile.task_list_open_youtube($id, $video);\n });\n $modal.modal('show');\n });\n });\n },\n task_list_open_youtube:function($id, $video){\n var $userId = libs.memoryGet('user_id');\n var $youtubePlayer;\n var $modal = $(\"#nurseslounge-home-tasklist-modal\");\n var $videoDiv = $modal.find('.video:first');\n $videoDiv.replaceWith('
    ');\n $videoDiv = $modal.find('.video:first');\n var $urlVideo = new URL($video);\n var $videoId = $urlVideo.searchParams.get('v');\n var $params = {id:$id, user_id:$userId};\n nurseslounge_myDashboard_myProfile.task_list_open_video_request($params, function(){\n $youtubePlayer = libs.memoryGet('youtubePlayer');\n if($youtubePlayer){\n $youtubePlayer.destroy();\n }\n try{\n $youtubePlayer = new YT.Player($videoDiv[0], {\n height: '360',\n width: '100%',\n videoId: $videoId,\n playerVars: {'autoplay': 1, 'controls': 1},\n events: {\n 'onReady': function () {\n $youtubePlayer.mute();\n $youtubePlayer.playVideoAt(0);\n },\n 'onError': function () {\n $videoDiv.hide();\n libs.memorySave('youtubePlayer', null);\n nurseslounge_myDashboard_myProfile.task_list_open_youtube($id, $video);\n }\n }\n });\n }catch ($e) {\n\n }\n libs.memorySave('youtubePlayer', $youtubePlayer);\n });\n },\n task_list_open_video_request:function($params, cback){\n $.ajax({\n url:\"/myDashboard/myProfile/taskList/viewed\",\n method: \"POST\",\n dataType: \"json\",\n data:$params,\n success: function ($data) {\n libs.expire($data);\n if(window.location.pathname == '/myDashboard/myProfile') {\n nurseslounge_myDashboard_myProfile.task_list_container(function($container){\n nurseslounge_myDashboard_myProfile.task_list($container, {user_id:libs.memoryGet('user_id')});\n });\n }\n if(window.location.pathname == '/myDashboard/activity') {\n nurseslounge_myDashboard_activity.task_list_container(function($container){\n nurseslounge_myDashboard_myProfile.task_list($container, {user_id:libs.memoryGet('user_id')});\n });\n }\n if(window.location.pathname == '/myDashboard/colleagues') {\n nurseslounge_myDashboard_colleagues.task_list_container(function($container){\n nurseslounge_myDashboard_myProfile.task_list($container, {user_id:libs.memoryGet('user_id')});\n });\n }\n cback($data);\n }\n });\n },\n choose_lounge:function($params, chosen){\n var $chooseLoungeModal = $(\"#nurseslounge-home-chooselounge-modal\");\n var $chooseLoungeModalBody = $chooseLoungeModal.find('.modal-body:first');\n var $chtml = '';\n nurseslounge_myDashboard_myProfile.choose_lounge_request($params, function($data){\n if($data.data.lounges.length > 1){\n $.each($data.data.lounges, function($i, $v){\n $chtml += '' +\n '
    ' +\n '
    ' +\n ' ' +\n ' \"lounge\"' +\n ' ' +\n '
    ' +\n '
    ' +\n '

    ' +\n ' '+$v.name+'' +\n '

    ' +\n '
    ' +\n '
    ';\n });\n $chooseLoungeModalBody.html($chtml).promise().done(function(){\n var $links = $chooseLoungeModalBody.find('.link');\n $links.unbind().click(function(){\n var $that = $(this);\n var $key = $that.data('key');\n var $loungeTypeId = $that.data('loungetypeid');\n var $section = '';\n if($loungeTypeId != ''){\n switch ($loungeTypeId) {\n case 1:\n $section = 'nursingJobs';\n break;\n case 2:\n $section = 'nursingFacultyJobs';\n break;\n }\n }\n $chooseLoungeModal.modal('hide');\n chosen($key, $section);\n });\n $chooseLoungeModal.modal('show');\n });\n }else\n if($data.data.lounges.length == 1){\n var $lounge = $data.data.lounges[0];\n var $key = $lounge.key;\n var $section = '';\n var $loungeTypeId = $lounge.lounge_type_id;\n switch ($loungeTypeId) {\n case 1:\n $section = 'nursingJobs';\n break;\n case 2:\n $section = 'nursingFacultyJobs';\n break;\n }\n chosen($key, $section);\n }\n });\n },\n choose_lounge_request:function($params, cback){\n $.ajax({\n url:\"/myDashboard/myProfile/chooseLounge/get\",\n method: \"POST\",\n dataType: \"json\",\n data:$params,\n success: function ($data) {\n libs.expire($data);\n if(\n $data.status == 'success'\n ){\n cback($data);\n }\n }\n });\n },\n //Preview Profile\n preview_profile_container:function(cback){\n var $container = $(\"#nurseslounge-home-my-profile .nurseslounge-home-my-profile-right\");\n cback($container);\n },\n preview_profile:function($container, $params){\n var $previewContainer = $container.find('.preview-profile-container');\n var $previewProfile = $previewContainer.find('.preview-profile:first');\n $previewProfile.unbind().click(function(){\n var $that = $(this);\n var $previewProfile = $that.data('preview_profile');\n $params = $.extend({}, $params, {preview_profile:$previewProfile});\n nurseslounge_myDashboard_myProfile.preview_profile_request($params);\n });\n },\n preview_profile_request:function($params){\n $.ajax({\n url:\"/myDashboard/myProfile/setPreviewProfile\",\n method: \"POST\",\n dataType: \"json\",\n data:$params,\n success: function ($data) {\n libs.expire($data);\n }\n });\n },\n //Profile Download PDF\n download_pdf_container:function(cback){\n var $container = $(\"#nurseslounge-home-my-profile .nurseslounge-home-my-profile-right .download-profile\");\n cback($container);\n },\n download_pdf:function($container, $params){\n var $modal = $(\"#nurseslounge-lounge-myprofile-download-modal\");\n var $pdfContainer = $modal.find('.pdf-container');\n var $download = $modal.find('.download');\n $container.unbind().click(function(){\n $modal.modal('show');\n nurseslounge_myDashboard_myProfile.download_request($params, function($data){\n var $preview = $data.data.preview;\n if(PDFObject.supportsPDFs){\n PDFObject.embed($preview, $pdfContainer, {\n height: \"400px\",\n pdfOpenParams: {\n view:'FitH',\n scrollbars: '0',\n toolbar: '0',\n statusbar: '0',\n navpanes: '0',\n page:'1'\n }\n });\n } else {\n $pdfContainer.html('');\n }\n $download.unbind().click(function(){\n window.open($preview+'?download=1', '_blank');\n });\n });\n });\n },\n download_request:function($params, cback){\n $.ajax({\n url: \"/myDashboard/myProfile/preview\",\n method: \"POST\",\n cache:false,\n dataType: \"json\",\n data:$params,\n success: function ($data) {\n libs.expire($data);\n cback($data);\n }\n });\n },\n //Notification Link\n notification_link:function(){\n var $exist = nurseslounge_myDashboard_accountSettings.readCookie('myDashboardMyProfileLeftWrapper');\n if($exist == 1){\n $(\"#myDashboardMyProfileLeft-wrapper\").remove();\n }else{\n $(\"#myDashboardMyProfileLeft-wrapper .close\").unbind().click(function(){\n $(\"#myDashboardMyProfileLeft-wrapper\").remove();\n nurseslounge_myDashboard_accountSettings.createCookie('myDashboardMyProfileLeftWrapper',1,100);\n });\n }\n },\n //Spotlight\n spotlight_container:function(cback){\n var $container = $(\"#nurseslounge-home-my-profile .nurseslounge-home-my-profile-left .spotlight-wrapper\");\n cback($container);\n },\n spotlight:function($container, $params){\n var $chtml = '';\n nurseslounge_myDashboard_myProfile.spotlight_request($params, function($data){\n $.each($data.data.spotlight_jobs, function($i, $v){\n $chtml += nurseslounge_myDashboard_myProfile.spotlight_html($v);\n });\n libs.checkImageLoad($($chtml).find('img'), function () {\n $container.html($chtml).promise().done(function () {\n var $item = $container.find('.item');\n $item.unbind().click(function () {\n var $that = $(this);\n var $id = $that.data('id');\n $params = $.extend({}, $params, {'id': $id});\n nurseslounge_myDashboard_myProfile.spotlight_clicks_request($params, function ($data) {\n var $spotlightJob = $data.data.spotlight_job\n var $modal = $(\"#nurseslounge-myDashboard-spotlight-job-modal\");\n var $image = $modal.find('.image');\n var $facilityName = $modal.find('label[name=\"facilityName\"]');\n var $cityState = $modal.find('label[name=\"cityState\"]');\n var $title = $modal.find('label[name=\"title\"]');\n var $shift = $modal.find('label[name=\"shift\"]');\n var $signingBonus = $modal.find('label[name=\"signingBonus\"]');\n var $compensation = $modal.find('label[name=\"compensation\"]');\n var $contactEmailUrl = $modal.find('label[name=\"contactEmailUrl\"]');\n $modal.on('hidden.bs.modal',function($e){\n $image.attr('src', '/bimg/NursesLounge/loader.gif');\n $facilityName.html('');\n $cityState.html('');\n $title.html('');\n $shift.html('');\n $signingBonus.html('');\n $compensation.html('');\n $contactEmailUrl.html('');\n }).modal('hide');\n $image.attr('src', $spotlightJob.lounge.logo_root_lounge);\n $title.html($spotlightJob.title);\n $facilityName.html($spotlightJob.facility_name);\n $cityState.html($spotlightJob.city_state);\n $shift.html($spotlightJob.shift);\n $signingBonus.html($spotlightJob.signing_bonus);\n $compensation.html($spotlightJob.compensation);\n if($spotlightJob.contact_is_email){\n $contactEmailUrl.html(''+$spotlightJob.contact_email_url+'');\n }else{\n $contactEmailUrl.html(''+$spotlightJob.contact_email_url+'');\n }\n $modal.modal('show');\n });\n });\n var $close = $container.find('.close');\n $close.each(function(){\n var $that = $(this);\n var $id = $that.data('id');\n var $exist = nurseslounge_myDashboard_accountSettings.readCookie('spotlight'+$id);\n if($exist == 1){\n $that.parents('.item:first').remove();\n }else{\n $that.unbind().click(function(){\n $that.parents('.item:first').remove();\n nurseslounge_myDashboard_accountSettings.createCookie('spotlight'+$id,1,100);\n });\n }\n });\n });\n });\n });\n },\n spotlight_request:function($params, cback){\n $.ajax({\n url:\"/myDashboard/myProfile/spotlightJobs\",\n method: \"POST\",\n dataType: \"json\",\n data:$params,\n success: function ($data) {\n libs.expire($data);\n cback($data);\n }\n });\n\n },\n spotlight_html:function($v){\n var $chtml = '' +\n '
    ' +\n '
    ' +\n '
    ' +\n ' ' +\n ' ' +\n ' ' +\n ' ' +\n ' X Close' +\n '
    ' +\n '
    ' +\n '
    ' +\n ' ' +\n '
    ' +\n '
    ' +\n ' ' +\n '
    ' +\n '
    ' +\n '
    ' +\n '
    ';\n\n return $chtml;\n },\n spotlight_clicks_request:function($params, cback){\n $.ajax({\n url:\"/myDashboard/myProfile/spotlightClicks\",\n method: \"POST\",\n dataType: \"json\",\n data:$params,\n success: function ($data) {\n libs.expire($data);\n cback($data);\n }\n });\n\n },\n //Coins\n coin_list_original:[],\n coin_list:function($params, $original, cback){\n nurseslounge_myDashboard_myProfile.coin_list_request($params, function($data){\n var $coinsListIds = $data.data.coins_list_ids;\n if($original){\n nurseslounge_myDashboard_myProfile.coin_list_original = $coinsListIds;\n }\n var $coinsEvents = $data.data.coins_events;\n $('.coin-event').each(function($i, $v){\n var $that = $(this);\n var $id = $that.data('id');\n if($.inArray($id, $coinsListIds) == -1){\n $that.show();\n }else{\n $that.hide();\n }\n });\n if(cback != undefined){\n cback($coinsEvents);\n }\n });\n },\n coin_list_request:function($params, cback){\n $.ajax({\n url: \"/myDashboard/coin/list\",\n method: \"POST\",\n cache:false,\n dataType: \"json\",\n data:$params,\n success: function ($data) {\n libs.expire($data);\n cback($data);\n }\n });\n },\n coin_events:function($params, $eventsIds){\n $.each($eventsIds, function($i, $v){\n $(\".coin-event[data-id='\"+$v.id+\"']\").click(function(){\n var $that = $(this);\n nurseslounge_myDashboard_myProfile.coin_popup($that, $v, function($that, $event){\n switch($event.id){\n case 3:\n //var $profileLeft = $(\"#nurseslounge-home-my-profile .nurseslounge-home-my-profile-left:first\");\n //var $profile = $profileLeft.find('.nurseslounge-home-my-profile-left-profile-info:first');\n //$profile.find(\".edit-profile:first\").click();\n //var $modal = $(\"#nurseslounge-home-my-profile-edit-modal\");\n //$modal.unbind().on('hidden.bs.modal', function () {\n nurseslounge_myDashboard_myProfile.coin_list($params, false, function(){\n nurseslounge_myDashboard_myProfile.create_coin($params, $that, 1, $event.coins_number, function(){\n alert(\"\");\n });\n });\n //});\n break;\n }\n });\n });\n });\n },\n coin_popup:function($that, $event, cback){\n var $width = $(document).width();\n var $height = $(window).height();\n var $limitTop = ($height/2);\n var $limitLeft = ($width/2) - ($width/4);\n var $limitRight = $limitLeft + ($width/2);\n var $obLeft = $that.offset().left;\n var $obRight = $width - $that.offset().left;\n var $top = $that.offset().top;\n var $windowScrollTop = $(window).scrollTop();\n var $objTop = $top - $windowScrollTop;\n var $zPosition;\n if($limitTop > $objTop){\n $top = $top + 20;\n }else{\n $top = $top - 80;\n }\n //$('body').append('
    ');\n //$('body').append('
    ');\n $(\".show-coin-info\").remove();\n var $limitRightObj = $obLeft - $limitRight;\n var $limitLeftObj = $obLeft - $limitLeft;\n var $cloRight = $limitRightObj < 0 ? ($limitRightObj * -1) : $limitRightObj;\n var $cloLeft = $limitLeftObj < 0 ? ($limitLeftObj * -1) : $limitLeftObj;\n var $xPosition;\n var $position;\n if($cloRight > $cloLeft){\n $xPosition = 'left';\n if($limitRightObj < 0){\n $position = 'left';\n $obLeft = $obLeft + 14;\n }else{\n $position = 'right';\n $obLeft = $obLeft + 14;\n }\n }else{\n $xPosition = 'right';\n if($limitRightObj < 0){\n $position = 'left';\n $obLeft = $obLeft - 100;\n }else{\n $position = 'right';\n $obLeft = $obLeft - 100;\n }\n }\n var $direction = ['right', 'left', 'alternate'];\n var $index = Math.floor(Math.random() * 3);\n var $coinWrapper = '' +\n '
    ' +\n '
    ' +\n '
    ' +\n '
    ' +\n '
    ' +\n '
    ';\n var $unique = libs.getUniqueId();\n var $chtml = '' +\n '
    ' +\n '
    ' +\n '
    ' +\n '
    ' +\n ' +' +\n ' '+$event.coins_number+'' +\n '
    ' +\n '
    ' +\n $coinWrapper +\n '
    ' +\n '
    ' +\n ' ' +\n '
    ' +\n '
    ';\n $('body').append($chtml).promise().done(function(){\n $(\"#\"+$unique+\" .get-coins\").unbind().click(function(){\n $(\"#\"+$unique).hide();\n if(cback != undefined){\n cback($that, $event);\n }\n });\n });\n },\n coin_exist:function($params, cback){\n $.ajax({\n url: \"/myDashboard/coin/event/get\",\n method: \"POST\",\n cache:false,\n dataType: \"json\",\n data:$params,\n success: function ($data) {\n libs.expire($data);\n cback($data);\n }\n });\n },\n create_coin:function($params, $that, $from, $to, cback){\n var $chtml = ''\n var $direction = ['right', 'left', 'alternate'];\n var $index = Math.floor(Math.random() * 3);\n $chtml += '
    ' +\n '
    ' +\n '
    ' +\n '
    ' +\n '
    ' +\n '
    ';\n var $unique = libs.getUniqueId();\n var $ele = '
    '+$chtml+'
    ';\n //var $width = $(document).width();\n //var $limitLeft = ($width/2) - ($width/4);\n //var $limitRight = $limitLeft + ($width/2);\n //$('body').append('
    ');\n //$('body').append('
    ');\n //var $target = ($limitRight - $limitLeft);\n //$target = Math.floor(Math.random() * $target);\n //$target = $target + $limitLeft;\n //$('body').append('
    ');\n $that.append($ele).ready(function(){\n var $targetCoins = $(\".target-coins\");\n var $targetTop = $targetCoins.offset().top;\n var $targetLeft = $targetCoins.offset().left;\n $(\"#\"+$unique).animate({\n top: \"-=100\",\n zoom: '1',\n opacity: 0\n }, 1000, function() {\n if($from < $to){\n $from = $from+1;\n setTimeout(function(){\n nurseslounge_myDashboard_myProfile.create_coin($params, $that, $from, $to, cback);\n }, Math.floor(Math.random() * 2) * 500);\n }else{\n if(cback != undefined){\n cback();\n }\n }\n });\n });\n },\n};\n","var nurseslounge_myDashboard_colleagues = {\r\n init:function($params){\r\n var $pages;\r\n if($params && $params.guestId){\r\n $pages = ['my-colleagues', 'common'];\r\n }else{\r\n $pages = ['all-colleagues', 'my-colleagues', 'sent-invite', 'received-invite'];\r\n }\r\n $.each($pages, function($i, $v){\r\n nurseslounge_myDashboard_colleagues.colleagues_pagination($params, $v);\r\n });\r\n nurseslounge_myDashboard_colleagues.banners_location(function($config){\r\n nurseslounge_myDashboard_myProfile.banners_engine($config);\r\n });\r\n nurseslounge_myDashboard_colleagues.recommended_friends(function($chtml){\r\n nurseslounge_myDashboard_colleagues.recommended_friends_container($params, $chtml);\r\n });\r\n nurseslounge_myDashboard_colleagues.invite_colleagues(function($config){\r\n nurseslounge_myDashboard_myProfile.invite_colleagues_engine($config);\r\n });\r\n nurseslounge_myDashboard_activity.lounge_follow_request(function($chtml){\r\n nurseslounge_myDashboard_colleagues.lounge_follow_container($chtml);\r\n });\r\n nurseslounge_myDashboard_myProfile.profile_is_complete($params, true);\r\n nurseslounge_myDashboard_colleagues.task_list_container(function($container){\r\n nurseslounge_myDashboard_myProfile.task_list($container, $params);\r\n });\r\n nurseslounge_myDashboard_colleagues.preview_profile_container(function($container){\r\n nurseslounge_myDashboard_myProfile.preview_profile($container, $params);\r\n });\r\n },\r\n colleagues_pagination:function($params, $id){\r\n $params = $.extend({}, $params,{show:$id});\r\n var $reload;\r\n var $loaded = false;\r\n var $afterFirstPagination = false;\r\n var $colleagues = $(\"#nurseslounge-home-collagues .nurseslounge-home-collagues-left\");\r\n var $section = $colleagues.find(\"#\"+$id);\r\n var $colleaguesList = $section.find('.colleagues-list');\r\n var $paginationNav = $section.find('.pagination-nav');\r\n var $previewHeight = $section.find('.colleagues-list .preview:first').innerHeight();\r\n var $colleaguesHeight = $section.innerHeight();\r\n if(!libs.memoryGet('pageSize')){\r\n var $pageSize = Math.round(($colleaguesHeight/$previewHeight)) == 'Infinity' ? 10 : Math.round(($colleaguesHeight/$previewHeight));\r\n libs.memorySave('pageSize', $pageSize);\r\n }\r\n var $resultInfo = $section.find(\".result-info-count:first\");\r\n var $paginationObj;\r\n try{\r\n $paginationObj = libs.memoryGet('colleagues_'+$id);\r\n if($paginationObj){\r\n $paginationObj.pagination('destroy');\r\n }\r\n }catch ($e) {\r\n }\r\n $paginationObj = $paginationNav.pagination({\r\n pageSize: libs.memoryGet('pageSize'),\r\n showPageNumbers: true,\r\n showPrevious: true,\r\n showNext: true,\r\n showNavigator: true,\r\n showFirstOnEllipsisShow: true,\r\n showLastOnEllipsisShow: true,\r\n dataSource:window.location.protocol +'//'+ window.location.hostname + \"/myDashboard/colleagues/friends/get\",\r\n locator: 'data.colleagues',\r\n ajax:{\r\n method: \"POST\",\r\n cache:false,\r\n dataType: \"json\",\r\n data:$params,\r\n beforeSend: function() {\r\n $colleaguesList.html(nurseslounge_myDashboard_colleagues.colleagues_preview());\r\n },\r\n complete:function($data){\r\n libs.expire($data.responseJSON);\r\n $(\"#nurseslounge-home-collagues .nurseslounge-home-collagues-left .nav-pills .nav-item a\").each(function($i, $v){\r\n var $that = $($v);\r\n if($that.data('target') == '#'+$id){\r\n $that.find('span').html($data.responseJSON.data.total);\r\n }\r\n });\r\n }\r\n },\r\n totalNumberLocator: function($data) {\r\n return $data.data.total;\r\n },\r\n callback: function($data, $pagination) {\r\n $loaded = true;\r\n if($colleaguesList.length > 0 && $colleaguesList.offset().top > 0 && $afterFirstPagination){\r\n $('html, body').animate({scrollTop:$colleaguesList.offset().top - 100});\r\n }else{\r\n $afterFirstPagination = true;\r\n }\r\n var $id = $colleaguesList.parents('.tab-pane:first').attr('id');\r\n var $pageNumber = $pagination.pageNumber;\r\n var $pageSize = $pagination.pageSize;\r\n var $totalNumber = $pagination.totalNumber;\r\n var $first = $totalNumber > 0 ? (($pageNumber-1) * $pageSize) + 1 : 0;\r\n var $last = $totalNumber > 0 ? ($first + $data.length - 1) : 0;\r\n $paginationNav.removeClass('nurseslounge-home-collagues-preload');\r\n if($id != 'all-colleagues') {\r\n $resultInfo.removeClass('nurseslounge-home-collagues-preload').html('Showing ' + $first + ' - ' + $last + ' of ' + $totalNumber + ' results for Colleagues');\r\n }else{\r\n $resultInfo.removeClass('nurseslounge-home-collagues-preload').html('');\r\n }\r\n $params = $.extend({}, $params,{show:$id});\r\n var $chtml = nurseslounge_myDashboard_colleagues.colleagues_home_item_html($data, $params);\r\n libs.checkImageLoad($($chtml).find('img'), function () {\r\n $colleaguesList.html('').html($chtml).promise().done(function () {\r\n nurseslounge_myDashboard_colleagues.colleagues_home_list_events($params);\r\n });\r\n });\r\n }\r\n });\r\n libs.memorySave('colleagues_'+$id, $paginationObj);\r\n $reload = setTimeout(function(){\r\n if(!$loaded){\r\n nurseslounge_myDashboard_colleagues.colleagues_pagination($params, $id);\r\n }else{\r\n clearTimeout($reload);\r\n }\r\n }, 10000);\r\n },\r\n colleagues_preview:function(){\r\n var $chtml = '';\r\n for(var $i=1; $i<=10; $i++){\r\n $chtml+= '' +\r\n '
  • ' +\r\n '
    ' +\r\n '
    ' +\r\n '
    ' +\r\n '
    ' +\r\n '                 ' +\r\n '                 ' +\r\n '
    ' +\r\n '
    ' +\r\n '

    ' +\r\n '                 ' +\r\n '                 ' +\r\n '                 ' +\r\n '                 ' +\r\n '

    ' +\r\n '

    ' +\r\n '                 ' +\r\n '

    ' +\r\n '
    ' +\r\n '
    ' +\r\n '
    ' +\r\n '
    ' +\r\n '
    ' +\r\n '                 ' +\r\n '                 ' +\r\n '                 ' +\r\n '         ' +\r\n '
    ' +\r\n '
    ' +\r\n '
    ' +\r\n '
  • ' +\r\n '';\r\n }\r\n return $chtml;\r\n },\r\n filter_by:function($v, $type){\r\n var $lounges = [];\r\n $.each($v.lounges, function ($k, $v) {\r\n if($v.type == $type){\r\n if($v.lounge_name != null){\r\n $lounges.push($v.lounge_name);\r\n }else{\r\n $lounges.push($v.lounge.name);\r\n }\r\n }\r\n });\r\n return $lounges.join(', ');\r\n },\r\n colleagues_home_item_html:function($colleagues, $params){\r\n var $chtml = '';\r\n $.each($colleagues, function($i, $v){\r\n var $img = $v.profile_image_root_friend;\r\n $chtml+='' +\r\n '
  • ' +\r\n '
    ' +\r\n '
    ' +\r\n '
    ' +\r\n '
    ' +\r\n ' \"profile\"' +\r\n '
    ' +\r\n '
    ' +\r\n '

    ' +\r\n $v.long_name+\r\n '

    ' +\r\n '

    ';\r\n var $append = [];\r\n var $job = $v.job_title;\r\n if($job){\r\n $append.push($job);\r\n }\r\n switch(parseInt($v.profile.id)){\r\n case 1:\r\n $append.push(nurseslounge_myDashboard_colleagues.filter_by($v,'employer'));\r\n break;\r\n case 2:\r\n $append.push(nurseslounge_myDashboard_colleagues.filter_by($v,'organization'));\r\n break;\r\n case 3:\r\n $append.push(nurseslounge_myDashboard_colleagues.filter_by($v,'school'));\r\n break;\r\n case 4:\r\n $append.push(nurseslounge_myDashboard_colleagues.filter_by($v,'employer'));\r\n break;\r\n }\r\n $chtml+= $append.join(', ');\r\n $chtml+='' +\r\n '

    ' +\r\n '
    ' +\r\n '
    ' +\r\n '
    ' +\r\n '
    ' +\r\n '
    ';\r\n if(!$params.guestId) {\r\n if ($params.show == 'all-colleagues') {\r\n $chtml += '' +\r\n //'' +\r\n '';\r\n }\r\n if ($params.show == 'my-colleagues') {\r\n $chtml += '' +\r\n //'' +\r\n '';\r\n }\r\n if ($params.show == 'sent-invite') {\r\n $chtml += '' +\r\n //'' +\r\n '';\r\n }\r\n if ($params.show == 'received-invite') {\r\n $chtml += '' +\r\n '' +\r\n '';\r\n }\r\n //if ($params.show == 'blocked') {\r\n // $chtml += '' +\r\n // '';\r\n //}\r\n }\r\n $chtml+='' +\r\n '
    ' +\r\n '
    ' +\r\n '
    ' +\r\n '
  • ';\r\n });\r\n return $chtml;\r\n },\r\n colleagues_home_list_events:function($saveParams){\r\n var $colleagues = $(\"#nurseslounge-home-collagues .nurseslounge-home-collagues-left\");\r\n var $section = $colleagues.find(\"#\"+$saveParams.show);\r\n var $bindKeyPress;\r\n var $form = $section.find('form:first');\r\n $form.submit(function($e){\r\n $e.preventDefault();\r\n var $that = $(this);\r\n try{\r\n clearTimeout($bindKeyPress);\r\n }catch ($e) {\r\n\r\n }\r\n $bindKeyPress = setTimeout(function(){\r\n $saveParams = $.extend({}, $saveParams, {search:$that.val()});\r\n nurseslounge_myDashboard_colleagues.colleagues_pagination($saveParams, $saveParams.show);\r\n }, 800);\r\n });\r\n $form.find('input[name=\"search\"]').unbind().on('keyup keydown keypress', function(){\r\n var $that = $(this);\r\n try{\r\n clearTimeout($bindKeyPress);\r\n }catch ($e) {\r\n\r\n }\r\n $bindKeyPress = setTimeout(function(){\r\n $saveParams = $.extend({}, $saveParams, {search:$that.val()});\r\n nurseslounge_myDashboard_colleagues.colleagues_pagination($saveParams, $saveParams.show);\r\n }, 800);\r\n });\r\n var $colleaguesList = $section.find('.colleagues-list .item');\r\n $colleaguesList.find('.option').unbind().click(function($e){\r\n $e.stopPropagation();\r\n var $that = $(this);\r\n var $item = $that.parents('.item:first');\r\n var $toUserId = $item.data('id');\r\n var $url = $item.data('url');\r\n var $name = $item.data('name');\r\n var $action = $that.data('action');\r\n if($action == 1){\r\n nurseslounge_myDashboard_colleagues.colleagues_invitation_modal($url, $name, function($ok){\r\n if($ok){\r\n var $params = $.extend({}, $saveParams, {to_user_id: $toUserId, status_id: $action});\r\n nurseslounge_myDashboard_colleagues.colleagues_home_set($params, function () {\r\n nurseslounge_myDashboard_colleagues.init($saveParams);\r\n });\r\n }\r\n });\r\n }else {\r\n var $params = $.extend({}, $saveParams, {to_user_id: $toUserId, status_id: $action});\r\n nurseslounge_myDashboard_colleagues.colleagues_home_set($params, function () {\r\n nurseslounge_myDashboard_colleagues.init($saveParams);\r\n });\r\n }\r\n });\r\n $colleaguesList.unbind().click(function () {\r\n var $that = $(this);\r\n var $profileUrl = $that.data('url');\r\n router.navigate($profileUrl,true);\r\n });\r\n },\r\n colleagues_invitation_modal:function($url, $name, cback){\r\n var $modal = $(\"#nurseslounge-home-my-profile-invitations-modal\");\r\n $modal.find('.user-name').attr('href',$url).html($name);\r\n $modal.find('.send').unbind().click(function(){\r\n $modal.modal('hide');\r\n cback(true);\r\n });\r\n $modal.modal('show');\r\n },\r\n colleagues_home_set:function($params, cback){\r\n $.ajax({\r\n method: 'POST',\r\n url:'/myDashboard/colleagues/friends/set',\r\n data:$params,\r\n dataType: \"json\",\r\n success: function($data){\r\n libs.expire($data);\r\n if($data.status == 'success'){\r\n if(cback != undefined) {\r\n cback();\r\n }\r\n }\r\n }\r\n });\r\n },\r\n //Recommended Friends\r\n recommended_friends:function(cback){\r\n $.ajax({\r\n method: 'POST',\r\n url: '/myDashboard/colleagues/friends/get',\r\n data: {\r\n show : \"recommended\",\r\n pageSize:4,\r\n pageNumber:1,\r\n user_id: libs.memoryGet('user_id')\r\n },\r\n dataType: \"json\",\r\n success: function ($data) {\r\n libs.expire($data);\r\n if ($data.status == 'success') {\r\n var $chtml = '';\r\n $.each($data.data.colleagues, function($i, $v){\r\n $chtml += nurseslounge_myDashboard_colleagues.recommended_friends_html($v);\r\n });\r\n cback($chtml);\r\n }\r\n }\r\n });\r\n },\r\n recommended_friends_html:function($v){\r\n var $img = $v.profile_image_root_friend;\r\n return '' +\r\n '
  • ' +\r\n '
    ' +\r\n '
    ' +\r\n '
    ' +\r\n '
    ' +\r\n ' \"education\"' +\r\n '
    ' +\r\n '
    ' +\r\n '

    ' +\r\n ' '+$v.long_name+'' +\r\n '

    ' +\r\n ' Connect' +\r\n '
    ' +\r\n '
    ' +\r\n '
    ' +\r\n '
    ' +\r\n '
  • ';\r\n },\r\n //Recommended Friends\r\n recommended_friends_container:function($params, $chtml){\r\n if($chtml == ''){\r\n $(\"#nurseslounge-home-collagues .nurseslounge-home-collagues-right .invite-colleagues\").parents('.card:first').remove();\r\n return false;\r\n }\r\n libs.checkImageLoad($($chtml).find('img'), function(){\r\n $(\"#nurseslounge-home-collagues .nurseslounge-home-collagues-right .invite-colleagues\").html($chtml).promise().done(function(){\r\n $(this).find(\".open-profile\").unbind().click(function(){\r\n var $guestId = $(this).data('id');\r\n router.navigate('/profile/'+$guestId);\r\n });\r\n $(this).find(\".send-friend-request\").unbind().click(function($e){\r\n $e.stopPropagation();\r\n var $li = $(this).parents('li:first');\r\n var $toUserId = $li.data('id');\r\n var $name = $li.data('name');\r\n var $url = $li.data('url');\r\n nurseslounge_myDashboard_colleagues.colleagues_invitation_modal($url, $name, function($ok){\r\n if($ok){\r\n $li.fadeOut().remove();\r\n var $params = {user_id:libs.memoryGet('user_id'),to_user_id:$toUserId, status_id:1};\r\n nurseslounge_myDashboard_colleagues.colleagues_home_set($params, function () {\r\n nurseslounge_myDashboard_colleagues.init($params);\r\n });\r\n }\r\n });\r\n });\r\n });\r\n });\r\n },\r\n //Banners\r\n banners_location:function(cback){\r\n cback({\r\n 'banners':$(\"#nurseslounge-home-collagues .nurseslounge-home-collagues-right .banners\")\r\n });\r\n },\r\n //Invite Colleagues\r\n invite_colleagues:function(cback){\r\n cback({\r\n 'colleagues':$(\"#nurseslounge-home-collagues .nurseslounge-home-collagues-right .send-invite:first\")\r\n });\r\n },\r\n //Follow Lounges\r\n lounge_follow_container:function($chtml){\r\n libs.checkImageLoad($($chtml).find('img'), function(){\r\n $(\"#nurseslounge-home-collagues .nurseslounge-home-collagues-right .follow-lounges\").html($chtml);\r\n });\r\n },\r\n //Task List Container\r\n task_list_container:function(cback){\r\n var $container = $(\"#nurseslounge-home-collagues .nurseslounge-home-collagues-right\");\r\n cback($container);\r\n },\r\n //Preview Profile\r\n preview_profile_container:function(cback){\r\n var $container = $(\"#nurseslounge-home-collagues .nurseslounge-home-collagues-right\");\r\n cback($container);\r\n },\r\n};\r\n","var nurseslounge_myDashboard_jobsNearMe = {\r\n init:function($params){\r\n nurseslounge_myDashboard_jobsNearMe.jobs_events($params, function(){\r\n try{\r\n nurseslounge_myDashboard_jobsNearMe.jobs_search($params);\r\n }catch (e) {\r\n\r\n }\r\n });\r\n nurseslounge_myDashboard_myProfile.profile_is_complete($params, true);\r\n },\r\n jobs_events:function($params, cback){\r\n var $jobsUp = $(\"#nurseslounge-home-job-near-me .nurseslounge-home-job-near-me-up form\");\r\n var $search = $jobsUp.find(\"input[name='search']\")[0];\r\n new google.maps.places.Autocomplete($search,{\r\n types: ['(regions)'],\r\n componentRestrictions: {country: \"us\"}\r\n });\r\n var $employerName = $jobsUp.find('input[name=\"employerName\"]').unbind();\r\n nurseslounge_myDashboard_jobsNearMe.jobs_employer_autocomplete(\r\n $employerName,\r\n $params,\r\n \"/myDashboard/jobNearMe/mapLocations/autocomplete\"\r\n );\r\n cback();\r\n },\r\n jobs_employer_autocomplete:function($target, $data, $url){\r\n try {\r\n $($target).autocomplete(\"destroy\");\r\n }catch (e) {\r\n }\r\n var $value = '';\r\n $($target).autocomplete({\r\n minLength\t:2,\r\n search\t\t: function(){\r\n $(this).addClass(\"ui-autocomplete-loading\");\r\n },\r\n open \t\t: function(){\r\n $(this).removeClass(\"ui-autocomplete-loading\");\r\n },\r\n source: function(request, response) {\r\n $.ajax({\r\n method: 'POST',\r\n url:$url,\r\n data:$.extend({\r\n keyword:$($target).val()\r\n }, $data),\r\n dataType: \"json\",\r\n success: function($data){\r\n libs.expire($data);\r\n $value = '';\r\n response($data);\r\n }\r\n });\r\n },\r\n create:function(){\r\n $(this).prev().remove();\r\n $(this).trigger(\"keypress.autocomplete\");\r\n },\r\n select: function (event, ui) {\r\n $value = ui.item.value;\r\n $(this).val($value);\r\n return false;\r\n }\r\n }).keypress(function ($e) {\r\n if ($e.which == 13) {\r\n $(this).autocomplete(\"close\");\r\n }\r\n });\r\n },\r\n jobs_search:function($params){\r\n var $jobsNearMe = $(\"#nurseslounge-home-job-near-me\");\r\n var $jobsNearMeDown = $jobsNearMe.find(\".nurseslounge-home-job-near-me-down\");\r\n var $jobListContainer = $jobsNearMeDown.find(\".jobs-list-container:first\");\r\n var $preview = nurseslounge_myDashboard_jobsNearMe.jobs_search_list_preview();\r\n var $bindingResize;\r\n var $map = new google.maps.Map(document.getElementById('search-location-map'), {\r\n center: {lat: 29.8550297, lng: -97.9463043},\r\n mapTypeId: google.maps.MapTypeId.ROADMAP,\r\n mapTypeControl: false,\r\n streetViewControl: false,\r\n fullscreenControl: false,\r\n zoom: 5,\r\n zoomControl: true,\r\n zoomControlOptions: {\r\n position: google.maps.ControlPosition.TOP_LEFT\r\n },\r\n });\r\n $map.setTilt(0);\r\n google.maps.event.trigger($map, 'resize');\r\n nurseslounge_myDashboard_jobsNearMe.jobs_near_me_up_validate(function($form){\r\n $params = $.extend({}, $params, libs.getObjForm($form));\r\n $jobListContainer.html($preview).promise().done(function () {\r\n nurseslounge_myDashboard_jobsNearMe.jobs_near_me_request($params, function ($data) {\r\n //Spotlight\r\n nurseslounge_myDashboard_jobsNearMe.spotlight_container(function($container){\r\n $params = $.extend({}, $params, {zip:$data.data.form.search});\r\n nurseslounge_myDashboard_myProfile.spotlight($container, $params);\r\n });\r\n //\r\n nurseslounge_myDashboard_jobsNearMe.jobs_near_me_search_map_list($params, $map, $data);\r\n });\r\n });\r\n });\r\n $jobListContainer.html($preview).promise().done(function(){\r\n nurseslounge_myDashboard_jobsNearMe.jobs_near_me_request($params, function ($data) {\r\n //Spotlight\r\n nurseslounge_myDashboard_jobsNearMe.spotlight_container(function($container){\r\n $params = $.extend({}, $params, {zip:$data.data.form.search});\r\n nurseslounge_myDashboard_myProfile.spotlight($container, $params);\r\n });\r\n //\r\n nurseslounge_myDashboard_jobsNearMe.jobs_near_me_search_map_list($params, $map, $data);\r\n });\r\n });\r\n if(!libs.isMobile()){\r\n $(window).unbind('resize').resize(function(){\r\n try{\r\n clearTimeout($bindingResize);\r\n }catch (e) {\r\n }\r\n $bindingResize = setTimeout(function(){\r\n $params = $.extend({}, $params, libs.getObjForm($(\"#nurseslounge-home-job-near-me .nurseslounge-home-job-near-me-up form\")));\r\n $jobListContainer.html($preview).promise().done(function(){\r\n nurseslounge_myDashboard_jobsNearMe.jobs_near_me_request($params, function ($data) {\r\n //Spotlight\r\n nurseslounge_myDashboard_jobsNearMe.spotlight_container(function($container){\r\n $params = $.extend({}, $params, {zip:$data.data.form.search});\r\n nurseslounge_myDashboard_myProfile.spotlight($container, $params);\r\n });\r\n //\r\n nurseslounge_myDashboard_jobsNearMe.jobs_near_me_search_map_list($params, $map, $data);\r\n });\r\n });\r\n }, 800);\r\n });\r\n }\r\n },\r\n jobs_search_list_preview:function(){\r\n var $chtml = '';\r\n for(var $x=0;$x<10;$x++){\r\n $chtml+= '' +\r\n '
  • ' +\r\n ' ' +\r\n '
    ' +\r\n '
    ' +\r\n '
    ' +\r\n '
    ';\r\n for(var $s = 1; $s<=5; $s++) {\r\n $chtml+= '' +\r\n '' +\r\n ' ' +\r\n '';\r\n }\r\n $chtml+= '' +\r\n '
    ' +\r\n '
    ' +\r\n '    ' +\r\n '    ' +\r\n '
    ' +\r\n '
    ' +\r\n '
    ' +\r\n '
    ' +\r\n '
    ' +\r\n '
    ' +\r\n '     ' +\r\n '     ' +\r\n '     ' +\r\n '     ' +\r\n '     ' +\r\n '
    ' +\r\n '
    ' +\r\n '

    ' +\r\n '         ' +\r\n '         ' +\r\n '         ' +\r\n '         ' +\r\n '

    ' +\r\n '

    ' +\r\n '                    ' +\r\n '                    ' +\r\n '                    ' +\r\n '                    ' +\r\n '

    ' +\r\n '
    ' +\r\n '
    ' +\r\n '
    ' +\r\n '
    ' +\r\n '
    ' +\r\n '
  • ';\r\n }\r\n return $chtml;\r\n },\r\n jobs_near_me_up_validate:function(cback){\r\n var $validator;\r\n try {\r\n $validator = $(\"#nurseslounge-home-job-near-me .nurseslounge-home-job-near-me-up form\").validate();\r\n $validator.destroy();\r\n }catch (e) {\r\n\r\n }\r\n $validator = $(\"#nurseslounge-home-job-near-me .nurseslounge-home-job-near-me-up form\").validate({\r\n onsubmit: true,\r\n ignore: \"*:not(.validate)\",\r\n debug: true,\r\n rules: {\r\n search: {\r\n required: false,\r\n maxlength: 255\r\n },\r\n employerName: {\r\n required: false,\r\n maxlength: 255\r\n },\r\n distance: {\r\n required: true\r\n },\r\n listingTypeId:{\r\n required: true\r\n }\r\n },\r\n messages: {\r\n search: {\r\n required: \"The search field is required\",\r\n maxlength: \"The search field cannot exceed 255 characters\"\r\n },\r\n employerName: {\r\n required: \"The employer name field is not required\",\r\n maxlength: \"The employer name cannot exceed 255 characters\"\r\n },\r\n distance: {\r\n required: \"The distance field is required\"\r\n },\r\n listingTypeId:{\r\n required: \"The listing field is required\"\r\n }\r\n },\r\n errorPlacement: function($error, $element){\r\n var $ele = $($element);\r\n var $name = $ele.attr(\"name\");\r\n if(!$ele.hasClass('is-invalid')){\r\n $ele.addClass('is-invalid');\r\n }\r\n $(\".\"+$name+\"_validate\").html($($error).text()).show();\r\n },\r\n success: function($error, $element) {\r\n var $ele = $($element);\r\n var $name = $ele.attr(\"name\");\r\n if($ele.hasClass('is-invalid')){\r\n $ele.removeClass('is-invalid');\r\n }\r\n $(\".\"+$name+\"_validate\").html('').hide();\r\n },\r\n submitHandler: function($form) {\r\n cback($form);\r\n return false;\r\n }\r\n });\r\n },\r\n add_map_request_current_location:function(cback){\r\n var $geocoder = new google.maps.Geocoder;\r\n var $location = {};\r\n if (navigator.geolocation) {\r\n navigator.geolocation.getCurrentPosition(function ($position) {\r\n $location = {\r\n lat: $position.coords.latitude,\r\n lng: $position.coords.longitude\r\n };\r\n $geocoder.geocode({'location':$location}, function($result, $status) {\r\n if ($status === 'OK') {\r\n if ($result[0]) {\r\n cback($location, $result[0].formatted_address);\r\n }else{\r\n cback($location, 'The address can to be found');\r\n }\r\n }else{\r\n cback($location, 'Geolocation is not available');\r\n }\r\n });\r\n }, function ($err) {\r\n console.log('ERROR(' + $err.code + '): ' + $err.message);\r\n });\r\n } else {\r\n cback($location, 'Geolocation is not available');\r\n }\r\n },\r\n jobs_near_me_request:function($params, cback){\r\n $.ajax({\r\n url: \"/myDashboard/jobNearMe/mapLocations/get\",\r\n method: \"POST\",\r\n cache:false,\r\n dataType: \"json\",\r\n data:$params,\r\n success: function ($data) {\r\n libs.expire($data);\r\n if($data.status == 'success'){\r\n nurseslounge_myDashboard_jobsNearMe.form_set_values($data.data, function(){\r\n cback($data);\r\n });\r\n }\r\n }\r\n });\r\n },\r\n form_set_values:function($data, cback){\r\n var $jobs = $(\"#nurseslounge-home-job-near-me\");\r\n var $jobsForm = $jobs.find(\".nurseslounge-home-job-near-me-up form\");\r\n var $jobsDown = $jobs.find(\".nurseslounge-home-job-near-me-down\");\r\n $jobsForm.find(\"input[name='search']\").val($data.form.search);\r\n $jobsForm.find(\"input[name='employerName']\").val($data.form.employer_name);\r\n $jobsForm.find(\"select[name='distance']\").val($data.form.distance);\r\n $jobsForm.find(\"select[name='listingTypeId']\").val($data.form.listing_type_id);\r\n $jobsDown.find(\".result-numbers:first\").html('Showing '+$data.total+' availables Jobs');\r\n if(cback != undefined){\r\n cback();\r\n }\r\n },\r\n jobs_near_me_search_map_list:function($params, $map, $data){\r\n var $mapsMarkers = libs.memoryGet('maps_markers') ? libs.memoryGet('maps_markers') : [];\r\n $.each($mapsMarkers, function($i, $v){\r\n $v.setMap(null);\r\n });\r\n libs.memorySave('maps_markers', []);\r\n var $positionSave = [];\r\n var $bounds = new google.maps.LatLngBounds();\r\n var $locations = $data && $data.data && $data.data.locations && $data.data.locations ? $data.data.locations : null;\r\n var $locationsLength = $locations && $locations.length > 0 ? true : false;\r\n if($locationsLength){\r\n nurseslounge_jobs.add_map_marker_with_info($map, $locations, $positionSave, true, function(){\r\n nurseslounge_myDashboard_jobsNearMe.jobs_near_me_pagination($params, $locations, function(){\r\n $.each($positionSave, function ($i, $v) {\r\n $bounds.extend($v);\r\n });\r\n $map.fitBounds($bounds);\r\n $map.panToBounds($bounds);\r\n if($data.data.form.search != '') {\r\n $map.setZoom(Math.round(14 - Math.log($data.data.form.distance) / Math.LN2) + 0.7);\r\n }\r\n });\r\n });\r\n }else{\r\n nurseslounge_myDashboard_jobsNearMe.jobs_near_me_pagination($params, $locations, function(){\r\n nurseslounge_jobs.add_map_request_current_address_location($data.data.form.search, function($location){\r\n if($location.lat){\r\n $map.setCenter($location);\r\n $map.setZoom(Math.round(14-Math.log($data.data.form.distance)/Math.LN2) + 0.7);\r\n }\r\n });\r\n });\r\n }\r\n //$map.addListener(\"click\", function(){});\r\n },\r\n jobs_near_me_pagination:function($params, $locations, cback){\r\n var $reload;\r\n var $loaded = false;\r\n var $afterFirstPagination = false;\r\n var $jobsNearMe = $(\"#nurseslounge-home-job-near-me\");\r\n var $jobListContainer = $jobsNearMe.find(\".nurseslounge-home-job-near-me-down .jobs-list-container\");\r\n var $paginationContainer = $jobsNearMe.find(\".nurseslounge-home-job-near-me-down .pagination-nav\");\r\n var $previewHeight = $jobsNearMe.find(\".nurseslounge-home-job-near-me-down .jobs-list-container .preview:first\").innerHeight();\r\n var $jobHeight = $jobListContainer.parents(':first').innerHeight();\r\n var $pageSize = Math.round(($jobHeight/$previewHeight));\r\n var $paginationObj;\r\n try{\r\n $paginationObj = libs.memoryGet('jobs_near_me_pagination');\r\n if($paginationObj){\r\n $paginationObj.pagination('destroy');\r\n }\r\n }catch ($e) {\r\n }\r\n $paginationObj = $paginationContainer.pagination({\r\n pageSize: $pageSize > 0 ? $pageSize : 0,\r\n showPageNumbers: true,\r\n showPrevious: true,\r\n showNext: true,\r\n showNavigator: true,\r\n showFirstOnEllipsisShow: true,\r\n showLastOnEllipsisShow: true,\r\n dataSource:$locations.filter(function($obj){\r\n return $obj.employer_have_clicks > 0;\r\n }),\r\n callback: function($data, $pagination) {\r\n $loaded = true;\r\n if($jobListContainer.length > 0 && $jobListContainer.offset().top > 0 && $afterFirstPagination){\r\n $('html, body').animate({scrollTop:$jobListContainer.offset().top - 100});\r\n }else{\r\n $afterFirstPagination = true;\r\n }\r\n var $chtml = nurseslounge_jobs.add_map_list_html($params, $data);\r\n if($chtml == ''){\r\n $chtml = '' +\r\n '
    ' +\r\n '

    Jobs for this area coming soon.

    ' +\r\n '
    ' +\r\n ' ' +\r\n '
    ' +\r\n '
    ';\r\n }\r\n libs.checkImageLoad($($chtml).find('img'), function () {\r\n $jobListContainer.html('').html($chtml).promise().done(function(){\r\n nurseslounge_myDashboard_jobsNearMe.jobs_map_events(function() {});\r\n });\r\n });\r\n }\r\n });\r\n libs.memorySave('jobs_near_me_pagination', $paginationObj);\r\n $reload = setTimeout(function(){\r\n if(!$loaded){\r\n nurseslounge_myDashboard_jobsNearMe.jobs_near_me_pagination($params, $locations, cback);\r\n }else{\r\n clearTimeout($reload);\r\n }\r\n }, 10000);\r\n if (cback != undefined) {\r\n cback();\r\n }\r\n },\r\n jobs_map_events:function(cback){\r\n var $jobsNearMe = $(\"#nurseslounge-home-job-near-me\");\r\n var $jobListContainer = $jobsNearMe.find(\".nurseslounge-home-job-near-me-down .jobs-list-container\");\r\n var $spu = $jobListContainer.find('.spu');\r\n var $mapsMarkers = libs.memoryGet('maps_markers');\r\n var $originalIcon;\r\n var $originalMarker;\r\n $spu.unbind();\r\n $spu.click(function(){\r\n nurseslounge_jobs.add_map_show_spu($(this).data('key'), $(this).data('facility_key'));\r\n }).mouseover(function(){\r\n var $location = $(this).data('location').split(',');\r\n var $iconUrl = './../../bimg/NursesLounge/onfocus.png';\r\n $.each($mapsMarkers, function($i, $v){\r\n var $position = $v.getPosition();\r\n if(parseFloat($location[0]) == $position.lat() && parseFloat($location[1]) == $position.lng()){\r\n $originalMarker = $v;\r\n $originalIcon = $originalMarker.getIcon();\r\n $originalMarker.setIcon({url:$iconUrl, scaledSize: (new google.maps.Size(20, 35))});\r\n return false;\r\n }\r\n });\r\n }).mouseout(function(){\r\n try{\r\n $originalMarker.setIcon($originalIcon);\r\n }catch (e) {\r\n\r\n }\r\n });\r\n if(cback != undefined){\r\n cback();\r\n }\r\n },\r\n //Spotlight\r\n spotlight_container:function(cback){\r\n var $container = $(\"#nurseslounge-home-job-near-me .nurseslounge-home-job-near-me-up .spotlight-wrapper\");\r\n cback($container);\r\n },\r\n};\r\n","var nurseslounge_myDashboard_degreesForMe = {\r\n init:function($params){\r\n nurseslounge_myDashboard_degreesForMe.degrees_home_search($params);\r\n nurseslounge_myDashboard_degreesForMe.banners_location(function($config){\r\n nurseslounge_myDashboard_myProfile.banners_engine($config);\r\n });\r\n nurseslounge_myDashboard_myProfile.profile_is_complete($params, true);\r\n nurseslounge_myDashboard_degreesForMe.task_list_container(function($container){\r\n nurseslounge_myDashboard_myProfile.task_list($container, $params);\r\n });\r\n nurseslounge_myDashboard_degreesForMe.lounge_ads_location(function($config){\r\n nurseslounge_lounge_overview.lounge_ads_engine($config);\r\n });\r\n },\r\n degrees_home_search:function($params){\r\n var $degreesFormMeLeft = $(\"#nurseslounge-home-degrees-for-me .nurseslounge-home-degrees-for-me-left\");\r\n var $degreeList = $degreesFormMeLeft.find(\".degree-list:first\");\r\n var $degreeListPreview = nurseslounge_myDashboard_degreesForMe.degree_for_me_preview();\r\n var $resultInfo = $degreesFormMeLeft.find(\".result-info-count:first\");\r\n var $resultPreview = ' ';\r\n var $paginationNav = $degreesFormMeLeft.find('.pagination-nav');\r\n var $paginationNavPreview = ' ';\r\n $resultInfo.addClass('nurseslounge-home-degrees-for-me-preload').html($resultPreview);\r\n $paginationNav.addClass('nurseslounge-home-degrees-for-me-preload').html($paginationNavPreview);\r\n $degreeList.html($degreeListPreview).promise().done(function() {\r\n nurseslounge_myDashboard_degreesForMe.degree_for_me_pagination($params);\r\n });\r\n },\r\n degree_for_me_preview:function(){\r\n var $chtml = '';\r\n for(var $i=1; $i<=10; $i++){\r\n $chtml+= '' +\r\n '
  • ' +\r\n '
    ' +\r\n '
    ' +\r\n '
    ' +\r\n '
    ' +\r\n '                 ' +\r\n '                 ' +\r\n '
    ' +\r\n '
    ' +\r\n '

    ' +\r\n '                   ' +\r\n '                   ' +\r\n '                   ' +\r\n '                   ' +\r\n '

    ' +\r\n '

     

    ' +\r\n '

     

    ' +\r\n '
    ' +\r\n '
    ' +\r\n '
    ' +\r\n '
    ' +\r\n '
    ' +\r\n '
    ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n '
    ' +\r\n '
    ' +\r\n '  ' +\r\n '
    ' +\r\n '
    ' +\r\n ' ' +\r\n ' ' +\r\n '
    ' +\r\n '
    ' +\r\n '
  • ';\r\n }\r\n return $chtml;\r\n },\r\n degree_for_me_pagination:function($params){\r\n var $reload;\r\n var $loaded = false;\r\n var $afterFirstPagination = false;\r\n var $degreesFormMeLeft = $(\"#nurseslounge-home-degrees-for-me .nurseslounge-home-degrees-for-me-left\");\r\n var $degreeList = $degreesFormMeLeft.find('.degree-list');\r\n var $paginationNav = $degreesFormMeLeft.find('.pagination-nav');\r\n var $previewHeight = $degreesFormMeLeft.find('.degree-list .preview:first').innerHeight();\r\n var $degreeHeight = $degreeList.innerHeight();\r\n var $pageSize = Math.round(($degreeHeight/$previewHeight));\r\n var $resultInfo = $degreesFormMeLeft.find(\".result-info-count:first\");\r\n var $saveParams = $params;\r\n var $paginationObj;\r\n try{\r\n $paginationObj = libs.memoryGet('degree_for_me_pagination');\r\n if($paginationObj){\r\n $paginationObj.pagination('destroy');\r\n }\r\n }catch ($e) {\r\n }\r\n $paginationObj = $paginationNav.pagination({\r\n pageSize: $pageSize,\r\n showPageNumbers: true,\r\n showPrevious: true,\r\n showNext: true,\r\n showNavigator: true,\r\n showFirstOnEllipsisShow: true,\r\n showLastOnEllipsisShow: true,\r\n dataSource:window.location.protocol +'//'+ window.location.hostname + \"/myDashboard/degreesForMe/get\",\r\n locator: 'data.degrees',\r\n ajax:{\r\n method: \"POST\",\r\n cache:false,\r\n dataType: \"json\",\r\n data:$params,\r\n beforeSend: function() {\r\n $degreeList.html(nurseslounge_myDashboard_degreesForMe.degree_for_me_preview());\r\n },\r\n complete:function($data){\r\n libs.expire($data.responseJSON);\r\n }\r\n },\r\n totalNumberLocator: function($data) {\r\n return $data.data.total;\r\n },\r\n callback: function($data, $pagination) {\r\n $loaded = true;\r\n if($degreeList.length > 0 && $degreeList.offset().top > 0 && $afterFirstPagination){\r\n $('html, body').animate({scrollTop:$degreeList.offset().top - 100});\r\n }else{\r\n $afterFirstPagination = true;\r\n }\r\n var $pageNumber = $pagination.pageNumber;\r\n var $pageSize = $pagination.pageSize;\r\n var $totalNumber = $pagination.totalNumber;\r\n var $first = $totalNumber > 0 ? (($pageNumber-1) * $pageSize) + 1 : 0;\r\n var $last = $totalNumber > 0 ? ($first + $data.length - 1) : 0;\r\n $paginationNav.removeClass('nurseslounge-home-degrees-for-me-preload');\r\n $resultInfo.removeClass('nurseslounge-home-degrees-for-me-preload').html('Showing '+$first+' - '+$last+' of '+$totalNumber+' results for Degrees');\r\n var $chtml = nurseslounge_myDashboard_degreesForMe.degrees_for_me_item_html($data);\r\n libs.checkImageLoad($($chtml).find('img'), function () {\r\n $degreeList.html('').html($chtml).promise().done(function () {\r\n nurseslounge_myDashboard_degreesForMe.degrees_for_me_list_events($saveParams);\r\n });\r\n });\r\n }\r\n });\r\n libs.memorySave('degree_for_me_pagination', $paginationObj);\r\n $reload = setTimeout(function(){\r\n if(!$loaded){\r\n nurseslounge_myDashboard_degreesForMe.degree_for_me_pagination($params);\r\n }else{\r\n clearTimeout($reload);\r\n }\r\n }, 10000);\r\n },\r\n degrees_for_me_item_html:function($loungeDegrees){\r\n var $userId = libs.memoryGet('user_id');\r\n var $chtml = '';\r\n $.each($loungeDegrees, function($i, $v){\r\n var $img = $v.lounge.logo_root_lounge;\r\n $chtml+='' +\r\n '
  • ';\r\n $chtml +='';\r\n if($v.sponsored == 1) {\r\n $chtml += '';\r\n }\r\n $chtml += '';\r\n $chtml +=\r\n '
    ' +\r\n '
    ' +\r\n '
    ' +\r\n '
    ' +\r\n ' \"hospital\"' +\r\n '
    ' +\r\n '
    ' +\r\n '

    ' +\r\n ' '+$v.title+'' +\r\n '

    ' +\r\n '

    '+$v.lounge.small_name+'

    ' +\r\n '

    ';\r\n if($v.lounge.location.address_city) {\r\n $chtml+='' +\r\n $v.lounge.location.address_city + ', ';\r\n }\r\n if($v.lounge.location.address_state) {\r\n $chtml+='' +\r\n $v.lounge.location.address_state;\r\n }\r\n $chtml+='' +\r\n '

    ' +\r\n '
    ' +\r\n '
    ' +\r\n '
    ' +\r\n '
    ' +\r\n '
    ' +\r\n '
    ' +\r\n nurseslounge_myDashboard_degreesForMe.add_stars($v.rating) +\r\n '
    ' +\r\n '
    ' +\r\n $v.rating + ' / 5' +\r\n '
    ' +\r\n '
    ';\r\n if($userId != 'guest'){\r\n $chtml += '';\r\n }\r\n $chtml += '' +\r\n '
    ' +\r\n '
    ' +\r\n '
  • ';\r\n });\r\n return $chtml;\r\n },\r\n add_stars:function($rating){\r\n var $chtml = '';\r\n for(var $i=1; $i<=5; $i++) {\r\n var $star = $rating - $i;\r\n var $offsetOn;\r\n var $offsetOff;\r\n var $unique = libs.getUniqueId();\r\n if($star >= 0){\r\n $offsetOn = 100;\r\n $offsetOff = 0;\r\n }else if($star < 0 && $star > -1){\r\n $star = ($star * -1);\r\n $offsetOff = ($star * 100);\r\n $offsetOn = (100 - $offsetOff);\r\n }else{\r\n $offsetOn = 0;\r\n $offsetOff = 100;\r\n }\r\n $chtml += '' +\r\n '' +\r\n ' ' +\r\n ' ';\r\n if($offsetOn > 0) {\r\n $chtml += '' +\r\n '';\r\n }\r\n if($offsetOff > 0){\r\n $chtml += '' +\r\n '';\r\n }\r\n $chtml += '' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n '';\r\n }\r\n return $chtml;\r\n },\r\n degrees_for_me_list_events:function($params){\r\n var $degreesFormMeLeft = $(\"#nurseslounge-home-degrees-for-me .nurseslounge-home-degrees-for-me-left\");\r\n var $degreeList = $degreesFormMeLeft.find('.degree-list');\r\n $degreeList.find(\".open-degree\").unbind().click(function(){\r\n var $key = $(this).parents('.item:first').data('key');\r\n nurseslounge_lounge_degrees.add_map_show_spu($key);\r\n });\r\n },\r\n //Banners\r\n banners_location:function(cback){\r\n cback({\r\n 'banners':$(\"#nurseslounge-home-degrees-for-me .nurseslounge-home-degrees-for-me-right .banners\")\r\n });\r\n },\r\n lounge_ads_location:function(cback){\r\n cback({\r\n 'ads':$(\"#nurseslounge-home-degrees-for-me .nurseslounge-home-degrees-for-me-right .lounge-ads\")\r\n });\r\n },\r\n //Task List Container\r\n task_list_container:function(cback){\r\n var $container = $(\"#nurseslounge-home-degrees-for-me .nurseslounge-home-degrees-for-me-right\");\r\n cback($container);\r\n },\r\n};\r\n","var nurseslounge_myDashboard_myArticles = {\r\n section:'articles',\r\n init:function($params){\r\n var $homeArticles = $(\"#nurseslounge-home-articles\");\r\n var $tab;\r\n if($params.notification_type == 'myPublishedArticle'){\r\n $tab = 'published-articles';\r\n libs.memorySave('nurseslounge_myDashboard_myArticles_notificationTypeKey', $params.notification_type_key);\r\n }\r\n var $section = nurseslounge_myDashboard_myArticles.section;\r\n nurseslounge_myDashboard_myArticles.goto($section, $tab, false);\r\n nurseslounge_myDashboard_myArticles.section = $section != 'articles' ? 'articles' : $section;\r\n nurseslounge_myDashboard_myProfile.profile_is_complete($params, true);\r\n $(\"html, body\").animate({scrollTop:$homeArticles.offset().top});\r\n },\r\n tab_open:'published-articles',\r\n goto:function($section, $tab, $autoScroll, cback){\r\n nurseslounge_myDashboard_myArticles.editor_is_not_saved($section, $tab, function(){\r\n $tab = $tab == undefined ? nurseslounge_myDashboard_myArticles.tab_open : $tab;\r\n $autoScroll = $autoScroll == undefined ? true : $autoScroll;\r\n var $homeArticles = $(\"#nurseslounge-home-articles\");\r\n if($autoScroll){\r\n $(\"html, body\").animate({scrollTop:$homeArticles.offset().top});\r\n }\r\n var $articlesMenu = $homeArticles.find('.articles-menu');\r\n var $articlesListMenu = $articlesMenu.find('.articles-list-menu');\r\n var $articlesEditorMenu = $articlesMenu.find('.articles-editor-menu');\r\n var $articlesList = $homeArticles.find('.articles-list');\r\n var $editorWrapper = $homeArticles.find('.editor-wrapper');\r\n if($section == 'articles' || $section == 'editor') {\r\n $articlesList.hide();\r\n $articlesListMenu.hide();\r\n $editorWrapper.hide();\r\n $articlesEditorMenu.hide();\r\n }\r\n if($section == 'articles'){\r\n $articlesListMenu.fadeIn();\r\n $articlesList.fadeIn(300, function () {\r\n nurseslounge_myDashboard_myArticles.article_tabs_events($tab, function(){\r\n nurseslounge_myDashboard_myArticles.article_list_pagination($tab);\r\n });\r\n });\r\n }\r\n if($section == 'editor'){\r\n $articlesEditorMenu.fadeIn();\r\n $editorWrapper.fadeIn(300, function(){\r\n nurseslounge_myDashboard_myArticles.editor();\r\n });\r\n }\r\n /*\r\n if($section == 'album'){\r\n var nlWallAlbum = $(window).nurseslounge_myDashboard_wall_get({user_id:libs.memoryGet('user_id')}, 'nlWallAlbum');\r\n nlWallAlbum.open({\r\n on_close_modal:function(){\r\n nurseslounge_myDashboard_myArticles.article_list_pagination('recommended-articles');\r\n nurseslounge_myDashboard_myArticles.article_list_pagination('like-articles');\r\n nurseslounge_myDashboard_myArticles.article_list_pagination('draft-articles');\r\n nurseslounge_myDashboard_myArticles.article_list_pagination('published-articles');\r\n nurseslounge_myDashboard_myArticles.article_list_pagination('recently-viewed-articles');\r\n },\r\n on_end_callback:false,\r\n on_start_callback:false,\r\n album_allow_tabs : {\r\n 'profile_webcam_image':false,\r\n 'profile_image':false,\r\n 'profile_document':false,\r\n 'profile_video':false,\r\n 'profile_article':true\r\n },\r\n album_step:11,\r\n album_allow_add:false,\r\n album_allow_select:false\r\n });\r\n }\r\n */\r\n $articlesMenu.find('a').unbind().click(function(){\r\n var $that = $(this);\r\n var $goto = $that.data('goto');\r\n nurseslounge_myDashboard_myArticles.goto($goto);\r\n });\r\n });\r\n if(cback != undefined){\r\n cback();\r\n }\r\n },\r\n //Articles\r\n article_tabs_events:function($tab, cback){\r\n var $allowTabs = [\r\n 'recommended-articles',\r\n 'like-articles',\r\n 'draft-articles',\r\n 'published-articles',\r\n 'recently-viewed-articles',\r\n 'trash-articles'\r\n ];\r\n var $articlesList = $(\"#nurseslounge-home-articles .articles-list\");\r\n var $homeArticles = $(\"#nurseslounge-home-articles\");\r\n //Disable All\r\n $articlesList.find('.nav-pills .nav-link').addClass('disabled').removeClass('active');\r\n $articlesList.find('.tab-pane .article-content').html('');\r\n //Events\r\n $articlesList.find('.nav-pills a[data-toggle=\"tab\"]').unbind().on('shown.bs.tab', function ($e) {\r\n var $selectedTab = $e.currentTarget.dataset.target.replace('#','');\r\n if($.inArray($selectedTab, $allowTabs) > -1){\r\n nurseslounge_myDashboard_myArticles.article_list_pagination($selectedTab);\r\n $(\"html, body\").animate({scrollTop:$homeArticles.offset().top});\r\n }\r\n });\r\n //Enable selected\r\n $.each($allowTabs, function ($i, $v) {\r\n $(\"#\"+$v).removeClass('active').removeClass('show');\r\n $articlesList.find('.nav-pills .nav-link[data-target=\"#'+$v+'\"]').removeClass('disabled');\r\n });\r\n $articlesList.find('.nav-pills .nav-link[data-target=\"#'+$tab+'\"]').addClass('active');\r\n $(\"#\"+$tab).addClass('active').addClass('show');\r\n if(cback != undefined){\r\n cback();\r\n }\r\n },\r\n article_list_preview:function(){\r\n var $chtml = '';\r\n for(var $i=1; $i<=6; $i++){\r\n $chtml += '' +\r\n '
    ' +\r\n ' ' +\r\n '
    ' +\r\n '
    ' +\r\n '              ' +\r\n '
    ' +\r\n '
    ' +\r\n '
    ' +\r\n '              ' +\r\n '
    ' +\r\n '
    ' +\r\n '

            

    ' +\r\n '

            

    ' +\r\n '
    ' +\r\n '
    ' +\r\n '
    ' +\r\n '

            

    ' +\r\n '

                        

    ' +\r\n '
    ' +\r\n '
    ' +\r\n '

                        

    ' +\r\n '

                        

    ' +\r\n '
    ' +\r\n '
    ' +\r\n '
    ' +\r\n '
    ';\r\n }\r\n return $chtml;\r\n },\r\n article_list_pagination:function($tab, $filter){\r\n nurseslounge_myDashboard_myArticles.tab_open = $tab;\r\n $filter = $filter == undefined ? '' : $filter;\r\n var $reload;\r\n var $loaded = false;\r\n var $tabDiv = $(\"#\"+$tab);\r\n var $articleContent = $tabDiv.find('.article-content:first');\r\n var $paginationNav = $tabDiv.find('.pagination-nav:first');\r\n var $resultInfo = $tabDiv.find('.result-info-count:first');\r\n var $paginationObj;\r\n var $data = $.extend({}, {user_id:libs.memoryGet('user_id'), tab:$tab, filter:$filter});\r\n var $notificationTypeKey = libs.memoryGet('nurseslounge_myDashboard_myArticles_notificationTypeKey');\r\n try{\r\n $paginationObj = libs.memoryGet('article_list_pagination');\r\n if($paginationObj){\r\n $paginationObj.pagination('destroy');\r\n }\r\n }catch ($e) {\r\n }\r\n if($tab == 'published-articles' && $notificationTypeKey){\r\n $data = $.extend({}, $data, {notification_type_key:$notificationTypeKey});\r\n var $articlesList = $(\"#nurseslounge-home-articles .articles-list\");\r\n $articlesList.find('.nav-pills .nav-link[data-target=\"#'+$tab+'\"]').removeClass('active');\r\n libs.memorySave('nurseslounge_myDashboard_myArticles_notificationTypeKey', false);\r\n }else{\r\n router.pause();\r\n router.navigate('/myDashboard/myArticles');\r\n router.resume();\r\n }\r\n $paginationObj = $paginationNav.pagination({\r\n pageSize: 6,\r\n showPageNumbers: true,\r\n showPrevious: true,\r\n showNext: true,\r\n showNavigator: true,\r\n showFirstOnEllipsisShow: true,\r\n showLastOnEllipsisShow: true,\r\n dataSource:window.location.protocol +'//'+ window.location.hostname + \"/myDashboard/myArticles/lists\",\r\n locator: 'data.articles',\r\n ajax:{\r\n method: \"POST\",\r\n cache:false,\r\n dataType: \"json\",\r\n data:$data,\r\n beforeSend: function() {\r\n $articleContent.html(nurseslounge_myDashboard_myArticles.article_list_preview());\r\n },\r\n complete:function($data){\r\n libs.expire($data.responseJSON);\r\n }\r\n },\r\n totalNumberLocator: function($data) {\r\n return $data.data.total;\r\n },\r\n callback: function($data, $pagination) {\r\n $loaded = true;\r\n var $pageNumber = $pagination.pageNumber;\r\n var $pageSize = $pagination.pageSize;\r\n var $totalNumber = $pagination.totalNumber;\r\n var $first = $totalNumber > 0 ? (($pageNumber-1) * $pageSize) + 1 : 0;\r\n var $last = $totalNumber > 0 ? ($first + $data.length - 1) : 0;\r\n $paginationNav.removeClass('article-list-preload');\r\n $resultInfo.removeClass('article-list-preload').html('Showing '+$first+' - '+$last+' of '+$totalNumber+' results for Articles');\r\n var $chtml = '
    ';\r\n var $items = nurseslounge_myDashboard_myArticles.item_html($data);\r\n $chtml += $items;\r\n if($items != ''){\r\n libs.checkImageLoad($($chtml).find('img'), function () {\r\n $articleContent.html('').html($chtml).promise().done(function () {\r\n nurseslounge_myDashboard_myArticles.list_events();\r\n });\r\n });\r\n }else{\r\n var $txt = '';\r\n switch ($tab) {\r\n case 'published-articles':\r\n $txt = '' +\r\n '

    Pending and Approved articles you create will show up here.';\r\n break;\r\n case 'like-articles':\r\n $txt = 'Articles you like will show up here.
    Click the heart icon on any article to like it.';\r\n break;\r\n case 'recommended-articles':\r\n $txt = 'Welcome to Articles!
    As nurses generate content we\\'ll recommend articles relevant to your career, here.';\r\n break;\r\n case 'recently-viewed-articles':\r\n $txt = 'You have not seen any article yet.';\r\n break;\r\n case 'draft-articles':\r\n $txt = 'Articles you save as drafts will show up here.';\r\n break;\r\n case 'trash-articles':\r\n $txt = 'Empty trash.';\r\n break;\r\n }\r\n $chtml = '' +\r\n '
    ' +\r\n '
    ' +\r\n $txt +\r\n '
    ' +\r\n '
    ';\r\n $articleContent.html($chtml).promise().done(function(){\r\n var $createArticle = $articleContent.find('.create-article');\r\n $createArticle.unbind().click(function(){\r\n nurseslounge_myDashboard_myArticles.goto('editor');\r\n });\r\n });\r\n }\r\n }\r\n });\r\n libs.memorySave('article_list_pagination', $paginationObj);\r\n $reload = setTimeout(function(){\r\n if(!$loaded){\r\n nurseslounge_myDashboard_myArticles.article_list_pagination($tab, $filter);\r\n }else{\r\n clearTimeout($reload);\r\n }\r\n }, 10000);\r\n },\r\n item_html:function($data){\r\n var $chtml = '';\r\n $.each($data, function($i, $v){\r\n var $AF = $v.article_features;\r\n var $date = $AF.updated_at ? $AF.updated_at : null;\r\n var $headline = $AF.headline && $AF.headline != '' ? $AF.headline: '        ';\r\n var $_author = $AF.author && $AF.author != '' ? $AF.author: '        ';\r\n var $wildcard = '                    ';\r\n var $description;\r\n if($AF.html && $AF.html != '' && $AF.html != null){\r\n try{\r\n $description = $($AF.html).text();\r\n }catch ($e) {\r\n $description = $AF.html;\r\n }\r\n }else{\r\n $description = $wildcard;\r\n }\r\n if($description != $wildcard){\r\n $description = $description.length > 50 ? $description.substr(0, 50) + '...' : $description;\r\n }\r\n\r\n var $user = $v.user;\r\n var $author = $user.long_name;\r\n var $jobTitle = $user && $user.job_title ? $user.job_title : '    ';\r\n var $authorLink = $user.profile_url;\r\n var $profileImage = $user.profile_image_root_wall + '?resize=46';\r\n\r\n var $imgOption1 = $AF && $AF.image && $AF.image.document_thumb_root ? $AF.image.document_thumb_root : null;\r\n var $imgOption2 = $v.document_thumb_root;\r\n\r\n var $imageThumb = $imgOption1 != null ? $imgOption1 : $imgOption2;\r\n var $articleLikesCount = $v.article_likes_count == 1 ? $v.article_likes_count + ' like' : $v.article_likes_count + ' likes';\r\n var $iAmOwner = $v.i_am_owner;\r\n var $status = $AF.status;\r\n var $myLike = $v.my_like ? 'like' : '';\r\n var $viewedByMe = $v.viewed_by_me;\r\n var $documentId = $v.id;\r\n var $expirationDate = $AF && $AF.expiration_date && $AF.expiration_date ? $AF.expiration_date : null;\r\n var $categories = $v.article_categories ? $v.article_categories : [];\r\n var $categoriesTxt = [];\r\n var $articleTags = [];\r\n if($AF && $AF.specialty && $AF.specialty.type) {\r\n $articleTags.push({tag:$AF.specialty.type});\r\n }\r\n if($AF && $AF.degree && $AF.degree.subcategory){\r\n $articleTags.push({tag:$AF.degree.subcategory});\r\n }\r\n $articleTags = $.merge($articleTags, $v.article_tags);\r\n for (var $i in $categories){\r\n $categoriesTxt.push($categories[$i].category.category);\r\n }\r\n\r\n $chtml += '' +\r\n '
    ' +\r\n '
    ' +\r\n '
    ' +\r\n ' \"article' +\r\n '
    '+\r\n '
    ' +\r\n '
    ' +\r\n ' ' +\r\n ' \"profile\"' +\r\n ' ' +\r\n '
    ' +\r\n '
    ' +\r\n ' ' +\r\n '

    '+$author+'

    ' +\r\n '
    '+$jobTitle+'
    ' +\r\n '
    ';\r\n if($status == 'published') {\r\n $chtml += '' +\r\n '

    Published

    ';\r\n }\r\n if($status == 'draft') {\r\n $chtml += '' +\r\n '

    ' +\r\n ' Not yet published' +\r\n '

    ';\r\n }\r\n if($status == 'trash') {\r\n $chtml += '' +\r\n '

    Deleted

    ';\r\n }\r\n $chtml += '' +\r\n '
    ' +\r\n '
    ' +\r\n '
    ' +\r\n '

    '+$headline+'

    '+\r\n '

    ' + $description + '

    '+\r\n ' ' + $_author + '';\r\n if($expirationDate){\r\n $expirationDate = moment.utc($expirationDate, 'YYYY-MM-DD').format('MM/DD/YYYY');\r\n $chtml += '' +\r\n '
    Expire: ' + $expirationDate + '
    ';\r\n }else{\r\n $chtml += '' +\r\n '
                    
    ';\r\n }\r\n if($categoriesTxt.length > 0){\r\n $chtml += '' +\r\n '
    ' + $categoriesTxt.join(', ') + '
    ';\r\n }else{\r\n $chtml += '' +\r\n '
                    
    ';\r\n }\r\n if($status == 'published') {\r\n $chtml += '' +\r\n ' ';\r\n }\r\n if($status == 'draft' || $status == 'trash') {\r\n $chtml += '' +\r\n ' ';\r\n }\r\n $chtml += '' +\r\n '
    ' +\r\n '
    ';\r\n $.each($articleTags, function($sI, $sV){\r\n $chtml += '
    ' + $sV.tag + '
    ';\r\n });\r\n $chtml += '' +\r\n '
    ';\r\n if($status == 'published') {\r\n $chtml += '' +\r\n ' ';\r\n }\r\n if($status == 'draft' || $status == 'trash') {\r\n $chtml += '' +\r\n '
    ' +\r\n '       ' +\r\n '
    ';\r\n }\r\n $chtml += '' +\r\n '
    ' +\r\n '
    ';\r\n });\r\n return $chtml;\r\n },\r\n articles_dates:[],\r\n articles_dates_binding:null,\r\n server_date_helper:null,\r\n server_date:null,\r\n set_server_date:function($serverDate){\r\n this.server_date_helper = new Date();\r\n this.server_date = new Date($serverDate);\r\n },\r\n get_server_date:function(){\r\n var $now = new Date().getTime();\r\n var $diff = $now - this.server_date_helper.getTime();\r\n var $date = this.server_date.getTime() + $diff;\r\n return new Date($date);\r\n },\r\n set_articles_dates:function($articlesIds){\r\n this.articles_dates = $articlesIds;\r\n },\r\n get_articles_dates:function(){\r\n return this.articles_dates;\r\n },\r\n articles_date:function(cback){\r\n var $artcilesDate = libs.memoryGet('articles_date');\r\n if($artcilesDate){\r\n try{\r\n $artcilesDate.abort();\r\n }catch($e){\r\n\r\n }\r\n }\r\n $artcilesDate = $.ajax({\r\n url:location.href,\r\n method: \"GET\",\r\n cache:false,\r\n dataType: \"html\",\r\n success: function ($data, $status, $response) {\r\n var $dateString = $response.getResponseHeader('date');\r\n if ($dateString.indexOf('GMT')) {\r\n $dateString = $dateString.replace('GMT','');\r\n }\r\n nurseslounge_myDashboard_myArticles.set_server_date($dateString);\r\n nurseslounge_myDashboard_myArticles.articles_date_html();\r\n if(cback != undefined){\r\n cback();\r\n }\r\n }\r\n });\r\n libs.memorySave('articles_date', $artcilesDate);\r\n },\r\n articles_date_html:function(){\r\n var $refreshEverySeconds = 1;\r\n var $now = nurseslounge_myDashboard_myArticles.get_server_date().getTime();\r\n var $articlesDates = nurseslounge_myDashboard_myArticles.get_articles_dates();\r\n for(var $i in $articlesDates){\r\n var $key = $articlesDates[$i];\r\n $(document).find('.article-date[data-id=\"'+$key+'\"]').each(function () {\r\n var $ele = $(this);\r\n if($ele.length > 0){\r\n var $val = $ele.data('articledate');\r\n var $newDate = $val.split(' ');\r\n var $yearMonthDay = $newDate[0];\r\n $yearMonthDay = $yearMonthDay.split('-');\r\n var $HourMinuteSecond = $newDate[1];\r\n $HourMinuteSecond = $HourMinuteSecond.split(':');\r\n var $date = new Date($yearMonthDay[0], $yearMonthDay[1] - 1, $yearMonthDay[2], $HourMinuteSecond[0], $HourMinuteSecond[1], $HourMinuteSecond[2]);\r\n var $second = $date.getSeconds();\r\n $second = $second <= 9 ? '0' + $second : $second;\r\n var $minute = $date.getMinutes();\r\n $minute = $minute <= 9 ? '0' + $minute : $minute;\r\n var $hour = $date.getHours();\r\n $hour = $hour <= 9 ? '0' + $hour : $hour;\r\n var $day = $date.getDate();\r\n $day = $day <= 9 ? '0' + $day : $day;\r\n var $month = $date.getMonth() + 1;\r\n $month = $month <= 9 ? '0' + $month : $month;\r\n var $year = $date.getFullYear();\r\n var $articleDate = $year + '-' + $month + '-' + $day + ' ' + $hour + ':'+ $minute + ':' + $second;\r\n $date = $date.getTime();\r\n var $diffSeconds = Math.floor(($now - $date)/1000);\r\n var $diffMinutes = Math.floor($diffSeconds/60);\r\n var $diffHours = Math.floor($diffMinutes/60);\r\n var $diffDays = Math.floor($diffHours/24);\r\n var $chtml = '';\r\n if($diffDays == 0 && $diffHours == 0 && $diffMinutes == 0){\r\n $chtml = $diffSeconds == 1 ? $diffSeconds + ' second ago' : $diffSeconds + ' seconds ago';\r\n }else\r\n if ($diffDays == 0 && $diffHours == 0){\r\n $chtml = $diffMinutes == 1 ? $diffMinutes + ' minute ago' : $diffMinutes + ' minutes ago';\r\n }else\r\n if ($diffDays == 0){\r\n $chtml = $diffHours == 1 ? $diffHours + ' hour ago' : $diffHours + ' hours ago';\r\n }else\r\n if($diffDays < 4){\r\n $chtml = $diffDays == 1 ? $diffDays + ' day ago' : $diffDays + ' days ago';\r\n }else{\r\n $date = $ele.data('articledate');\r\n $chtml = moment.utc($date, 'YYYY-MM-DD HH:mm:ss').local().format('MMMM, DD YYYY hh:mm A');\r\n }\r\n if($ele.html() != $chtml){\r\n $ele.data('articledate', $articleDate).html($chtml);\r\n }\r\n }\r\n });\r\n }\r\n try{\r\n clearTimeout(this.articles_dates_binding);\r\n }catch($e){}\r\n this.articles_dates_binding = setTimeout(function(){\r\n nurseslounge_myDashboard_myArticles.articles_date_html();\r\n }, ($refreshEverySeconds * 1000));\r\n },\r\n list_events:function(){\r\n var nlWallDocumentPreview = $(window).nurseslounge_myDashboard_wall_get({user_id:libs.memoryGet('user_id')}, 'nlWallDocumentPreview');\r\n var $articleList = $(\"#nurseslounge-home-articles .articles-list\");\r\n var $articleContent = $articleList.find('.article-content');\r\n var $items = $articleContent.find('.item');\r\n $items.unbind().click(function($e){\r\n $e.stopPropagation();\r\n $e.preventDefault();\r\n var $that = $(this);\r\n var $documentId = $that.data('id');\r\n var $status = $that.data('status');\r\n var $params = {\r\n document_id:$documentId,\r\n user_id:libs.memoryGet('user_id'),\r\n status:$status\r\n };\r\n if($status == 'published'){\r\n nurseslounge_myDashboard_myArticles.events_recently_viewed_request($params, function() {\r\n nlWallDocumentPreview.init($documentId);\r\n });\r\n }\r\n if($status == 'draft' || $status == 'trash') {\r\n nurseslounge_myDashboard_myArticles.events_draft_viewed_request($params, function($data){\r\n var $id = libs.getUniqueId();\r\n libs.memorySave('article'+$id, {\r\n document_root:null,\r\n document_preview_root:null,\r\n document_thumb_root:null,\r\n type:'article',\r\n name:null,\r\n date:moment.utc().format('YYYY-MM-DD HH:mm:ss'),\r\n user:{\r\n long_name:$data.data.document.user.long_name,\r\n profile_image_root_wall:$data.data.document.user.profile_image_root_wall\r\n },\r\n article_features:{\r\n headline:$data.data.document.article_features.headline,\r\n author:$data.data.document.article_features.author,\r\n html:$data.data.document.article_features.html,\r\n degree:$data.data.document.article_features.degree,\r\n specialty:$data.data.document.article_features.specialty,\r\n expiration_date:$data.data.document.article_features.expiration_date,\r\n image:{\r\n document_root:$data.data.document.article_features.image && $data.data.document.article_features.image.document_root ? $data.data.document.article_features.image.document_root : null\r\n }\r\n },\r\n article_categories:$data.data.document.article_categories,\r\n article_tags:$data.data.document.article_tags,\r\n article_lounges:$data.data.document.article_lounges\r\n });\r\n nlWallDocumentPreview.popup('article',$id, {article:{disabled:['download']}});\r\n });\r\n }\r\n });\r\n var $a = $articleContent.find('a');\r\n $a.unbind().click(function($e){\r\n $e.stopPropagation();\r\n $e.preventDefault();\r\n var $that = $(this);\r\n var $href = $that.attr('href');\r\n window.open($href, '_blank');\r\n });\r\n var $likeButton = $articleContent.find('.like-button');\r\n $likeButton.unbind().click(function($e){\r\n $e.stopPropagation();\r\n $e.preventDefault();\r\n var $that = $(this);\r\n var $like = !$that.hasClass('like');\r\n var $item = $that.parents('.item:first');\r\n var $documentId = $item.data('id');\r\n var $totalLikes = $item.find('.total-likes:first');\r\n var $params = {\r\n document_id:$documentId,\r\n user_id:libs.memoryGet('user_id'),\r\n like:$like,\r\n };\r\n nurseslounge_myDashboard_myArticles.events_like_request($params, function($data){\r\n if($data.data.like){\r\n $that.addClass('like');\r\n }else{\r\n $that.removeClass('like');\r\n }\r\n var $likes = $data.data.likes == 1 ? $data.data.likes+' like' : $data.data.likes + ' likes';\r\n $totalLikes.html($likes);\r\n $articleList.find('.like-articles-count').html($data.data.likes_articles_count);\r\n });\r\n });\r\n var $editButton = $articleContent.find('.edit-button');\r\n $editButton.unbind().click(function($e){\r\n $e.stopPropagation();\r\n $e.preventDefault();\r\n var $that = $(this);\r\n var $item = $that.parents('.item:first');\r\n var $documentId = $item.data('id');\r\n libs.memorySave('editor', {\r\n user_id:libs.memoryGet('user_id'),\r\n document:{id:$documentId},\r\n });\r\n nurseslounge_myDashboard_myArticles.goto('editor');\r\n });\r\n //Search Events\r\n var $inputSearchLikeArticles= $articleList.find('input[name=\"searchLikeArticles\"]:first');\r\n var $inputSearchDraftArticles = $articleList.find('input[name=\"searchDraftArticles\"]:first');\r\n var $inputSearchPublishedArticles = $articleList.find('input[name=\"searchPublishedArticles\"]:first');\r\n var $keyPressBinding;\r\n $inputSearchLikeArticles.unbind().on('keyup keydown keypress', function(){\r\n var $that = $(this);\r\n var $tab = $that.data('tab');\r\n var $val = $that.val();\r\n try{\r\n clearTimeout($keyPressBinding);\r\n }catch($e){\r\n\r\n }\r\n $keyPressBinding = setTimeout(function(){\r\n nurseslounge_myDashboard_myArticles.article_list_pagination($tab, $val);\r\n }, 800);\r\n });\r\n $inputSearchDraftArticles.unbind().on('keyup keydown keypress', function(){\r\n var $that = $(this);\r\n var $tab = $that.data('tab');\r\n var $val = $that.val();\r\n try{\r\n clearTimeout($keyPressBinding);\r\n }catch($e){\r\n\r\n }\r\n $keyPressBinding = setTimeout(function(){\r\n nurseslounge_myDashboard_myArticles.article_list_pagination($tab, $val);\r\n }, 800);\r\n });\r\n $inputSearchPublishedArticles.unbind().on('keyup keydown keypress', function(){\r\n var $that = $(this);\r\n var $tab = $that.data('tab');\r\n var $val = $that.val();\r\n try{\r\n clearTimeout($keyPressBinding);\r\n }catch($e){\r\n\r\n }\r\n $keyPressBinding = setTimeout(function(){\r\n nurseslounge_myDashboard_myArticles.article_list_pagination($tab, $val);\r\n }, 800);\r\n });\r\n //Realtime Clock\r\n var $articlesIds = [];\r\n $articleContent.find(\".item\").each(function(){\r\n var $that = $(this);\r\n $articlesIds.push($that.data('id'));\r\n });\r\n $articlesIds.sort();\r\n $articlesIds = $.unique($articlesIds);\r\n nurseslounge_myDashboard_myArticles.set_articles_dates($articlesIds);\r\n nurseslounge_myDashboard_myArticles.articles_date();\r\n //Refresh Tabs Counts\r\n nurseslounge_myDashboard_myArticles.refresh_articles_count();\r\n },\r\n events_recently_viewed_request:function($params, cback){\r\n $.ajax({\r\n url: \"/myDashboard/myArticles/viewed\",\r\n method: \"POST\",\r\n cache:false,\r\n dataType: \"json\",\r\n data:$params,\r\n success: function ($data) {\r\n libs.expire($data);\r\n if($data.status == 'success'){\r\n cback();\r\n }\r\n }\r\n });\r\n },\r\n events_draft_viewed_request:function($params, cback){\r\n $.ajax({\r\n url: \"/myDashboard/myArticles/draftTrashView\",\r\n method: \"POST\",\r\n cache:false,\r\n dataType: \"json\",\r\n data:$params,\r\n success: function ($data) {\r\n libs.expire($data);\r\n if($data.status == 'success'){\r\n cback($data);\r\n }\r\n }\r\n });\r\n },\r\n events_like_request:function($params, cback){\r\n $.ajax({\r\n url: \"/myDashboard/myArticles/like\",\r\n method: \"POST\",\r\n cache:false,\r\n dataType: \"json\",\r\n data:$params,\r\n success: function ($data) {\r\n libs.expire($data);\r\n if($data.status == 'success'){\r\n cback($data);\r\n }\r\n }\r\n });\r\n },\r\n refresh_articles_count:function(){\r\n var $articleList = $(\"#nurseslounge-home-articles .articles-list\");\r\n var $artcilesCount = libs.memoryGet('articles_count');\r\n if($artcilesCount){\r\n try{\r\n $artcilesCount.abort();\r\n }catch($e){\r\n\r\n }\r\n }\r\n $artcilesCount = $.ajax({\r\n url: \"/myDashboard/myArticles/count\",\r\n method: \"POST\",\r\n cache:false,\r\n dataType: \"json\",\r\n data:{user_id:libs.memoryGet('user_id')},\r\n success: function ($data) {\r\n libs.expire($data);\r\n if($data.status == 'success'){\r\n $articleList.find('.like-articles-count').html($data.data.likes_articles_count);\r\n $articleList.find('.published-articles-count').html($data.data.published_articles_count);\r\n $articleList.find('.draft-articles-count').html($data.data.draft_articles_count);\r\n $articleList.find('.trash-articles-count').html($data.data.trash_articles_count);\r\n }\r\n }\r\n });\r\n libs.memorySave('articles_date', $artcilesCount);\r\n },\r\n //Editor\r\n editor:function(){\r\n var $homeArticles = $('#nurseslounge-home-articles');\r\n var $editorWrapper = $homeArticles.find('.editor-wrapper');\r\n var $editorPreload = $editorWrapper.find(\".editor-preload\");\r\n var $editorContainer = $editorWrapper.find('.editor-container');\r\n $editorContainer.hide();\r\n $editorPreload.show();\r\n nurseslounge_myDashboard_myArticles.editor_dropzone();\r\n var $textP = $editorContainer.find('.text-processor');\r\n var $uploadDocuments = function ($context) {\r\n var ui = $.summernote.ui;\r\n var button = ui.button({\r\n contents: ' Upload Doc',\r\n tooltip: 'upload doc',\r\n click: function () {\r\n var $chtml = '';\r\n $('.nurseslounge_myDashboard_myArticle_update').remove();\r\n $('body').append($chtml).ready(function(){\r\n $('.nurseslounge_myDashboard_myArticle_update').change(function(){\r\n var $formData = new FormData();\r\n $formData.append('_token', $('meta[name=\"csrf-token\"]').attr('content'));\r\n $formData.append('user_id', libs.memoryGet('user_id'));\r\n $formData.append('file', this.files[0]);\r\n $.ajax({\r\n type: 'POST',\r\n url: '/myDashboard/myArticles/content',\r\n data: $formData,\r\n cache: false,\r\n contentType: false,\r\n processData: false,\r\n success: function ($data) {\r\n libs.expire($data);\r\n $('.nurseslounge_myDashboard_myArticle_update').remove();\r\n var $txt = $data.data.txt;\r\n $txt = $txt.replace(/\\n/g, \"
    \");\r\n $context.invoke('editor.pasteHTML', $txt);\r\n }\r\n });\r\n }).click();\r\n });\r\n }\r\n });\r\n return button.render();\r\n }\r\n var $uploadPDF = function ($context) {\r\n var ui = $.summernote.ui;\r\n var button = ui.button({\r\n contents: ' Upload PDF',\r\n tooltip: 'upload doc',\r\n click: function () {\r\n var $chtml = '';\r\n $('.nurseslounge_myDashboard_myArticle_update').remove();\r\n $('body').append($chtml).ready(function(){\r\n $('.nurseslounge_myDashboard_myArticle_update').change(function(){\r\n var $formData = new FormData();\r\n $formData.append('_token', $('meta[name=\"csrf-token\"]').attr('content'));\r\n $formData.append('user_id', libs.memoryGet('user_id'));\r\n $formData.append('file', this.files[0]);\r\n $.ajax({\r\n type: 'POST',\r\n url: '/myDashboard/myArticles/content',\r\n data: $formData,\r\n cache: false,\r\n contentType: false,\r\n processData: false,\r\n success: function ($data) {\r\n libs.expire($data);\r\n $('.nurseslounge_myDashboard_myArticle_update').remove();\r\n var $txt = $data.data.txt;\r\n $txt = $txt.replace(/\\n/g, \"
    \");\r\n $context.invoke('editor.pasteHTML', $txt);\r\n }\r\n });\r\n }).click();\r\n });\r\n }\r\n });\r\n return button.render();\r\n }\r\n var $deleteFormat = function ($context) {\r\n var ui = $.summernote.ui;\r\n var button = ui.button({\r\n contents: ' Delete Format',\r\n tooltip: 'format',\r\n click: function () {\r\n var $textP = $editorContainer.find('.text-processor');\r\n var $text = $textP.summernote('code');\r\n var $regex = /<(?:\"[^\"]*\"['\"]*|'[^']*'['\"]*|[^'\">])+>/g;\r\n var $plainText = $text.replace($regex, '');\r\n $textP.summernote('code', $plainText);\r\n }\r\n });\r\n return button.render();\r\n }\r\n try{\r\n $textP.summernote('destroy');\r\n }catch (e) {\r\n\r\n }\r\n var $keypressBinding;\r\n var $bindingMatch;\r\n $textP.summernote({\r\n disableDragAndDrop:false,\r\n placeholder: 'Write your text here...',\r\n height: '350px',\r\n width: '100%',\r\n focus: true,\r\n disableResizeEditor: true,\r\n dialogsInBody: true,\r\n dialogsFade: true,\r\n codeviewFilter: true,\r\n codeviewIframeFilter: true,\r\n spellCheck: true,\r\n disableGrammar: false,\r\n hint: {\r\n match: /\\B@(\\w*)$/,\r\n search: function ($keyword, cback) {\r\n try{\r\n clearTimeout($bindingMatch);\r\n }catch (e) {\r\n\r\n }\r\n $bindingMatch = setTimeout(function(){\r\n nurseslounge_myDashboard_myArticles.editor_match($keyword, function($data){\r\n if($data.data.friends.length > 0){\r\n cback($data.data.friends);\r\n }\r\n });\r\n }, 800);\r\n },\r\n template:function($item){\r\n return $item.long_name;\r\n },\r\n content: function ($item) {\r\n return $('@' + $item.long_name+'')[0];\r\n }\r\n },\r\n styleTags: [\r\n 'p',\r\n 'pre', 'h1', 'h2', 'h3', 'h4', 'h5', 'h6'\r\n ],\r\n fontNames: ['Arial', 'Arial Black', 'Comic Sans MS', 'Courier New'],\r\n popover: {\r\n image: [\r\n ['image', ['resizeFull', 'resizeHalf', 'resizeQuarter']],\r\n ['remove', ['removeMedia']]\r\n ]\r\n },\r\n toolbar: [\r\n ['document', ['uploadDocuments', 'uploadPDF', 'deleteFormat']],\r\n ['font', ['fontname']],\r\n ['font', ['bold', 'italic', 'underline']],\r\n ['para', ['ul', 'ol', 'paragraph']],\r\n ],\r\n buttons: {\r\n uploadDocuments: $uploadDocuments,\r\n uploadPDF: $uploadPDF,\r\n deleteFormat: $deleteFormat,\r\n },\r\n callbacks: {\r\n onChange: function($chtml, $editable) {\r\n try {\r\n clearTimeout($keypressBinding);\r\n } catch (e) {\r\n\r\n }\r\n $keypressBinding = setTimeout(function () {\r\n var $editor = libs.memoryGet('editor');\r\n var $articleFeatures = $.extend({}, $editor.document.article_features, {preview_html:$chtml != '' ? $chtml : null});\r\n nurseslounge_myDashboard_myArticles.editor_add({\r\n document:{\r\n article_features:$articleFeatures\r\n }\r\n });\r\n }, 800);\r\n }\r\n }\r\n });\r\n var $editorMemory = libs.memoryGet('editor');\r\n var $data = {};\r\n if(!$editorMemory){\r\n $data = {\r\n user_id:libs.memoryGet('user_id'),\r\n document:{},\r\n };\r\n }else{\r\n $data = $editorMemory;\r\n }\r\n $editorMemory = $.extend({}, $data, {\r\n editor_wrapper:$editorWrapper,\r\n text_processor:$textP\r\n });\r\n libs.memorySave('editor', $editorMemory);\r\n nurseslounge_myDashboard_myArticles.editor_events(function () {\r\n nurseslounge_myDashboard_myArticles.editor_verify_publication(function() {\r\n $editorPreload.hide();\r\n $editorContainer.css('display', 'inline-flex');\r\n });\r\n });\r\n },\r\n editor_dropzone:function(){\r\n var $homeArticles = $('#nurseslounge-home-articles');\r\n var $editorWrapper = $homeArticles.find('.editor-wrapper');\r\n var $editorContainer = $editorWrapper.find('.editor-container');\r\n var $editorDropImage = $editorContainer.find('.editor-drop-image');\r\n var $openAlbum = $editorDropImage.find('.open-album');\r\n Dropzone.autoDiscover = false;\r\n var $dropzone = libs.memoryGet('nurseslounge_myDashboard_myArticles_dropzone');\r\n try{\r\n $dropzone.destroy();\r\n }catch ($e) {\r\n\r\n }\r\n $dropzone = new Dropzone($editorDropImage[0], {\r\n headers: {\r\n 'X-CSRF-TOKEN': $('meta[name=\"csrf-token\"]').attr('content')\r\n },\r\n createImageThumbnails:false,\r\n acceptedFiles:'image/png,image/jpg,image/jpeg,image/gif',\r\n url: '/myDashboard/myArticles/fake',\r\n params:{user_id:libs.memoryGet('user_id')},\r\n method: 'post',\r\n clickable:[$editorDropImage[0], $editorDropImage.find('img:first')[0]],\r\n init: function() {\r\n var $that = this;\r\n $that.on(\"complete\", function(){\r\n $editorDropImage.find('.dz-preview').remove();\r\n });\r\n $that.on(\"success\", function($file) {\r\n var $formData = new FormData();\r\n $formData.append('_token', $('meta[name=\"csrf-token\"]').attr('content'));\r\n $formData.append('user_id', libs.memoryGet('user_id'));\r\n $formData.append('file', $file);\r\n $formData.append('file_type', 'image');\r\n var nlWallUpdate = $(window).nurseslounge_myDashboard_wall_get({user_id:libs.memoryGet('user_id')}, 'nlWallUpdate');\r\n nlWallUpdate.analyze($formData, function($data){\r\n if($data.status == 'error'){\r\n return false;\r\n }\r\n $formData.append('thumb_file', libs.b64toBlob($data.data.features.thumb));\r\n $formData.append('original_name', $data.data.features.original_name);\r\n if(\r\n $data.data.features.mime_type == 'image/png' ||\r\n $data.data.features.mime_type == 'image/jpg' ||\r\n $data.data.features.mime_type == 'image/jpeg' ||\r\n $data.data.features.mime_type == 'image/gif'\r\n ) {\r\n $formData.append('preview_file', libs.b64toBlob($data.data.features.preview));\r\n $formData.append('file_type', 'image');\r\n $formData.append('action', 'save');\r\n nlWallUpdate.save($formData, function($data){\r\n var $chtml = '' +\r\n '';\r\n if($data.status == 'success'){\r\n $editorDropImage.find(\".attach-image\").replaceWith($chtml).promise().done(function(){\r\n nurseslounge_myDashboard_myArticles.editor_dropzone();\r\n });\r\n }\r\n });\r\n }\r\n });\r\n });\r\n }\r\n });\r\n libs.memorySave('nurseslounge_myDashboard_myArticles_dropzone', $dropzone);\r\n $openAlbum.unbind().click(function(){\r\n var nlWallAlbum = $(window).nurseslounge_myDashboard_wall_get({user_id:libs.memoryGet('user_id')}, 'nlWallAlbum');\r\n var nlWallUpdate = $(window).nurseslounge_myDashboard_wall_get({user_id:libs.memoryGet('user_id')}, 'nlWallUpdate');\r\n nlWallAlbum.open({\r\n on_close_modal:false,\r\n on_end_callback:false,\r\n on_start_callback:false,\r\n album_allow_tabs : {\r\n 'profile_webcam_image':true,\r\n 'profile_image':true,\r\n 'profile_document':false,\r\n 'profile_video':false,\r\n 'profile_article':false\r\n },\r\n album_step:11,\r\n album_allow_add:true,\r\n album_allow_select:true\r\n }, function($data){\r\n var $document = $data.data.updated_file;\r\n nlWallUpdate.fill($document, {\r\n get_data_callback:function($file){\r\n var $chtml = '' +\r\n '';\r\n $editorDropImage.find(\".attach-image\").replaceWith($chtml).promise().done(function(){\r\n nurseslounge_myDashboard_myArticles.editor_dropzone();\r\n });\r\n }\r\n });\r\n });\r\n });\r\n },\r\n editor_events:function(cback){\r\n var $editorMemory = libs.memoryGet('editor');\r\n var $editorWrapper = $editorMemory.editor_wrapper;\r\n var $editorMenu = $editorWrapper.find('.editor-menu');\r\n var $clickAction;\r\n var $degree =$editorWrapper.find('select[name=\"degree\"]');\r\n var $specialty =$editorWrapper.find('select[name=\"specialty\"]');\r\n var $tags = $editorWrapper.find('input[name=\"tags\"]');\r\n var $lounges = $editorWrapper.find('input[name=\"lounges\"]');\r\n var $expirationDate = $editorWrapper.find('input[name=\"expirationDate\"]');\r\n var $category = $editorWrapper.find('select[name=\"category\"]');\r\n var $resetExpirationDate = $editorWrapper.find('.reset_expiration_date');\r\n $degree.val('');\r\n $specialty.val('');\r\n $(\".tagify__input\").each(function(){\r\n var $that = $(this);\r\n if($that.html() == ''){\r\n $that.remove();\r\n }\r\n });\r\n var $tagifyLounges = libs.memoryGet('nurseslounge_myDashboard_myArticles_tagify_lounges');\r\n if($tagifyLounges){\r\n try{\r\n $tagifyLounges.DOM.input.classList.remove('tagify__input--outside');\r\n $tagifyLounges.removeAllTags();\r\n $tagifyLounges.destroy();\r\n }catch ($e) {\r\n\r\n }\r\n }\r\n $tagifyLounges = new Tagify($lounges[0], {\r\n enforceWhitelist:true,\r\n skipInvalid: true,\r\n whitelist: [],\r\n dropdown : {\r\n position : \"text\"\r\n }\r\n });\r\n $tagifyLounges.DOM.input.classList.add('tagify__input--outside');\r\n $tagifyLounges.DOM.scope.parentNode.insertBefore($tagifyLounges.DOM.input, $tagifyLounges.DOM.scope);\r\n $tagifyLounges.loading(true).dropdown.hide.call($tagifyLounges);\r\n $tagifyLounges.on('input', function($e){\r\n $tagifyLounges.settings.whitelist.length = null;\r\n $.ajax({\r\n url: \"/myDashboard/myArticles/lounges\",\r\n method: \"POST\",\r\n cache:false,\r\n dataType: \"json\",\r\n data:{user_id:libs.memoryGet('user_id'),value:$e.detail.value},\r\n success: function ($data) {\r\n libs.expire($data);\r\n $tagifyLounges.settings.whitelist = $data;\r\n $tagifyLounges.loading(false).dropdown.show.call($tagifyLounges, $e.detail.value);\r\n }\r\n });\r\n });\r\n libs.memorySave('nurseslounge_myDashboard_myArticles_tagify_lounges', $tagifyLounges);\r\n\r\n var $tagifyTags = libs.memoryGet('nurseslounge_myDashboard_myArticles_tagify_tags');\r\n if($tagifyTags){\r\n try{\r\n $tagifyTags.DOM.input.classList.remove('tagify__input--outside');\r\n $tagifyTags.removeAllTags();\r\n $tagifyTags.destroy();\r\n }catch ($e) {\r\n\r\n }\r\n }\r\n $tagifyTags = new Tagify($tags[0]);\r\n $tagifyTags.DOM.input.classList.add('tagify__input--outside');\r\n $tagifyTags.DOM.scope.parentNode.insertBefore($tagifyTags.DOM.input, $tagifyTags.DOM.scope);\r\n libs.memorySave('nurseslounge_myDashboard_myArticles_tagify_tags', $tagifyTags);\r\n\r\n $expirationDate.val('').datepicker();\r\n $category.val('');\r\n $category.chosen();\r\n $resetExpirationDate.unbind().click(function(){\r\n $expirationDate.val('').datepicker(\"update\");\r\n });\r\n nurseslounge_myDashboard_myArticles.editor_validator(function($form){\r\n var $action = $clickAction;\r\n switch($action){\r\n case 'preview':\r\n nurseslounge_myDashboard_myArticles.editor_preview_option();\r\n break;\r\n case 'draft':\r\n nurseslounge_myDashboard_myArticles.editor_set_article($action, function(){\r\n nurseslounge_myDashboard_myArticles.goto('articles', 'draft-articles', true, function(){\r\n nurseslounge_myDashboard_myArticles.editor_new_option_event();\r\n });\r\n });\r\n break;\r\n case 'published':\r\n nurseslounge_myDashboard_myArticles.editor_set_article($action, function () {\r\n nurseslounge_myDashboard_myArticles.goto('articles', 'published-articles', true,function(){\r\n nurseslounge_myDashboard_myArticles.publish_popup();\r\n nurseslounge_myDashboard_myArticles.editor_new_option_event();\r\n });\r\n });\r\n break;\r\n case 'trash':\r\n nurseslounge_myDashboard_myArticles.editor_set_article($action, function(){\r\n nurseslounge_myDashboard_myArticles.goto('articles', 'trash-articles', true, function(){\r\n nurseslounge_myDashboard_myArticles.editor_new_option_event();\r\n });\r\n });\r\n break;\r\n }\r\n });\r\n $editorMenu.find('.action').unbind().click(function(){\r\n $editorMemory = libs.memoryGet('editor');\r\n var $action = $(this).data('action');\r\n switch ($action) {\r\n case 'new':\r\n nurseslounge_myDashboard_myArticles.editor_new_option();\r\n break;\r\n case 'preview':\r\n $clickAction = $action;\r\n $(this).submit();\r\n break;\r\n case 'draft':\r\n $clickAction = $action;\r\n $(this).submit();\r\n break;\r\n case 'published':\r\n $clickAction = $action;\r\n $(this).submit();\r\n break;\r\n case 'trash':\r\n $clickAction = $action;\r\n $(this).submit();\r\n break;\r\n }\r\n });\r\n if(cback != undefined){\r\n cback();\r\n }\r\n },\r\n publish_popup:function(){\r\n $(\"#nurseslounge-myDashboard-myArticles-modal\").modal('show');\r\n },\r\n editor_verify_publication:function(cback){\r\n var $editorMemory = libs.memoryGet('editor');\r\n var $editorWrapper = $editorMemory.editor_wrapper;\r\n var $editorMenu = $editorWrapper.find('.editor-menu');\r\n $editorMenu.find('.action').hide();\r\n if($editorMemory && $editorMemory.document && $editorMemory.document.id) {\r\n var $userId = $editorMemory.user_id;\r\n var $attachImage = $editorWrapper.find('.editor-drop-image .attach-image:first');\r\n var $headline =$editorWrapper.find('input[name=\"headline\"]');\r\n var $author =$editorWrapper.find('input[name=\"author\"]');\r\n var $degree =$editorWrapper.find('select[name=\"degree\"]');\r\n var $specialty =$editorWrapper.find('select[name=\"specialty\"]');\r\n var $expirationDate =$editorWrapper.find('input[name=\"expirationDate\"]');\r\n var $categories =$editorWrapper.find('select[name=\"category\"]');\r\n var $categoriesVal = [];\r\n\r\n var $textP = $editorMemory.text_processor;\r\n var $tagifyLounges = libs.memoryGet('nurseslounge_myDashboard_myArticles_tagify_lounges');\r\n var $tagify = libs.memoryGet('nurseslounge_myDashboard_myArticles_tagify_tags');\r\n $.ajax({\r\n url: \"/myDashboard/myArticles/verifyPublication\",\r\n method: \"POST\",\r\n cache: false,\r\n dataType: \"json\",\r\n data: {user_id: libs.memoryGet('user_id'), document_id: $editorMemory.document.id},\r\n success: function ($data) {\r\n libs.expire($data);\r\n if ($data.status == 'success') {\r\n var $document = $data.data.document;\r\n $headline.val('');\r\n if($document.article_features && $document.article_features.headline){\r\n $headline.val($document.article_features.headline);\r\n }else{\r\n $headline.val('');\r\n }\r\n $author.val('');\r\n if($document.article_features && $document.article_features.author){\r\n $author.val($document.article_features.author);\r\n }else{\r\n $author.val('');\r\n }\r\n $attachImage.attr('src', window.location.origin + '/bimg/NursesLounge/dragAndDrop.png');\r\n if($document.article_features && $document.article_features.image && $document.article_features.image.document_root){\r\n $attachImage.attr('src', $document.article_features.image.document_root);\r\n }else{\r\n $attachImage.attr('src', window.location.origin + '/bimg/NursesLounge/dragAndDrop.png');\r\n }\r\n $textP.summernote('code', '');\r\n if($document.article_features && $document.article_features && $document.article_features.html){\r\n $textP.summernote('code', $document.article_features.html);\r\n }else{\r\n $textP.summernote('code', '');\r\n }\r\n $tagifyLounges.removeAllTags();\r\n if($document && $document.article_lounges){\r\n var $lounges = [];\r\n $.each($document.article_lounges, function($i, $v){\r\n $lounges.push($v.lounge);\r\n });\r\n $tagifyLounges.settings.whitelist = $lounges;\r\n $tagifyLounges.addTags($lounges);\r\n }\r\n $tagify.removeAllTags();\r\n if($document && $document.article_tags){\r\n var $tags = [];\r\n $.each($document.article_tags, function($i, $v){\r\n $tags.push($v.tag);\r\n });\r\n $tagify.addTags($tags);\r\n }\r\n $degree.val('');\r\n if(\r\n $document &&\r\n $document.article_features &&\r\n $document.article_features.degree &&\r\n $document.article_features.degree.id\r\n ){\r\n $degree.val($document.article_features.degree.id);\r\n }\r\n $specialty.val('');\r\n if(\r\n $document &&\r\n $document.article_features &&\r\n $document.article_features.specialty &&\r\n $document.article_features.specialty.id\r\n ){\r\n $specialty.val($document.article_features.specialty.id);\r\n }\r\n $categories.val('');\r\n if(\r\n $document &&\r\n $document.article_categories)\r\n {\r\n for (var $i in $document.article_categories){\r\n $categoriesVal.push($document.article_categories[$i].category_id);\r\n }\r\n $categories.val($categoriesVal);\r\n $categories.trigger(\"chosen:updated\");\r\n }\r\n $expirationDate.val('');\r\n if(\r\n $document &&\r\n $document.article_features &&\r\n $document.article_features.expiration_date\r\n ){\r\n var $date = moment.utc($document.article_features.expiration_date, 'YYYY-MM-DD').format('MM/DD/YYYY')\r\n $expirationDate.val($date);\r\n }\r\n if(\r\n $document &&\r\n $document.article_features &&\r\n $document.article_features.status\r\n ){\r\n if($document.article_features.status == 'draft'){\r\n $editorMenu.find('button[data-action=\"trash\"]').show();\r\n $editorMenu.find('button[data-action=\"draft\"]').show();\r\n $editorMenu.find('button[data-action=\"preview\"]').show();\r\n $editorMenu.find('button[data-action=\"published\"]').show();\r\n $editorMenu.find('button[data-action=\"new\"]').hide();\r\n }\r\n if($document.article_features.status == 'trash'){\r\n $editorMenu.find('button[data-action=\"trash\"]').hide();\r\n $editorMenu.find('button[data-action=\"draft\"]').show();\r\n $editorMenu.find('button[data-action=\"preview\"]').show();\r\n $editorMenu.find('button[data-action=\"published\"]').show();\r\n $editorMenu.find('button[data-action=\"new\"]').hide();\r\n }\r\n }\r\n libs.memoryUpdateObj('editor', {\r\n document:$document,\r\n });\r\n cback();\r\n }\r\n }\r\n });\r\n }else{\r\n $editorMenu.find('button[data-action=\"trash\"]').show();\r\n $editorMenu.find('button[data-action=\"draft\"]').show();\r\n $editorMenu.find('button[data-action=\"preview\"]').show();\r\n $editorMenu.find('button[data-action=\"published\"]').show();\r\n $editorMenu.find('button[data-action=\"new\"]').show();\r\n cback();\r\n }\r\n },\r\n editor_match:function($keyword, cback){\r\n $.ajax({\r\n url: \"/myDashboard/myArticles/match\",\r\n method: \"POST\",\r\n cache:false,\r\n dataType: \"json\",\r\n data:{user_id:libs.memoryGet('user_id'), keyword:$keyword},\r\n success: function ($data) {\r\n libs.expire($data);\r\n if($data.status == 'success'){\r\n cback($data);\r\n }\r\n }\r\n });\r\n },\r\n editor_validator:function(cback){\r\n $.validator.addMethod(\"mintext\", function($val, $ele, $params) {\r\n return $params != '';\r\n }, \"* The tags cannot be more than 5\");\r\n $.validator.addMethod(\"maxtags\", function($val, $ele, $params) {\r\n return $params <= 5;\r\n }, \"* The tags cannot be more than 5\");\r\n var $validator;\r\n try {\r\n $validator = $(\"#nurseslounge-home-articles form\").validate();\r\n $validator.destroy();\r\n }catch (e) {\r\n\r\n }\r\n $validator = $(\"#nurseslounge-home-articles form\").validate({\r\n onsubmit: true,\r\n debug: true,\r\n ignore: \"*:not(.validate)\",\r\n rules: {\r\n headline: {\r\n required: true,\r\n },\r\n author: {\r\n required: true,\r\n },\r\n html: {\r\n mintext: function(){\r\n var $editorMemory = libs.memoryGet('editor');\r\n var $textP = $editorMemory.text_processor;\r\n var $val = $textP.summernote('code');\r\n try{\r\n $val = $($val).text();\r\n }catch ($e) {\r\n\r\n }\r\n return $val;\r\n },\r\n },\r\n specialty: {\r\n required: false\r\n },\r\n degree: {\r\n required: false\r\n },\r\n lounges:{\r\n required:false,\r\n },\r\n tags: {\r\n maxtags: function(){\r\n var $tags = [];\r\n var $val = $(\"#nurseslounge-home-articles form input[name='tags']\").val();\r\n if($val != '') {\r\n var $selectedTags = JSON.parse($val);\r\n for (var $i in $selectedTags) {\r\n $tags.push($selectedTags[$i].value);\r\n }\r\n }\r\n return $tags.length;\r\n },\r\n },\r\n },\r\n messages: {\r\n headline: {\r\n required: \"The headline is required\"\r\n },\r\n author: {\r\n required: \"The author is required\"\r\n },\r\n html: {\r\n mintext: \"The article must have at least 1 characters\",\r\n },\r\n specialty: {\r\n required: \"The specialty is not required\"\r\n },\r\n degree: {\r\n required: \"The degree is not required\"\r\n },\r\n lounges:{\r\n required: \"The lounges are not required\",\r\n },\r\n tags: {\r\n maxtags: \"The tags cannot be more than 5\",\r\n }\r\n },\r\n errorPlacement: function($error, $element){\r\n var $ele = $($element);\r\n var $name = $ele.attr(\"name\");\r\n if(!$ele.hasClass('is-invalid')){\r\n $ele.addClass('is-invalid');\r\n }\r\n $(\".\"+$name+\"_validate\").html($($error).text()).show();\r\n },\r\n success: function($error, $element) {\r\n var $ele = $($element);\r\n var $name = $ele.attr(\"name\");\r\n if($ele.hasClass('is-invalid')){\r\n $ele.removeClass('is-invalid');\r\n }\r\n $(\".\"+$name+\"_validate\").html('').hide();\r\n },\r\n submitHandler: function($form) {\r\n cback($form);\r\n return false;\r\n }\r\n });\r\n },\r\n editor_add:function($obj){\r\n var $editorMemory = libs.memoryGet('editor');\r\n $editorMemory = libs.extendReplace($editorMemory, $obj);\r\n libs.memorySave('editor', $editorMemory);\r\n },\r\n editor_save_diff:function(){\r\n var $editorMemory = libs.memoryGet('editor');\r\n var $editorWrapper = $editorMemory.editor_wrapper;\r\n var $imageVal = $editorWrapper ? $editorWrapper.find('.editor-drop-image .attach-image:first').attr('src') : window.location.origin + '/bimg/NursesLounge/dragAndDrop.png';\r\n var $imageSaved = $editorMemory.document && $editorMemory.document.article_features && $editorMemory.document.article_features.image && $editorMemory.document.article_features.image.document_root ? $editorMemory.document.article_features.image.document_root : window.location.origin + '/bimg/NursesLounge/dragAndDrop.png';\r\n var $headlineVal = $editorWrapper ? $editorWrapper.find('input[name=\"headline\"]').val() : '';\r\n var $headlineSaved = $editorMemory.document && $editorMemory.document.article_features && $editorMemory.document.article_features.headline ? $editorMemory.document.article_features.headline : '';\r\n var $htmlVal = $editorWrapper ? $editorMemory.text_processor.summernote('code') : '


    ';\r\n var $htmlSaved = $editorMemory.document && $editorMemory.document.article_features && $editorMemory.document.article_features.html ? $editorMemory.document.article_features.html : '


    ';\r\n var $specialtyVal = $editorWrapper ? $editorWrapper.find('select[name=\"specialty\"]').val() : '';\r\n var $specialtySaved = $editorMemory.document && $editorMemory.document.article_features && $editorMemory.document.article_features.specialty && $editorMemory.document.article_features.specialty.id ? $editorMemory.document.article_features.specialty.id : '';\r\n var $degreeVal = $editorWrapper ? $editorWrapper.find('select[name=\"degree\"]').val() : '';\r\n var $degreeSaved = $editorMemory.document && $editorMemory.document.article_features && $editorMemory.document.article_features.degree && $editorMemory.document.article_features.degree.id ? $editorMemory.document.article_features.degree.id : '';\r\n var $expirationDateVal = $editorWrapper ? $editorWrapper.find('input[name=\"expirationDate\"]').val() : '';\r\n var $expirationDateSaved = $editorMemory.document && $editorMemory.document.article_features && $editorMemory.document.article_features.expiration_date ? $editorMemory.document.article_features.expiration_date : '';\r\n if($expirationDateVal != ''){\r\n $expirationDateVal = moment.utc($expirationDateVal, 'MM/DD/YYYY').format('YYYY-MM-DD')\r\n }\r\n var $categoriesValArr = $editorWrapper ? $editorWrapper.find('select[name=\"category\"]').val() : [];\r\n var $categoriesArr = $editorMemory.document && $editorMemory.document.article_categories ? $editorMemory.document.article_categories : [];\r\n var $categoriesVal = [];\r\n var $categoriesSaved = [];\r\n $.each($categoriesValArr, function($i, $v){\r\n $categoriesVal.push(parseInt($v));\r\n });\r\n $.each($categoriesArr, function($i, $v){\r\n $categoriesSaved.push($v.category_id);\r\n });\r\n $categoriesVal = $categoriesVal.sort().join(',');\r\n $categoriesSaved = $categoriesSaved.sort().join(',');\r\n\r\n var $tagsLounge = [];\r\n var $tagifyLounge = libs.memoryGet('nurseslounge_myDashboard_myArticles_tagify_lounges');\r\n $.each($tagifyLounge.value, function($i, $v){\r\n $tagsLounge.push($v.value);\r\n });\r\n $tagsLounge = $tagsLounge.sort();\r\n var $tagsLoungeVal = $tagsLounge.join(',');\r\n\r\n var $tagsLoungeSaved = [];\r\n var $documentLoungeTags = $editorMemory.document && $editorMemory.document.article_lounges && $editorMemory.document.article_lounges ? $editorMemory.document.article_lounges : [];\r\n $.each($documentLoungeTags, function($i, $v){\r\n $tagsLoungeSaved.push($v.lounge);\r\n });\r\n $tagsLoungeSaved = $tagsLoungeSaved.sort();\r\n $tagsLoungeSaved = $tagsLoungeSaved.join(',');\r\n\r\n var $tags = [];\r\n var $tagify = libs.memoryGet('nurseslounge_myDashboard_myArticles_tagify_tags');\r\n $.each($tagify.value, function($i, $v){\r\n $tags.push($v.value);\r\n });\r\n $tags = $tags.sort();\r\n var $tagsVal = $tags.join(',');\r\n\r\n var $tagsSaved = [];\r\n var $documentTags = $editorMemory.document && $editorMemory.document.article_tags && $editorMemory.document.article_tags ? $editorMemory.document.article_tags : [];\r\n $.each($documentTags, function($i, $v){\r\n $tagsSaved.push($v.tag);\r\n });\r\n $tagsSaved = $tagsSaved.sort();\r\n $tagsSaved = $tagsSaved.join(',');\r\n\r\n return (\r\n $imageVal != $imageSaved ||\r\n $headlineVal != $headlineSaved ||\r\n $htmlVal != $htmlSaved ||\r\n $specialtyVal != $specialtySaved ||\r\n $degreeVal != $degreeSaved ||\r\n $tagsVal != $tagsSaved ||\r\n $tagsLoungeVal != $tagsLoungeSaved ||\r\n $expirationDateVal != $expirationDateSaved ||\r\n $categoriesVal != $categoriesSaved\r\n )\r\n },\r\n editor_is_not_saved_msg:function(cback){\r\n var $modal = $(\"#home-my-profile-my-editor-modal\");\r\n var $modalBody = $modal.find('.modal-body:first');\r\n var $chtml = '' +\r\n '
    ' +\r\n ' ' +\r\n '
    ' +\r\n 'This article is not saved
    If you continue you can lost the changes
    ' +\r\n '
    ' +\r\n ' ' +\r\n ' ' +\r\n '
    ';\r\n $modalBody.html($chtml).promise().done(function(){\r\n $modalBody.find('.cancel').unbind().click(function(){\r\n $modal.modal('hide');\r\n });\r\n $modalBody.find('.continue').unbind().click(function(){\r\n cback($modal);\r\n });\r\n });\r\n $modal.modal('show');\r\n },\r\n editor_is_not_saved:function($section, $tab, cback){\r\n if(\r\n $tab == undefined && $section == 'articles' && nurseslounge_myDashboard_myArticles.editor_save_diff()\r\n ) {\r\n nurseslounge_myDashboard_myArticles.editor_is_not_saved_msg(function($modal){\r\n nurseslounge_myDashboard_myArticles.editor_new_option_event();\r\n cback();\r\n $modal.modal('hide');\r\n });\r\n }else{\r\n nurseslounge_myDashboard_myArticles.editor_new_option_event();\r\n cback();\r\n }\r\n },\r\n editor_new_option:function(){\r\n if(\r\n nurseslounge_myDashboard_myArticles.editor_save_diff()\r\n ) {\r\n nurseslounge_myDashboard_myArticles.editor_is_not_saved_msg(function($modal){\r\n nurseslounge_myDashboard_myArticles.editor_new_option_event();\r\n $modal.modal('hide');\r\n });\r\n }else{\r\n nurseslounge_myDashboard_myArticles.editor_new_option_event();\r\n }\r\n },\r\n editor_new_option_event:function(){\r\n var $editorMemory = libs.memoryGet('editor');\r\n if($editorMemory && $editorMemory.document && $editorMemory.document.id) {\r\n var $editorWrapper = $editorMemory.editor_wrapper;\r\n var $textP = $editorMemory.text_processor;\r\n if($editorWrapper != undefined && $textP != undefined){\r\n var $data = {\r\n user_id: $editorMemory.user_id,\r\n document: {},\r\n editor_wrapper: $editorWrapper,\r\n text_processor: $textP,\r\n };\r\n libs.memorySave('editor', $data);\r\n var $attachImage = $editorWrapper.find('.editor-drop-image .attach-image:first');\r\n var $headline = $editorWrapper.find('input[name=\"headline\"]');\r\n var $specialty = $editorWrapper.find('select[name=\"specialty\"]');\r\n var $degree = $editorWrapper.find('select[name=\"degree\"]');\r\n var $expirationDate = $editorWrapper.find('input[name=\"expirationDate\"]');\r\n var $category = $editorWrapper.find('select[name=\"category\"]');\r\n var $tagifyLounges = libs.memoryGet('nurseslounge_myDashboard_myArticles_tagify_lounges');\r\n var $tagify = libs.memoryGet('nurseslounge_myDashboard_myArticles_tagify_tags');\r\n $attachImage.attr('src', window.location.origin + '/bimg/NursesLounge/dragAndDrop.png');\r\n $headline.val('');\r\n $textP.summernote('code', '');\r\n $specialty.val('');\r\n $degree.val('');\r\n $tagifyLounges.removeAllTags();\r\n $tagify.removeAllTags();\r\n $expirationDate.val('').datepicker();\r\n $category.val('');\r\n $category.trigger(\"chosen:updated\");\r\n }\r\n }\r\n },\r\n editor_preview_option:function(){\r\n var $editorMemory = libs.memoryGet('editor');\r\n var $textP = $editorMemory.text_processor;\r\n var $chtml = $textP.summernote('code');\r\n var $editorWrapper = $editorMemory.editor_wrapper;\r\n var $attachImage = $editorWrapper.find('.editor-drop-image .attach-image:first');\r\n var $image = $attachImage.attr('src');\r\n $image = $image != window.location.origin + '/bimg/NursesLounge/dragAndDrop.png' ? $image : null;\r\n var $headline = $editorWrapper.find('input[name=\"headline\"]');\r\n var $author = $editorWrapper.find('input[name=\"author\"]');\r\n var $specialtySelect = $editorWrapper.find('select[name=\"specialty\"] option:selected');\r\n var $degreeSelect = $editorWrapper.find('select[name=\"degree\"] option:selected');\r\n var $expirationDate = $editorWrapper.find('input[name=\"expirationDate\"]');\r\n var $categorySelect = $editorWrapper.find('select[name=\"category\"]');\r\n\r\n var $tags = [];\r\n var $tagsVal = $editorWrapper.find(\"input[name='tags']\").val();\r\n if($tagsVal != '') {\r\n var $selectedTags = JSON.parse($tagsVal);\r\n for (var $i in $selectedTags) {\r\n $tags.push({tag:$selectedTags[$i].value});\r\n }\r\n }\r\n var $lounges = [];\r\n var $loungesVal = $editorWrapper.find(\"input[name='lounges']\").val();\r\n if($loungesVal != '') {\r\n var $selectedLounges = JSON.parse($loungesVal);\r\n for (var $i in $selectedLounges) {\r\n $lounges.push($selectedLounges[$i].value);\r\n }\r\n }\r\n var $specialty = {};\r\n var $specialtyId = $specialtySelect.val();\r\n if($specialtyId != ''){\r\n $specialty['id'] = $specialtyId;\r\n $specialty['type'] = $specialtySelect.text();\r\n }\r\n var $degree = {};\r\n var $degreeId = $degreeSelect.val();\r\n if($degreeId != ''){\r\n $degree['id'] = $degreeId;\r\n $degree['subcategory'] = $degreeSelect.text();\r\n }\r\n var $categories = [];\r\n var $categoriesIds = $categorySelect.val();\r\n if($categoriesIds.length > 0){\r\n $categorySelect.find('option:selected').map(function() {\r\n var $category = [];\r\n var $id = $(this).attr('value');\r\n $category['id'] = $id;\r\n var $text = $categorySelect.find('option[value='+$id+']').text();\r\n var $helper = {};\r\n $helper.category = $text;\r\n $category['category'] = $helper;\r\n $categories.push($category);\r\n })\r\n }\r\n var $expirationDateFormat = moment.utc($expirationDate.val(), 'MM/DD/YYYY').format('YYYY/MM/DD');\r\n var nlWallDocumentPreview = $(window).nurseslounge_myDashboard_wall_get({user_id:libs.memoryGet('user_id')}, 'nlWallDocumentPreview');\r\n var $id = libs.getUniqueId();\r\n nurseslounge_myDashboard_myArticles.editor_who_i_am(function($data){\r\n libs.memorySave('article'+$id, {\r\n document_root:null,\r\n document_preview_root:null,\r\n document_thumb_root:null,\r\n type:'article',\r\n name:null,\r\n date:moment.utc().format('YYYY-MM-DD HH:mm:ss'),\r\n user:{\r\n long_name:$data.data.user.long_name,\r\n profile_image_root_wall:$data.data.user.profile_image_root_wall\r\n },\r\n article_features:{\r\n headline:$headline.val(),\r\n author:$author.val(),\r\n html:$chtml,\r\n specialty:$specialty,\r\n degree:$degree,\r\n expiration_date:$expirationDateFormat,\r\n image:{\r\n document_root:$image\r\n },\r\n },\r\n article_categories:$categories,\r\n article_tags:$tags,\r\n article_lounges:$lounges\r\n });\r\n nlWallDocumentPreview.popup('article',$id, {article:{disabled:['download']}});\r\n });\r\n },\r\n editor_who_i_am:function(cback){\r\n $.ajax({\r\n url: \"/myDashboard/myArticles/whoIAm\",\r\n method: \"POST\",\r\n cache: false,\r\n dataType: \"json\",\r\n data: {user_id: libs.memoryGet('user_id')},\r\n success: function ($data) {\r\n libs.expire($data);\r\n if ($data.status == 'success') {\r\n cback($data);\r\n }\r\n }\r\n });\r\n },\r\n editor_set_article:function($action, cback){\r\n var $editorMemory = libs.memoryGet('editor');\r\n var $textP = $editorMemory.text_processor;\r\n var $chtml = $textP.summernote('code');\r\n var $editorWrapper = $editorMemory.editor_wrapper;\r\n var $attachImage = $editorWrapper.find('.editor-drop-image .attach-image:first');\r\n var $image = $attachImage.attr('src');\r\n $image = $image != window.location.origin + '/bimg/NursesLounge/dragAndDrop.png' ? $image : null;\r\n var $headline =$editorWrapper.find('input[name=\"headline\"]');\r\n var $author =$editorWrapper.find('input[name=\"author\"]');\r\n var $specialtySelect =$editorWrapper.find('select[name=\"specialty\"] option:selected');\r\n var $degreeSelect =$editorWrapper.find('select[name=\"degree\"] option:selected');\r\n var $expirationDate = $editorWrapper.find('input[name=\"expirationDate\"]');\r\n var $categorySelect = $editorWrapper.find('select[name=\"category\"]');\r\n\r\n var $specialty = {};\r\n var $specialtyId = $specialtySelect.val();\r\n if($specialtyId != ''){\r\n $specialty['id'] = $specialtyId;\r\n $specialty['type'] = $specialtySelect.text();\r\n }\r\n var $degree = {};\r\n var $degreeId = $degreeSelect.val();\r\n if($degreeId != ''){\r\n $degree['id'] = $degreeId;\r\n $degree['subcategory'] = $degreeSelect.text();\r\n }\r\n var $lounges = [];\r\n var $loungesVal = $editorWrapper.find(\"input[name='lounges']\").val();\r\n if($loungesVal != '') {\r\n var $selectedLounges = JSON.parse($loungesVal);\r\n for (var $i in $selectedLounges) {\r\n $lounges.push($selectedLounges[$i].value);\r\n }\r\n }\r\n var $tags = [];\r\n var $tagsVal = $editorWrapper.find(\"input[name='tags']\").val();\r\n if($tagsVal != '') {\r\n var $selectedTags = JSON.parse($tagsVal);\r\n for (var $i in $selectedTags) {\r\n $tags.push($selectedTags[$i].value);\r\n }\r\n }\r\n var $expirationDateFormat = null;\r\n if($expirationDate.val() != ''){\r\n $expirationDateFormat = moment.utc($expirationDate.val(), 'MM/DD/YYYY').format('YYYY-MM-DD');\r\n }\r\n nurseslounge_myDashboard_myArticles.editor_add(\r\n {\r\n action:$action,\r\n editor_wrapper:null,\r\n text_processor:null,\r\n document:{\r\n article_features:{\r\n headline:$headline.val(),\r\n author:$author.val(),\r\n html:$chtml,\r\n preview_html:$chtml,\r\n specialty:$specialty,\r\n degree:$degree,\r\n expiration_date:$expirationDateFormat,\r\n image:{\r\n document_root:$image\r\n }\r\n },\r\n article_categories:$categorySelect.val(),\r\n article_tags:$tags,\r\n article_lounges:$lounges\r\n }\r\n });\r\n $.ajax({\r\n url: \"/myDashboard/myArticles/set\",\r\n method: \"POST\",\r\n cache:false,\r\n dataType: \"json\",\r\n data:libs.memoryGet('editor'),\r\n success: function ($data) {\r\n libs.expire($data);\r\n if($data.status == 'success'){\r\n libs.memorySave('editor', $data.data.request);\r\n nurseslounge_myDashboard_myArticles.editor_add(\r\n {\r\n action:null,\r\n editor_wrapper:$editorWrapper,\r\n text_processor:$textP\r\n });\r\n nurseslounge_myDashboard_myArticles.editor_verify_publication(function(){\r\n if(cback != undefined){\r\n cback();\r\n }\r\n });\r\n }\r\n }\r\n });\r\n },\r\n};\r\n","var nurseslounge_myDashboard_myCalendar = {\r\n serverDateHelper:null,\r\n serverDate:null,\r\n selectedView:'month',\r\n selectedDate:null,\r\n setServerDate:function($utcDate){\r\n this.serverDateHelper = new Date();\r\n this.serverDate = $utcDate.toDate();\r\n },\r\n getServerDate:function(){\r\n var $now = new Date().getTime();\r\n var $diff = $now - this.serverDateHelper.getTime();\r\n var $date = this.serverDate.getTime() + $diff;\r\n $date = new Date($date);\r\n return {\r\n Y: $date.getUTCFullYear(),\r\n n: $date.getUTCMonth(),\r\n d: $date.getUTCDate(),\r\n G: $date.getUTCHours(),\r\n i: $date.getUTCMinutes(),\r\n s: $date.getUTCSeconds(),\r\n v: $date.getUTCMilliseconds()\r\n };\r\n },\r\n open_my_calendar:function($params){\r\n nurseslounge_myDashboard_accountSettings.init($params);\r\n nurseslounge_myDashboard_camera.init($params);\r\n nurseslounge_myDashboard.submenu($params, function(){\r\n setTimeout(function(){\r\n var $myCalendar = $(\"#nurseslounge-home-my-calendar\");\r\n var $timeZone = $myCalendar.find(\".time-zone\");\r\n var $area = $timeZone.data('area');\r\n $params = $.extend({}, $params, {area:$area});\r\n nurseslounge_myDashboard_myCalendar.open_my_calendar_request($params, function($data){\r\n var $momentDate = moment($data.data.star_at);\r\n $params = $.extend({}, $params, {month:$momentDate.clone().format('DD-MM-YYYY')});\r\n nurseslounge_myDashboard_myCalendar.get($params, function($data){\r\n nurseslounge_myDashboard_myCalendar.createCalendar('month', $momentDate.clone(), $data);\r\n });\r\n });\r\n }, 1000);\r\n });\r\n },\r\n open_my_calendar_request:function($params, cback){\r\n $.ajax({\r\n url: \"/myDashboard/myCalendar/getEventMoment\",\r\n method: 'POST',\r\n cache: false,\r\n dataType: \"json\",\r\n data:$params,\r\n success: function ($data) {\r\n libs.expire($data);\r\n cback($data);\r\n }\r\n });\r\n },\r\n init: function ($params) {\r\n nurseslounge_myDashboard_myCalendar.calendar($params);\r\n nurseslounge_myDashboard_myCalendar.get_years_calendar($params);\r\n nurseslounge_myDashboard_myProfile.profile_is_complete($params, true);\r\n },\r\n get_years_calendar:function($params){\r\n var $myCalendar = $(\"#nurseslounge-home-my-calendar\");\r\n var $timeZone = $myCalendar.find(\".time-zone\");\r\n var $area = $timeZone.data('area');\r\n var $calendarDate = nurseslounge_myDashboard_myCalendar.selectedDate;\r\n var $calendarTop = $(\"#nurseslounge-home-my-calendar .nurseslounge-home-my-calendar-top\");\r\n $params = $.extend({}, $params, {area:$area, year:$calendarDate.clone().format('YYYY')});\r\n nurseslounge_myDashboard_myCalendar.get_years_calendar_request($params, function($data){\r\n var $calendarEventsCount = $data.data.calendar_events_count;\r\n var $chtml = '';\r\n if($calendarEventsCount > 1 || $calendarEventsCount == 0){\r\n $chtml = $calendarEventsCount + ' Events on the Calendar';\r\n }else{\r\n $chtml = $calendarEventsCount + ' Event on the Calendar';\r\n }\r\n $calendarTop.find(\".year-events\").html($chtml).promise().done(function(){\r\n $calendarTop.find(\".event-list-view\").unbind().click(function(){\r\n var $event = $calendarTop.find(\".event-list-text\").data('event');\r\n $(\"#nurseslounge-home-my-calendar .view-options\").val($event).change();\r\n });\r\n });\r\n });\r\n },\r\n get_years_calendar_request:function($params, cback){\r\n $.ajax({\r\n url: \"/myDashboard/myCalendar/getYearEvents\",\r\n method: 'POST',\r\n cache: false,\r\n dataType: \"json\",\r\n data:$params,\r\n success: function ($data) {\r\n libs.expire($data);\r\n cback($data);\r\n }\r\n });\r\n },\r\n calendar:function($params){\r\n nurseslounge_myDashboard_myCalendar.currentTime();\r\n var $myCalendar = $(\"#nurseslounge-home-my-calendar\");\r\n var $timeZone = $myCalendar.find(\".time-zone\");\r\n var $area = $timeZone.data('area');\r\n nurseslounge_myDashboard_myCalendar.selectedDate = moment();\r\n var $calendarDate = nurseslounge_myDashboard_myCalendar.selectedDate;\r\n var $defaulCalendar = 'month';\r\n switch ($defaulCalendar) {\r\n case 'month':{\r\n $params = $.extend({}, $params, {area:$area, month:$calendarDate.clone().format('DD-MM-YYYY')});\r\n break;\r\n }\r\n case 'week':{\r\n $params = $.extend({}, $params, {area:$area, week:$calendarDate.clone().format('DD-MM-YYYY')});\r\n break;\r\n }\r\n case 'day':{\r\n $params = $.extend({}, $params, {area:$area, week:$calendarDate.clone().format('DD-MM-YYYY')});\r\n break;\r\n }\r\n case 'list':{\r\n $params = $.extend({}, $params, {area:$area, week:$calendarDate.clone().format('DD-MM-YYYY')});\r\n break;\r\n }\r\n }\r\n nurseslounge_myDashboard_myCalendar.get($params, function($data){\r\n var $weeks = nurseslounge_myDashboard_myCalendar.getWeeks($calendarDate, $data);\r\n var $week = $calendarDate.clone().week();\r\n var $day = $calendarDate.clone().format('DD');\r\n $day = libs.pad('00',$day,'l');\r\n var $currentWeek = $weeks.filter(function($v){\r\n return $v[0] == $week;\r\n })[0];\r\n var $currentDay = $currentWeek[1].filter(function($v){\r\n return $v[0] == $day;\r\n })[0];\r\n var $Y = $currentDay[1].trace.year.Y;\r\n var $n = $currentDay[1].trace.month.n - 1;\r\n var $d = $currentDay[1].trace.day.d;\r\n var $G = $currentDay[1].trace.hour.G;\r\n var $i = $currentDay[1].trace.hour.i;\r\n var $s = $currentDay[1].trace.hour.s;\r\n var $v = $currentDay[1].trace.hour.v;\r\n var $utcDate = moment.utc([$Y, $n, $d, $G, $i, $s, $v]);\r\n nurseslounge_myDashboard_myCalendar.setServerDate($utcDate);\r\n nurseslounge_myDashboard_myCalendar.createCalendar($defaulCalendar, $calendarDate.clone(), $data);\r\n });\r\n },\r\n currentTime:function(){\r\n var $myCalendar = $(\"#nurseslounge-home-my-calendar\");\r\n var $calendarBinding = libs.memoryGet('myDashboard_myCalendar_current_time') ? libs.memoryGet('myDashboard_myCalendar_current_time') : null;\r\n var $now = moment();\r\n var $dateArea = moment.tz.guess();\r\n var $dateZone = moment($now.format('YYYY-MM-DD')).tz($dateArea).format('Z');\r\n var $dateZoneAbbr = moment($now.format('YYYY-MM-DD')).tz($dateArea).format('z');\r\n var $timeZone = $myCalendar.find(\".time-zone\");\r\n var $timeNow = $myCalendar.find(\".time-now\");\r\n $timeZone.data('area', $dateArea);\r\n $timeZone.data('zone', $dateZone);\r\n $timeZone.data('zoneabbr', $dateZoneAbbr);\r\n $timeZone.html($dateArea+' '+$dateZone+' '+$dateZoneAbbr);\r\n $timeNow.data('datetime', $now.format('DD-MM-YYYY, HH:mm:ss'));\r\n\r\n var $activeTimeLine = $(\".calendar .view-week .week-timeline.active\");\r\n var $viewWeek = $activeTimeLine.parent();\r\n var $from = $viewWeek.data('from');\r\n $from = moment($from, 'YYYY-MM-DD HH:mm:ss');\r\n var $diffInMinutes = $now.diff($from, 'minutes');\r\n var $top = (parseInt($diffInMinutes)*2);\r\n var $getTop = $activeTimeLine.css('top');\r\n $getTop = $getTop!= undefined ? $getTop.replace('px', '') : '';\r\n if($getTop != $top){\r\n $activeTimeLine.css('top', $top);\r\n }\r\n\r\n var $weekTimeline = libs.memoryGet('myDashboard_myCalendar_week_timeline_binding');\r\n if($diffInMinutes == 0 && !$weekTimeline){\r\n libs.memorySave('myDashboard_myCalendar_week_timeline_binding', true);\r\n $activeTimeLine.removeClass('active');\r\n var $index = $($activeTimeLine.parents('tr:first').find('td')).index($viewWeek);\r\n $activeTimeLine.parent().closest('tr').next('tr').find('td:eq('+$index+')').find('.week-timeline').addClass('active');\r\n libs.memorySave('myDashboard_myCalendar_week_timeline_binding', false);\r\n }\r\n\r\n $timeNow.html($now.format('MMMM DD YYYY, hh:mm:ss a')).promise().done(function(){\r\n try{\r\n clearTimeout($calendarBinding);\r\n }catch ($e) {\r\n\r\n }\r\n $calendarBinding = setTimeout(function(){\r\n nurseslounge_myDashboard_myCalendar.currentTime();\r\n }, 1000);\r\n });\r\n libs.memorySave('myDashboard_myCalendar_current_time', $calendarBinding)\r\n },\r\n get:function($params, cback){\r\n $.ajax({\r\n url: \"/myDashboard/myCalendar/get\",\r\n method: \"POST\",\r\n cache:false,\r\n dataType: \"json\",\r\n data:$params,\r\n success: function ($data) {\r\n libs.expire($data);\r\n cback($data);\r\n }\r\n });\r\n },\r\n getConsecutive:function($params, cback){\r\n $.ajax({\r\n url: \"/myDashboard/myCalendar/getConsecutive\",\r\n method: \"POST\",\r\n cache:false,\r\n dataType: \"json\",\r\n data:$params,\r\n success: function ($data) {\r\n libs.expire($data);\r\n cback($data);\r\n }\r\n });\r\n },\r\n createCalendar:function($view, $momentDate, $data){\r\n var $userId = libs.memoryGet('user_id');\r\n var $myCalendar = $(\"#nurseslounge-home-my-calendar\");\r\n var $timeZone = $myCalendar.find(\".time-zone\");\r\n var $area = $timeZone.data('area');\r\n var $viewOptions = $myCalendar.find(\".view-options\");\r\n var $prevButton = $myCalendar.find(\".prev-button\");\r\n var $nextButton = $myCalendar.find(\".next-button\");\r\n var $todayButton = $myCalendar.find(\".today-button\");\r\n var $createEvent = $myCalendar.find(\".create-event\");\r\n var $YYYY = $momentDate.format('YYYY');\r\n var $MMMM = $momentDate.format('MMMM');\r\n var $calendarTitle = $myCalendar.find(\".calendar-title\");\r\n var $calendarTop = $(\"#nurseslounge-home-my-calendar .nurseslounge-home-my-calendar-top\");\r\n nurseslounge_myDashboard_myCalendar.selectedDate = $momentDate;\r\n switch ($view) {\r\n case 'month':{\r\n $calendarTop.find(\".event-list-text\").html('Event List View').promise().done(function(){\r\n $calendarTop.find(\".event-list-text\").data('event','list');\r\n nurseslounge_myDashboard_myCalendar.createCalendarMonth($momentDate, $data);\r\n });\r\n break;\r\n }\r\n case 'week':{\r\n $calendarTop.find(\".event-list-text\").html('Event Calendar View').promise().done(function(){\r\n $calendarTop.find(\".event-list-text\").data('event','month');\r\n nurseslounge_myDashboard_myCalendar.createCalendarWeek($momentDate, $data);\r\n });\r\n break;\r\n }\r\n case 'day':{\r\n $calendarTop.find(\".event-list-text\").html('Event Calendar View').promise().done(function(){\r\n $calendarTop.find(\".event-list-text\").data('event','month');\r\n nurseslounge_myDashboard_myCalendar.createCalendarDay($momentDate, $data);\r\n });\r\n break;\r\n }\r\n case 'list':{\r\n $calendarTop.find(\".event-list-text\").html('Event Calendar View').promise().done(function(){\r\n $calendarTop.find(\".event-list-text\").data('event','month');\r\n nurseslounge_myDashboard_myCalendar.createCalendarList($momentDate, $data);\r\n });\r\n break;\r\n }\r\n }\r\n $calendarTitle.removeClass('calendar-title-preload');\r\n $calendarTitle.html($MMMM+' - '+$YYYY).promise().done(function(){\r\n $viewOptions.unbind().change(function(){\r\n var $that = $(this);\r\n var $selectedView = $that.val();\r\n var $params = {user_id:$userId, area:$area};\r\n var $selectedDate = nurseslounge_myDashboard_myCalendar.selectedDate;\r\n if($selectedView != ''){\r\n switch ($selectedView) {\r\n case 'month':{\r\n $params = $.extend({}, $params, {month:$selectedDate.clone().format('DD-MM-YYYY')});\r\n break;\r\n }\r\n case 'week':{\r\n $params = $.extend({}, $params, {week:$selectedDate.clone().format('DD-MM-YYYY')});\r\n break;\r\n }\r\n case 'day':{\r\n $params = $.extend({}, $params, {week:$selectedDate.clone().format('DD-MM-YYYY')});\r\n break;\r\n }\r\n case 'list':{\r\n $params = $.extend({}, $params, {week:$selectedDate.clone().format('DD-MM-YYYY')});\r\n break;\r\n }\r\n }\r\n nurseslounge_myDashboard_myCalendar.get($params, function($data){\r\n nurseslounge_myDashboard_myCalendar.createCalendar($selectedView, $selectedDate.clone(), $data);\r\n });\r\n nurseslounge_myDashboard_myCalendar.selectedView = $selectedView;\r\n }\r\n });\r\n $viewOptions.find('option[value=\"'+$view+'\"]').prop('selected', true);\r\n $prevButton.unbind().click(function(){\r\n var $newMomentDate = null;\r\n var $selectedView = nurseslounge_myDashboard_myCalendar.selectedView;\r\n var $params = {user_id:$userId, area:$area};\r\n switch ($selectedView) {\r\n case 'month':{\r\n $newMomentDate = $momentDate.subtract(1, 'month');\r\n $params = $.extend({}, $params, {month:$newMomentDate.clone().format('DD-MM-YYYY')});\r\n break;\r\n }\r\n case 'week':{\r\n $newMomentDate = $momentDate.subtract(1, 'week');\r\n $params = $.extend({}, $params, {week:$newMomentDate.clone().format('DD-MM-YYYY')});\r\n break;\r\n }\r\n case 'day':{\r\n $newMomentDate = $momentDate.subtract(1, 'day');\r\n $params = $.extend({}, $params, {week:$newMomentDate.clone().format('DD-MM-YYYY')});\r\n break;\r\n }\r\n case 'list':{\r\n $newMomentDate = $momentDate.subtract(1, 'day');\r\n $params = $.extend({}, $params, {week:$newMomentDate.clone().format('DD-MM-YYYY')});\r\n break;\r\n }\r\n }\r\n if($selectedView == 'list'){\r\n nurseslounge_myDashboard_myCalendar.prevConsecutiveDay($params);\r\n }else{\r\n nurseslounge_myDashboard_myCalendar.get($params, function($data){\r\n nurseslounge_myDashboard_myCalendar.createCalendar($selectedView, $newMomentDate.clone(), $data);\r\n });\r\n }\r\n });\r\n $nextButton.unbind().click(function(){\r\n var $newMomentDate = null;\r\n var $selectedView = nurseslounge_myDashboard_myCalendar.selectedView;\r\n var $params = {user_id:$userId, area:$area};\r\n switch ($selectedView) {\r\n case 'month':{\r\n $newMomentDate = $momentDate.add(1, 'month');\r\n $params = $.extend({}, $params, {month:$newMomentDate.clone().format('DD-MM-YYYY')});\r\n break;\r\n }\r\n case 'week':{\r\n $newMomentDate = $momentDate.add(1, 'week');\r\n $params = $.extend({}, $params, {week:$newMomentDate.clone().format('DD-MM-YYYY')});\r\n break;\r\n }\r\n case 'day':{\r\n $newMomentDate = $momentDate.add(1, 'day');\r\n $params = $.extend({}, $params, {week:$newMomentDate.clone().format('DD-MM-YYYY')});\r\n break;\r\n }\r\n case 'list':{\r\n $newMomentDate = $momentDate.add(1, 'day');\r\n $params = $.extend({}, $params, {week:$newMomentDate.clone().format('DD-MM-YYYY')});\r\n break;\r\n }\r\n }\r\n if($selectedView == 'list'){\r\n nurseslounge_myDashboard_myCalendar.nextConsecutiveDay($params);\r\n }else{\r\n nurseslounge_myDashboard_myCalendar.get($params, function($data){\r\n nurseslounge_myDashboard_myCalendar.createCalendar($selectedView, $newMomentDate.clone(), $data);\r\n });\r\n }\r\n });\r\n $todayButton.unbind().click(function(){\r\n var $selectedView = nurseslounge_myDashboard_myCalendar.selectedView;\r\n var $params = {user_id:$userId, area:$area};\r\n var $today = moment();\r\n switch ($selectedView) {\r\n case 'month':{\r\n $params = $.extend({}, $params, {month:$today.clone().format('DD-MM-YYYY')});\r\n break;\r\n }\r\n case 'week':{\r\n $params = $.extend({}, $params, {week:$today.clone().format('DD-MM-YYYY')});\r\n break;\r\n }\r\n case 'day':{\r\n $params = $.extend({}, $params, {week:$today.clone().format('DD-MM-YYYY')});\r\n break;\r\n }\r\n case 'list':{\r\n $params = $.extend({}, $params, {week:$today.clone().format('DD-MM-YYYY')});\r\n break;\r\n }\r\n }\r\n //Scroll\r\n nurseslounge_myDashboard_myCalendar.get($params, function($data){\r\n nurseslounge_myDashboard_myCalendar.createCalendar($selectedView, $today, $data);\r\n var $calendarViewWeek = $(\".calendar .view-week\");\r\n var $activeTimeLine = $calendarViewWeek.find(\".week-timeline.active\");\r\n if($activeTimeLine.length > 0 && $calendarViewWeek.is(':visible')){\r\n var $scrollPosition = $activeTimeLine.offset().top;\r\n $(\"html, body\").animate({scrollTop:parseInt($scrollPosition) - 150});\r\n }\r\n var $calendarViewDay = $(\".calendar .view-day\");\r\n var $activeTimeLine = $calendarViewDay.find(\".week-timeline.active\");\r\n if($activeTimeLine.length > 0 && $calendarViewDay.is(':visible')){\r\n var $scrollPosition = $activeTimeLine.offset().top;\r\n $(\"html, body\").animate({scrollTop:parseInt($scrollPosition) - 150});\r\n }\r\n var $calendarViewList = $(\".calendar .view-list\");\r\n var $activeTimeLine = $calendarViewList.find(\".timeline.active\");\r\n if($activeTimeLine.length > 0 && $calendarViewList.is(':visible')){\r\n var $scrollPosition = $activeTimeLine.offset().top;\r\n $(\"html, body\").animate({scrollTop:parseInt($scrollPosition) - 150});\r\n }\r\n });\r\n });\r\n $createEvent.unbind().click(function(){\r\n var $params = {user_id:$userId, area:$area};\r\n nurseslounge_myDashboard_myCalendar.getEventModal($params);\r\n //var $params = {user_id:$userId, area:$area};\r\n //nurseslounge_myDashboard_myCalendar.openPreviousEvent($params);\r\n });\r\n var $calendarViewWeek = $(\".calendar .view-week\");\r\n var $activeTimeLine = $calendarViewWeek.find(\".week-timeline.active\");\r\n if($activeTimeLine.length > 0 && $calendarViewWeek.is(':visible')){\r\n var $scrollPosition = $activeTimeLine.offset().top;\r\n $(\"html, body\").animate({scrollTop:parseInt($scrollPosition) - 150});\r\n }\r\n var $calendarViewDay = $(\".calendar .view-day\");\r\n var $activeTimeLine = $calendarViewDay.find(\".week-timeline.active\");\r\n if($activeTimeLine.length > 0 && $calendarViewDay.is(':visible')){\r\n var $scrollPosition = $activeTimeLine.offset().top;\r\n $(\"html, body\").animate({scrollTop:parseInt($scrollPosition) - 150});\r\n }\r\n var $calendarViewList = $(\".calendar .view-list\");\r\n var $activeTimeLine = $calendarViewList.find(\".timeline.active\");\r\n if($activeTimeLine.length > 0 && $calendarViewList.is(':visible')){\r\n var $scrollPosition = $activeTimeLine.offset().top;\r\n $(\"html, body\").animate({scrollTop:parseInt($scrollPosition) - 150});\r\n }\r\n });\r\n var $nurseslounge_myDashboard_myCalendar_list = libs.memoryGet('nurseslounge_myDashboard_myCalendar_list');\r\n if($view == 'list' && !$nurseslounge_myDashboard_myCalendar_list){\r\n libs.memorySave('nurseslounge_myDashboard_myCalendar_list', true);\r\n $todayButton.click();\r\n $nextButton.click();\r\n }\r\n if($view != 'list'){\r\n libs.memorySave('nurseslounge_myDashboard_myCalendar_list', false);\r\n //$todayButton.click();\r\n }\r\n },\r\n nextConsecutiveDay:function($params){\r\n $params = $.extend({}, $params, {sense:'next'});\r\n nurseslounge_myDashboard_myCalendar.getConsecutive($params, function($data) {\r\n var $selectedWeek = $data.data.selected_week;\r\n var $momentDate = moment($selectedWeek, \"DD-MM-YYYY\");\r\n nurseslounge_myDashboard_myCalendar.selectedDate = $momentDate;\r\n nurseslounge_myDashboard_myCalendar.createCalendar('list', $momentDate.clone(), $data);\r\n });\r\n },\r\n prevConsecutiveDay:function($params){\r\n $params = $.extend({}, $params, {sense:'prev'});\r\n nurseslounge_myDashboard_myCalendar.getConsecutive($params, function($data) {\r\n var $selectedWeek = $data.data.selected_week;\r\n var $momentDate = moment($selectedWeek, \"DD-MM-YYYY\");\r\n nurseslounge_myDashboard_myCalendar.selectedDate = $momentDate;\r\n nurseslounge_myDashboard_myCalendar.createCalendar('list', $momentDate.clone(), $data);\r\n });\r\n },\r\n getEventRequest:function($params, cback){\r\n $.ajax({\r\n url: \"/myDashboard/myCalendar/getEvent\",\r\n method: 'POST',\r\n cache: false,\r\n dataType: \"html\",\r\n data:$params,\r\n success: function ($data) {\r\n libs.expire($data);\r\n cback($data);\r\n }\r\n });\r\n },\r\n getEventModal:function($params){\r\n var $myCalendar = $(\"#nurseslounge-home-my-calendar\");\r\n var $timeZone = $myCalendar.find(\".time-zone\");\r\n var $area = $timeZone.data('area');\r\n $params = $.extend({}, $params, {area:$area});\r\n var $modal = $(\"#home-my-profile-calendar-events\");\r\n var $modalTitle = $modal.find(\".modal-title\");\r\n var $modalBody = $modal.find(\".modal-body\");\r\n nurseslounge_myDashboard_myCalendar.getEventRequest($params, function($chtml){\r\n var $modalFooter = $($chtml).find('.modal-footer:first');\r\n var $isOwner = $modalFooter.data('owner') == 1;\r\n var $key = $modalFooter.data('key');\r\n var $hasKey = $key && $key != '';\r\n var $createEditHtml = '';\r\n if($hasKey){\r\n if(!$isOwner){\r\n $createEditHtml = 'Invitation to an event';\r\n }else{\r\n $createEditHtml = 'Edit event';\r\n }\r\n }else{\r\n if($isOwner) {\r\n $createEditHtml = 'Create event';\r\n }\r\n }\r\n $modalTitle.html($createEditHtml);\r\n $modalBody.html($chtml).promise().done(function(){\r\n var $modalForm = $modal.find(\"form\");\r\n var $typeContainer = $modal.find('.event_type_container');\r\n var $typeEventType = $typeContainer.find('select[name=\"typeEventType\"]');\r\n var $oneTimeEventContainer = $modal.find('.event_oneTimeEvent_container');\r\n $oneTimeEventContainer.hide();\r\n var $periodicalEventContainer = $modal.find('.event_periodicalEvent_container');\r\n $periodicalEventContainer.hide();\r\n var $periodContainer = $modal.find('.event_period_container');\r\n $periodContainer.hide();\r\n var $weeklyContainer = $modal.find('.event_weekly_container');\r\n var $weeklyContainerSelection = $weeklyContainer.find('.event_weekly_container_selection');\r\n $weeklyContainerSelection.hide();\r\n $weeklyContainer.hide();\r\n var $monthlyContainer = $modal.find('.event_monthly_container');\r\n var $monthlyContainerSelection = $monthlyContainer.find('.event_monthly_container_selection');\r\n $monthlyContainerSelection.hide();\r\n $monthlyContainer.hide();\r\n var $hoursContainer = $modal.find('.event_hours_container');\r\n var $hoursContainerSelection = $hoursContainer.find('.event_hours_container_selection');\r\n $hoursContainerSelection.hide();\r\n $hoursContainer.hide();\r\n var $notifyContainer = $modal.find('.event_notify_container');\r\n var $notifyContainerSelection = $notifyContainer.find('.event_notify_container_selection');\r\n $notifyContainerSelection.hide();\r\n $notifyContainer.hide();\r\n var $inviteUsersContainer = $modal.find('.event_inviteUsers_container');\r\n $inviteUsersContainer.hide();\r\n var $settingsContainer = $modal.find('.event_settings_container');\r\n $settingsContainer.hide();\r\n var $modalFooter = $modal.find('.modal-footer');\r\n $modalFooter.hide();\r\n $typeEventType.unbind().change(function(){\r\n var $that = $(this);\r\n $oneTimeEventContainer.hide();\r\n $periodicalEventContainer.hide();\r\n $periodContainer.hide();\r\n $weeklyContainer.hide();\r\n $monthlyContainer.hide();\r\n $hoursContainer.hide();\r\n $hoursContainerSelection.hide();\r\n $notifyContainer.hide();\r\n $notifyContainerSelection.hide();\r\n $inviteUsersContainer.hide();\r\n $settingsContainer.hide();\r\n $modalFooter.hide();\r\n $modalForm.find('.invalid-feedback').hide();\r\n $modalForm.find('.error').removeClass('error');\r\n $modalForm.find('.is-invalid').removeClass('is-invalid');\r\n switch($that.val()){\r\n case 'one_time':{\r\n nurseslounge_myDashboard_myCalendar.oneTimeEvents();\r\n break;\r\n }\r\n case 'periodical':{\r\n nurseslounge_myDashboard_myCalendar.periodicalEvents();\r\n break;\r\n }\r\n }\r\n });\r\n var $modalDescription =$modalForm.find(\"textarea[name='dataDescription']\");\r\n var $modalDescriptionCharacters =$modalForm.find(\"input[name='dataDescriptionCharacters']\");\r\n $modalDescription.unbind().on('keyup keydown keypress', function(){\r\n var $that = $(this);\r\n var $val = $that.val();\r\n var $allowedCharacters = 200 - $val.length;\r\n $allowedCharacters = $allowedCharacters > 0 ? $allowedCharacters : 0;\r\n if($allowedCharacters <= 0){\r\n $that.val($val.substring(0, 200));\r\n }\r\n $modalDescriptionCharacters.val($allowedCharacters);\r\n });\r\n switch($typeEventType.val()){\r\n case 'one_time':{\r\n nurseslounge_myDashboard_myCalendar.oneTimeEvents();\r\n break;\r\n }\r\n case 'periodical':{\r\n nurseslounge_myDashboard_myCalendar.periodicalEvents();\r\n break;\r\n }\r\n }\r\n libs.checkImageLoad($($chtml).find('img'), function(){\r\n $modal.modal('show');\r\n });\r\n });\r\n });\r\n },\r\n oneTimeEvents:function(){\r\n var $userId = libs.memoryGet('user_id');\r\n var $modal = $(\"#home-my-profile-calendar-events\");\r\n var $oneTimeEventContainer = $modal.find('.event_oneTimeEvent_container');\r\n var $oneTimeEventDay = $oneTimeEventContainer.find('.day');\r\n var $oneTimeEventResetDay = $oneTimeEventContainer.find('.reset_day');\r\n var $date = $oneTimeEventDay.data('value') != '' ? moment($oneTimeEventDay.data('value'), 'YYYY-MM-DD HH:mm:ss').format('MM/DD/YYYY') : moment().format('MM/DD/YYYY');\r\n $oneTimeEventDay.val($date).datepicker(\"update\");\r\n $oneTimeEventDay.on('changeDate', function () {\r\n $(this).datepicker('hide');\r\n });\r\n $oneTimeEventResetDay.unbind().click(function(){\r\n $oneTimeEventDay.val($date).datepicker(\"update\");\r\n });\r\n nurseslounge_myDashboard_myCalendar.mandatoryEvents();\r\n nurseslounge_myDashboard_myCalendar.oneTimeEventsValidator(function($form){\r\n var $params = libs.getObjForm($form);\r\n var $title = $params.dataTitle;\r\n var $description = $params.dataDescription;\r\n var $link = $params.dataLink;\r\n var $type = $params.typeEventType;\r\n var $permanent = 0;\r\n var $from = $params.oneTimeEventDay;\r\n var $to = $params.oneTimeEventDay;\r\n var $period = null;\r\n var $include = null;\r\n var $days = null;\r\n var $allTimeDay = $params.hourAllDayCheckbox == 'on' ? 1 : 0;\r\n var $startAt = $params.hourSelectionFromHour;\r\n var $endAt = $params.hourSelectionToHour;\r\n var $notificationBeforeEvent = $params.notifyBeforeEventCheckbox == 'on' ? 1 : 0;\r\n var $notificationTime = null;\r\n var $notifyNotificationUnitTime = null;\r\n var $inviteUsersCheckbox = $params.inviteUsersCheckbox == 'on' ? 1 : 0;\r\n var $inviteUsersList = $params.inviteUsersList ? JSON.parse($params.inviteUsersList) : [];\r\n var $invitations = [];\r\n var $color = libs.rgb2hex($(\"input[name='settingsColor']\").css('backgroundColor'));\r\n var $available = $params.available == 'on' ? 1 : 0;\r\n if($notificationBeforeEvent == 1){\r\n $notificationTime = $params.notifyNotificationTimes;\r\n $notifyNotificationUnitTime = $params.notifyNotificationUnitTime;\r\n }\r\n if($inviteUsersCheckbox == 1){\r\n $.each($inviteUsersList, function($i, $v){\r\n $invitations.push($v.id);\r\n });\r\n }\r\n var $myCalendar = $(\"#nurseslounge-home-my-calendar\");\r\n var $timeZone = $myCalendar.find(\".time-zone\");\r\n var $area = $timeZone.data('area');\r\n var $event = {\r\n user_id:$userId,\r\n area:$area,\r\n title:$title,\r\n description:$description,\r\n link:$link,\r\n type:$type,\r\n permanent:$permanent,\r\n from:$from,\r\n to:$to,\r\n period:$period,\r\n include:$include,\r\n days:$days,\r\n all_time_day:$allTimeDay,\r\n start_at:$startAt,\r\n end_at:$endAt,\r\n notification_time:$notificationTime,\r\n notification_unit_time:$notifyNotificationUnitTime,\r\n color:$color,\r\n available:$available,\r\n invitations:$invitations.join(','),\r\n selected_date:nurseslounge_myDashboard_myCalendar.selectedDate.clone().format('DD-MM-YYYY')\r\n };\r\n nurseslounge_myDashboard_myCalendar.saveEvent($event);\r\n });\r\n nurseslounge_myDashboard_myCalendar.deleteEvent();\r\n $oneTimeEventContainer.show();\r\n },\r\n oneTimeEventsValidator:function(cback){\r\n $.validator.addMethod(\"dateGreaterThanHour\", function($v, $ele, $params) {\r\n var $oneTimeEventDay = $(\"#home-my-profile-calendar-events form .event_oneTimeEvent_container input[name='oneTimeEventDay']\").val();\r\n var $date = $oneTimeEventDay+' '+$v;\r\n return $params != false ? moment($date, 'MM/DD/YYYY h:mm A') > moment($params, 'MM/DD/YYYY h:mm A') : true;\r\n },'Date must be greater than {0}.');\r\n $.validator.addMethod(\"dateGreaterThanDay\", function($v, $ele, $params) {\r\n return $params != false ? moment($v, 'MM/DD/YYYY') > $params : true;\r\n },'Date must be greater than {0}.');\r\n var $validator;\r\n try {\r\n $validator = $(\"#home-my-profile-calendar-events form\").validate();\r\n $validator.destroy();\r\n }catch (e) {\r\n\r\n }\r\n var $typeEventType = $('#home-my-profile-calendar-events form .event_type_container select[name=\"typeEventType\"]');\r\n var $hourAllDayCheckbox = $('#home-my-profile-calendar-events form .event_hours_container input[name=\"hourAllDayCheckbox\"]');\r\n var $notifyBeforeEventCheckbox = $('#home-my-profile-calendar-events form .event_notify_container input[name=\"notifyBeforeEventCheckbox\"]');\r\n var $inviteUsersCheckbox = $('#home-my-profile-calendar-events form .event_inviteUsers_container input[name=\"inviteUsersCheckbox\"]');\r\n $validator = $(\"#home-my-profile-calendar-events form\").validate({\r\n onsubmit: true,\r\n debug: true,\r\n ignore: \"*:not(.validate)\",\r\n rules: {\r\n dataTitle: {\r\n required: true\r\n },\r\n dataDescription: {\r\n required: true,\r\n minlength: 1,\r\n maxlength: 200\r\n },\r\n dataLink: {\r\n required: false\r\n },\r\n typeEventType: {\r\n required: true,\r\n },\r\n oneTimeEventDay: {\r\n required: function () {\r\n return $typeEventType.val() == 'one_time';\r\n }\r\n },\r\n hourSelectionFromHour:{\r\n required: function () {\r\n return !$hourAllDayCheckbox.is(':checked');\r\n }\r\n },\r\n hourSelectionToHour:{\r\n required: function () {\r\n return !$hourAllDayCheckbox.is(':checked');\r\n },\r\n dateGreaterThanHour:function(){\r\n var $oneTimeEventDay = $(\"#home-my-profile-calendar-events form .event_oneTimeEvent_container input[name='oneTimeEventDay']\").val();\r\n var $hourSelectionFromHour = $(\"#home-my-profile-calendar-events form .event_hours_container input[name='hourSelectionFromHour']\").val();\r\n var $date = $oneTimeEventDay+' '+$hourSelectionFromHour;\r\n return $typeEventType.val() == 'one_time' && !$hourAllDayCheckbox.is(':checked') ? moment($date, 'MM/DD/YYYY h:mm A') : false;\r\n }\r\n },\r\n notifyNotificationTimes:{\r\n required: function () {\r\n return !$notifyBeforeEventCheckbox.is(':checked');\r\n }\r\n },\r\n notifyNotificationUnitTime:{\r\n required: function () {\r\n return !$notifyBeforeEventCheckbox.is(':checked');\r\n }\r\n },\r\n inviteUsersList:{\r\n required: function () {\r\n return $inviteUsersCheckbox.is(':checked');\r\n }\r\n },\r\n },\r\n messages: {\r\n dataTitle: {\r\n required: \"The event title is required\",\r\n },\r\n dataDescription: {\r\n required: \"The event description is required\",\r\n minlength: \"The event description must have at least 1 characters\",\r\n maxlength: \"The event description cannot exceed 200 characters\"\r\n },\r\n dataLink: {\r\n required: \"The event link is not required\",\r\n },\r\n typeEventType: {\r\n required: \"The event type is required\"\r\n },\r\n oneTimeEventDay: {\r\n required: \"The event type day is required\"\r\n },\r\n hourSelectionFromHour: {\r\n required: \"The event from hour is required\"\r\n },\r\n hourSelectionToHour: {\r\n required: \"The event to hour is required\",\r\n dateGreaterThanHour:'The event to hour must be greater than from hour'\r\n },\r\n notifyNotificationTimes:{\r\n required: \"The time prev for notification is required\"\r\n },\r\n notifyNotificationUnitTime: {\r\n required: \"The unit time prev for notification is required\"\r\n },\r\n inviteUsersList: {\r\n required: \"The colleagues list is required\"\r\n }\r\n },\r\n errorPlacement: function($error, $element){\r\n var $ele = $($element);\r\n var $name = $ele.attr(\"name\");\r\n if(!$ele.hasClass('is-invalid')){\r\n $ele.addClass('is-invalid');\r\n }\r\n $(\".\"+$name+\"_validate\").html($($error).text()).show();\r\n },\r\n success: function($error, $element) {\r\n var $ele = $($element);\r\n var $name = $ele.attr(\"name\");\r\n if($ele.hasClass('is-invalid')){\r\n $ele.removeClass('is-invalid');\r\n }\r\n $(\".\"+$name+\"_validate\").html('').hide();\r\n },\r\n submitHandler: function($form) {\r\n cback($form);\r\n return false;\r\n }\r\n });\r\n },\r\n periodicalEvents:function(){\r\n var $userId = libs.memoryGet('user_id');\r\n var $modal = $(\"#home-my-profile-calendar-events\");\r\n var $periodicalEventContainer = $modal.find('.event_periodicalEvent_container');\r\n var $periodicalEventFromDate = $periodicalEventContainer.find('.from_date');\r\n var $periodicalEventFromResetDate = $periodicalEventContainer.find('.reset_from_date');\r\n var $periodicalEventToDate = $periodicalEventContainer.find('.to_date');\r\n var $periodicalEventToResetDate = $periodicalEventContainer.find('.reset_to_date');\r\n var $periodicalEventPermanentCheckbox = $periodicalEventContainer.find('input[name=\"periodicalEventPermanentCheckbox\"]');\r\n var $periodicalEventContainerSelection = $periodicalEventContainer.find('.event_periodicalEvent_container_selection');\r\n var $periodContainer = $modal.find('.event_period_container');\r\n var $periodDate = $periodContainer.find('select[name=\"periodDate\"]');\r\n var $weeklyContainer = $modal.find('.event_weekly_container');\r\n var $monthlyContainer = $modal.find('.event_monthly_container');\r\n $periodicalEventPermanentCheckbox.unbind().change(function(){\r\n var $that = $(this);\r\n if($that.is(':checked')){\r\n $periodicalEventContainerSelection.hide();\r\n }else{\r\n $periodicalEventContainerSelection.show();\r\n }\r\n });\r\n if($periodicalEventPermanentCheckbox.is(':checked')){\r\n $periodicalEventContainerSelection.hide();\r\n }else{\r\n $periodicalEventContainerSelection.show();\r\n }\r\n var $fromDate = $periodicalEventFromDate.data('value') != '' ? moment($periodicalEventFromDate.data('value'), 'YYYY-MM-DD HH:mm:ss').format('MM/DD/YYYY') : moment().format('MM/DD/YYYY');\r\n $periodicalEventFromDate.val($fromDate).datepicker(\"update\");\r\n $periodicalEventFromDate.on('changeDate', function () {\r\n $(this).datepicker('hide');\r\n });\r\n $periodicalEventFromResetDate.unbind().click(function(){\r\n $periodicalEventFromDate.val($fromDate).datepicker(\"update\");\r\n });\r\n var $toDate = $periodicalEventToDate.data('value') != '' ? moment($periodicalEventToDate.data('value'), 'YYYY-MM-DD HH:mm:ss').format('MM/DD/YYYY') : moment().format('MM/DD/YYYY');\r\n $periodicalEventToDate.val($toDate).datepicker(\"update\");\r\n $periodicalEventToDate.on('changeDate', function () {\r\n $(this).datepicker('hide');\r\n });\r\n $periodicalEventToResetDate.unbind().click(function(){\r\n $periodicalEventToDate.val($toDate).datepicker(\"update\");\r\n });\r\n\r\n $periodDate.unbind().change(function(){\r\n var $that = $(this);\r\n $weeklyContainer.hide();\r\n $monthlyContainer.hide();\r\n switch($that.val()){\r\n case 'all':{\r\n $weeklyContainer.hide();\r\n $monthlyContainer.hide();\r\n break;\r\n }\r\n case 'monthly':{\r\n nurseslounge_myDashboard_myCalendar.monthlyEvents();\r\n break;\r\n }\r\n case 'weekly':{\r\n nurseslounge_myDashboard_myCalendar.weeklyEvents();\r\n break;\r\n }\r\n }\r\n });\r\n switch($periodDate.val()){\r\n case 'all':{\r\n $weeklyContainer.hide();\r\n $monthlyContainer.hide();\r\n break;\r\n }\r\n case 'monthly':{\r\n nurseslounge_myDashboard_myCalendar.monthlyEvents();\r\n break;\r\n }\r\n case 'weekly':{\r\n nurseslounge_myDashboard_myCalendar.weeklyEvents();\r\n break;\r\n }\r\n }\r\n nurseslounge_myDashboard_myCalendar.mandatoryEvents();\r\n nurseslounge_myDashboard_myCalendar.periodicalEventsValidator(function($form){\r\n var $params = libs.getObjForm($form);\r\n var $title = $params.dataTitle;\r\n var $description = $params.dataDescription;\r\n var $link = $params.dataLink;\r\n var $type = $params.typeEventType;\r\n var $permanent = $params.periodicalEventPermanentCheckbox == 'on' ? 1 : 0;\r\n var $from = $params.periodicalEventFromDate;\r\n var $to = $params.periodicalEventToDate;\r\n var $period = $params.periodDate;\r\n var $include = null;\r\n var $days = null;\r\n var $allTimeDay = $params.hourAllDayCheckbox == 'on' ? 1 : 0;\r\n var $startAt = $params.hourSelectionFromHour;\r\n var $endAt = $params.hourSelectionToHour;\r\n var $notificationBeforeEvent = $params.notifyBeforeEventCheckbox == 'on' ? 1 : 0;\r\n var $notificationTime = null;\r\n var $notifyNotificationUnitTime = null;\r\n var $inviteUsersCheckbox = $params.inviteUsersCheckbox == 'on' ? 1 : 0;\r\n var $inviteUsersList = $params.inviteUsersList ? JSON.parse($params.inviteUsersList) : [];\r\n var $invitations = [];\r\n var $color = libs.rgb2hex($(\"input[name='settingsColor']\").css('backgroundColor'));\r\n var $available = $params.available == 'on' ? 1 : 0;\r\n switch($period){\r\n case 'weekly':{\r\n var $weeklyDate = $params.weeklyDate;\r\n $days = $params.weeklyDatesSelected;\r\n switch($weeklyDate){\r\n case 'weekly_every':{\r\n $include = 'every';\r\n break;\r\n }\r\n case 'weekly_except':{\r\n $include = 'except';\r\n break;\r\n }\r\n }\r\n break;\r\n }\r\n case 'monthly':{\r\n var $monthlyDate = $params.monthlyDate;\r\n $days = $params.monthlyDatesSelected;\r\n switch($monthlyDate){\r\n case 'monthly_every':{\r\n $include = 'every';\r\n break;\r\n }\r\n case 'monthly_except':{\r\n $include = 'except';\r\n break;\r\n }\r\n }\r\n break;\r\n }\r\n }\r\n if($notificationBeforeEvent == 1){\r\n $notificationTime = $params.notifyNotificationTimes;\r\n $notifyNotificationUnitTime = $params.notifyNotificationUnitTime;\r\n }\r\n if($inviteUsersCheckbox == 1){\r\n $.each($inviteUsersList, function($i, $v){\r\n $invitations.push($v.id);\r\n });\r\n }\r\n var $myCalendar = $(\"#nurseslounge-home-my-calendar\");\r\n var $timeZone = $myCalendar.find(\".time-zone\");\r\n var $area = $timeZone.data('area');\r\n var $event = {\r\n user_id:$userId,\r\n area:$area,\r\n title:$title,\r\n description:$description,\r\n link:$link,\r\n type:$type,\r\n permanent:$permanent,\r\n from:$from,\r\n to:$to,\r\n period:$period,\r\n include:$include,\r\n days:$days,\r\n all_time_day:$allTimeDay,\r\n start_at:$startAt,\r\n end_at:$endAt,\r\n notification_time:$notificationTime,\r\n notification_unit_time:$notifyNotificationUnitTime,\r\n color:$color,\r\n available:$available,\r\n invitations:$invitations.join(','),\r\n selected_date:nurseslounge_myDashboard_myCalendar.selectedDate.clone().format('DD-MM-YYYY')\r\n };\r\n nurseslounge_myDashboard_myCalendar.saveEvent($event);\r\n });\r\n nurseslounge_myDashboard_myCalendar.deleteEvent();\r\n $periodicalEventContainer.show();\r\n $periodContainer.show();\r\n },\r\n periodicalEventsValidator:function(cback){\r\n $.validator.addMethod(\"dateGreaterThanHourStart\", function($v, $ele, $params) {\r\n var $periodicalEventFromDate = $(\"#home-my-profile-calendar-events form .event_periodicalEvent_container input[name='periodicalEventFromDate']\").val();\r\n var $date = $periodicalEventFromDate+' '+$v;\r\n return $params != false ? moment($date, 'MM/DD/YYYY h:mm A') > moment($params, 'MM/DD/YYYY h:mm A') : true;\r\n },'Date must be greater than {0}.');\r\n $.validator.addMethod(\"dateGreaterThanHourEnd\", function($v, $ele, $params) {\r\n var $periodicalEventPermanentCheckbox = $('#home-my-profile-calendar-events form .event_periodicalEvent_container input[name=\"periodicalEventPermanentCheckbox\"]');\r\n var $date;\r\n if($periodicalEventPermanentCheckbox.is(':checked')){\r\n var $periodicalEventFromDate = $(\"#home-my-profile-calendar-events form .event_periodicalEvent_container input[name='periodicalEventFromDate']\").val();\r\n $date = $periodicalEventFromDate+' '+$v;\r\n }else{\r\n var $periodicalEventToDate = $(\"#home-my-profile-calendar-events form .event_periodicalEvent_container input[name='periodicalEventToDate']\").val();\r\n $date = $periodicalEventToDate+' '+$v;\r\n }\r\n return $params != false ? moment($date, 'MM/DD/YYYY h:mm A') > moment($params, 'MM/DD/YYYY h:mm A') : true;\r\n },'Date must be greater than {0}.');\r\n $.validator.addMethod(\"dateGreaterThanDay\", function($v, $ele, $params) {\r\n return $params;\r\n },'Date must be greater than {0}.');\r\n $.validator.addMethod(\"maxFourteen\", function($v, $ele, $params) {\r\n var $start = $params;\r\n var $end = moment($v, 'MM/DD/YYYY');\r\n var $duration = moment.duration($end.diff($start));\r\n var $days = $duration.asDays();\r\n return $days <= 14 ? true : false;\r\n },'Date must be greater than {0}.');\r\n var $validator;\r\n try {\r\n $validator = $(\"#home-my-profile-calendar-events form\").validate();\r\n $validator.destroy();\r\n }catch (e) {\r\n\r\n }\r\n var $typeEventType = $('#home-my-profile-calendar-events form .event_type_container select[name=\"typeEventType\"]');\r\n var $hourAllDayCheckbox = $('#home-my-profile-calendar-events form .event_hours_container input[name=\"hourAllDayCheckbox\"]');\r\n var $notifyBeforeEventCheckbox = $('#home-my-profile-calendar-events form .event_notify_container input[name=\"notifyBeforeEventCheckbox\"]');\r\n var $inviteUsersCheckbox = $('#home-my-profile-calendar-events form .event_inviteUsers_container input[name=\"inviteUsersCheckbox\"]');\r\n var $periodicalEventFromDate = $('#home-my-profile-calendar-events form .event_periodicalEvent_container input[name=\"periodicalEventFromDate\"]');\r\n var $periodicalEventToDate = $('#home-my-profile-calendar-events form .event_periodicalEvent_container input[name=\"periodicalEventToDate\"]');\r\n var $periodicalEventPermanentCheckbox = $('#home-my-profile-calendar-events form .event_periodicalEvent_container input[name=\"periodicalEventPermanentCheckbox\"]');\r\n var $periodDate = $('#home-my-profile-calendar-events form .event_period_container select[name=\"periodDate\"]');\r\n var $monthlyDatesSelectedArr = [];\r\n var $weeklyDatesSelectedArr = [];\r\n $validator = $(\"#home-my-profile-calendar-events form\").validate({\r\n onsubmit: true,\r\n debug: true,\r\n ignore: \"*:not(.validate)\",\r\n rules: {\r\n dataTitle: {\r\n required: true\r\n },\r\n dataDescription: {\r\n required: true,\r\n minlength: 1,\r\n maxlength: 200\r\n },\r\n dataLink: {\r\n required: false\r\n },\r\n typeEventType: {\r\n required: true,\r\n },\r\n periodicalEventFromDate: {\r\n required: function () {\r\n return $typeEventType.val() == 'periodical';\r\n }\r\n },\r\n periodicalEventToDate: {\r\n required: function () {\r\n return $typeEventType.val() == 'periodical';\r\n },\r\n dateGreaterThanDay:function () {\r\n var $nowDay = $periodicalEventFromDate.val();\r\n $nowDay = moment($nowDay, 'MM/DD/YYYY');\r\n $nowDay = $nowDay.subtract(1, 'day');\r\n var $toDate = $periodicalEventToDate.val();\r\n setTimeout(function(){\r\n var $newToDate = $periodicalEventToDate.val();\r\n if($toDate != $newToDate && !$periodicalEventPermanentCheckbox.is(':checked')){\r\n $periodicalEventToDate.blur();\r\n }\r\n },800);\r\n var $toDateMoment = moment($toDate, 'MM/DD/YYYY');\r\n return !$periodicalEventPermanentCheckbox.is(':checked') ? $toDateMoment > $nowDay : false;\r\n },\r\n maxFourteen:function () {\r\n var $nowDay = $periodicalEventFromDate.val();\r\n $nowDay = moment($nowDay, 'MM/DD/YYYY');\r\n return moment($nowDay, 'MM/DD/YYYY');\r\n }\r\n },\r\n monthlyDatesSelected:{\r\n required: function () {\r\n var $monthlyDatesSelected = $('#home-my-profile-calendar-events form .event_monthly_container input[name=\"monthlyDatesSelected\"]');\r\n var $monthlyDate = $('#home-my-profile-calendar-events form .event_monthly_container select[name=\"monthlyDate\"]');\r\n $monthlyDatesSelectedArr.length = 0;\r\n var $tableDatesSelected = $('#home-my-profile-calendar-events form .event_monthly_container_selection_table tr td .dates');\r\n $tableDatesSelected.each(function($i, $v){\r\n $monthlyDatesSelectedArr.push($(this).data('date'));\r\n });\r\n $monthlyDatesSelected.val($monthlyDatesSelectedArr.join(','));\r\n return $periodDate.val() == 'monthly' && $monthlyDate.val() != 'monthly_every_day';\r\n },\r\n },\r\n weeklyDatesSelected:{\r\n required: function () {\r\n var $weeklyDatesSelected = $('#home-my-profile-calendar-events form .event_weekly_container input[name=\"weeklyDatesSelected\"]');\r\n var $weeklyDate = $('#home-my-profile-calendar-events form .event_weekly_container select[name=\"weeklyDate\"]');\r\n $weeklyDatesSelectedArr.length = 0;\r\n var $tableDatesSelected = $('#home-my-profile-calendar-events form .event_weekly_container_selection .weekly_days');\r\n $tableDatesSelected.each(function($i, $v){\r\n var $that = $(this);\r\n if($that.is(':checked') == true){\r\n $weeklyDatesSelectedArr.push($that.data('value'));\r\n }\r\n });\r\n $weeklyDatesSelected.val($weeklyDatesSelectedArr.join(','));\r\n return $periodDate.val() == 'weekly' && $weeklyDate.val() != 'weekly_every_day';\r\n },\r\n },\r\n hourSelectionFromHour:{\r\n required: function () {\r\n return !$hourAllDayCheckbox.is(':checked');\r\n }\r\n },\r\n hourSelectionToHour:{\r\n required: function () {\r\n return !$hourAllDayCheckbox.is(':checked');\r\n },\r\n dateGreaterThanHourEnd:function(){\r\n var $periodicalEventFromDate = $(\"#home-my-profile-calendar-events form .event_periodicalEvent_container input[name='periodicalEventFromDate']\").val();\r\n var $hourSelectionFromHour = $(\"#home-my-profile-calendar-events form .event_hours_container input[name='hourSelectionFromHour']\").val();\r\n var $date = $periodicalEventFromDate+' '+$hourSelectionFromHour;\r\n return $typeEventType.val() == 'periodical' && !$hourAllDayCheckbox.is(':checked') ? moment($date, 'MM/DD/YYYY h:mm A') : false;\r\n }\r\n },\r\n notifyNotificationTimes:{\r\n required: function () {\r\n return !$notifyBeforeEventCheckbox.is(':checked');\r\n }\r\n },\r\n notifyNotificationUnitTime:{\r\n required: function () {\r\n return !$notifyBeforeEventCheckbox.is(':checked');\r\n }\r\n },\r\n inviteUsersList:{\r\n required: function () {\r\n return $inviteUsersCheckbox.is(':checked');\r\n }\r\n },\r\n },\r\n messages: {\r\n dataTitle: {\r\n required: \"The event title is required\",\r\n },\r\n dataDescription: {\r\n required: \"The event description is required\",\r\n minlength: \"The event description must have at least 1 characters\",\r\n maxlength: \"The event description cannot exceed 200 characters\"\r\n },\r\n dataLink: {\r\n required: \"The event link is not required\",\r\n },\r\n typeEventType: {\r\n required: \"The event type is required\"\r\n },\r\n periodicalEventFromDate: {\r\n required: \"The event from date is required\"\r\n },\r\n periodicalEventToDate: {\r\n required: \"The event to date is required\",\r\n dateGreaterThanDay:\"The event to date must be greater than from date\",\r\n maxFourteen:\"The maximum event length allowed is 14 days.\",\r\n },\r\n monthlyDatesSelected:{\r\n required: \"The event must have at least one day selected of the month\",\r\n },\r\n weeklyDatesSelected:{\r\n required: \"The event must have at least one day selected of the week\",\r\n },\r\n hourSelectionFromHour: {\r\n required: \"The event from hour is required\",\r\n },\r\n hourSelectionToHour: {\r\n required: \"The event to hour is required\",\r\n dateGreaterThanHourEnd:'The event to hour must be greater than from hour'\r\n },\r\n notifyNotificationTimes:{\r\n required: \"The time prev for notification is required\"\r\n },\r\n notifyNotificationUnitTime: {\r\n required: \"The unit time prev for notification is required\"\r\n },\r\n inviteUsersList: {\r\n required: \"The colleagues list is required\"\r\n }\r\n },\r\n errorPlacement: function($error, $element){\r\n var $ele = $($element);\r\n var $name = $ele.attr(\"name\");\r\n if(!$ele.hasClass('is-invalid')){\r\n $ele.addClass('is-invalid');\r\n }\r\n $(\".\"+$name+\"_validate\").html($($error).text()).show();\r\n },\r\n success: function($error, $element) {\r\n var $ele = $($element);\r\n var $name = $ele.attr(\"name\");\r\n if($ele.hasClass('is-invalid')){\r\n $ele.removeClass('is-invalid');\r\n }\r\n $(\".\"+$name+\"_validate\").html('').hide();\r\n },\r\n submitHandler: function($form) {\r\n cback($form);\r\n return false;\r\n }\r\n });\r\n },\r\n monthlyEvents:function(){\r\n var $modal = $(\"#home-my-profile-calendar-events\");\r\n var $monthlyContainer = $modal.find('.event_monthly_container');\r\n var $add = $monthlyContainer.find('.add');\r\n var $monthlyDate = $monthlyContainer.find('select[name=\"monthlyDate\"]');\r\n var $monthlyDates = $monthlyContainer.find('select[name=\"monthlyDates\"]');\r\n var $monthlyDatesSelected = $monthlyContainer.find('input[name=\"monthlyDatesSelected\"]');\r\n var $monthlyContainerSelection = $monthlyContainer.find('.event_monthly_container_selection');\r\n var $monthlyContainerSelectionTable = $monthlyContainer.find('.event_monthly_container_selection_table');\r\n var $firstTr = $monthlyContainerSelectionTable.children().first();\r\n var $everyTxt = 'Every day(s)Delete';\r\n var $exceptTxt = 'Except day(s)Delete';\r\n $add.unbind().click(function(){\r\n var $monthlyDatesVal = $monthlyDates.val();\r\n var $chtml = '';\r\n $chtml += '' +\r\n '' +\r\n ' '+$monthlyDatesVal+'' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n '';\r\n $monthlyContainerSelectionTable.children().first().after($chtml);\r\n });\r\n $monthlyDatesSelected = $monthlyDatesSelected.val() != '' ? $monthlyDatesSelected.val().split(',') : null;\r\n if($monthlyDatesSelected){\r\n $.each($monthlyDatesSelected, function($i, $v){\r\n var $chtml = '';\r\n $chtml += '' +\r\n '' +\r\n ' '+$v+'' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n '';\r\n $monthlyContainerSelectionTable.children().first().after($chtml);\r\n });\r\n }\r\n $monthlyDate.unbind().change(function(){\r\n var $that = $(this);\r\n $monthlyContainerSelection.hide();\r\n if($that.val() == 'monthly_every_day'){\r\n $monthlyContainerSelectionTable.html($monthlyContainerSelectionTable.children().first());\r\n $monthlyContainerSelection.hide();\r\n }else{\r\n if($that.val() == 'monthly_every') {\r\n $firstTr.html($everyTxt);\r\n }else{\r\n $firstTr.html($exceptTxt);\r\n }\r\n $monthlyContainerSelection.show();\r\n }\r\n });\r\n if($monthlyDate.val() == 'monthly_every_day'){\r\n $monthlyContainerSelectionTable.html($monthlyContainerSelectionTable.children().first());\r\n $monthlyContainerSelection.hide();\r\n }else{\r\n if($monthlyDate.val() == 'monthly_every') {\r\n $firstTr.html($everyTxt);\r\n }else{\r\n $firstTr.html($exceptTxt);\r\n }\r\n $monthlyContainerSelection.show();\r\n }\r\n $monthlyContainer.show();\r\n },\r\n weeklyEvents:function(){\r\n var $modal = $(\"#home-my-profile-calendar-events\");\r\n var $weeklyContainer = $modal.find('.event_weekly_container');\r\n var $weeklyDate = $modal.find('select[name=\"weeklyDate\"]');\r\n var $weeklyDays = $modal.find('.weekly_days');\r\n var $weeklyContainerSelection = $weeklyContainer.find('.event_weekly_container_selection');\r\n $weeklyDate.unbind().change(function(){\r\n var $that = $(this);\r\n if($that.val() == 'weekly_every_day'){\r\n $weeklyDays.prop('checked', false);\r\n $weeklyContainerSelection.hide();\r\n }else{\r\n $weeklyContainerSelection.show();\r\n }\r\n });\r\n if($weeklyDate.val() == 'weekly_every_day'){\r\n $weeklyDays.prop('checked', false);\r\n $weeklyContainerSelection.hide();\r\n }else{\r\n $weeklyContainerSelection.show();\r\n }\r\n $weeklyContainer.show();\r\n },\r\n mandatoryEvents:function(){\r\n var $now = moment();\r\n var $modal = $(\"#home-my-profile-calendar-events\");\r\n var $hoursContainer = $modal.find('.event_hours_container');\r\n var $hoursContainerSelection = $hoursContainer.find('.event_hours_container_selection');\r\n var $hourAllDayCheckbox = $modal.find('input[name=\"hourAllDayCheckbox\"]');\r\n var $hoursContainerFromHour = $(\"#event_hours_container_selection_from_hour\");\r\n var $hoursContainerToHour = $(\"#event_hours_container_selection_to_hour\");\r\n var $notifyContainer = $modal.find('.event_notify_container');\r\n var $notifyContainerSelection = $notifyContainer.find('.event_notify_container_selection');\r\n var $notifyBeforeEventCheckbox = $notifyContainer.find('input[name=\"notifyBeforeEventCheckbox\"]');\r\n var $inviteUsersContainer = $modal.find('.event_inviteUsers_container');\r\n var $inviteUsersContainerSelection = $inviteUsersContainer.find('.event_inviteUsers_container_selection');\r\n var $inviteUsersCheckbox = $inviteUsersContainer.find('input[name=\"inviteUsersCheckbox\"]');\r\n var $inviteUsersList = $inviteUsersContainer.find('input[name=\"inviteUsersList\"]');\r\n var $settingsContainer = $modal.find('.event_settings_container');\r\n var $settingsColor = $settingsContainer.find('input[name=\"settingsColor\"]');\r\n var $modalFooter = $modal.find('.modal-footer');\r\n $hourAllDayCheckbox.unbind().change(function(){\r\n var $that = $(this);\r\n if($that.is(':checked')){\r\n $hoursContainerSelection.hide();\r\n }else{\r\n var $fromHour = $hoursContainerFromHour.data('value') != '' ? moment($hoursContainerFromHour.data('value'), 'YYYY-MM-DD HH:mm:ss') : $now.clone();\r\n $hoursContainerFromHour.datetimepicker({\r\n defaultDate: $fromHour,\r\n format: 'LT',\r\n });\r\n var $toHour = $hoursContainerFromHour.data('value') != '' ? moment($hoursContainerToHour.data('value'), 'YYYY-MM-DD HH:mm:ss') : $now.clone().add(1,'hour');\r\n $hoursContainerToHour.datetimepicker({\r\n defaultDate: $toHour,\r\n format: 'LT'\r\n });\r\n $hoursContainerSelection.show();\r\n }\r\n });\r\n if($hourAllDayCheckbox.is(':checked')){\r\n $hoursContainerSelection.hide();\r\n }else{\r\n var $fromHour = $hoursContainerFromHour.data('value') != '' ? moment($hoursContainerFromHour.data('value'), 'YYYY-MM-DD HH:mm:ss') : $now.clone();\r\n $hoursContainerFromHour.datetimepicker({\r\n defaultDate: $fromHour,\r\n format: 'LT',\r\n });\r\n var $toHour = $hoursContainerFromHour.data('value') != '' ? moment($hoursContainerToHour.data('value'), 'YYYY-MM-DD HH:mm:ss') : $now.clone().add(1,'hour');\r\n $hoursContainerToHour.datetimepicker({\r\n defaultDate: $toHour,\r\n format: 'LT'\r\n });\r\n $hoursContainerSelection.show();\r\n }\r\n\r\n $notifyBeforeEventCheckbox.unbind().change(function(){\r\n var $that = $(this);\r\n if($that.is(':checked')){\r\n $notifyContainerSelection.show();\r\n }else{\r\n $notifyContainerSelection.hide();\r\n }\r\n });\r\n if($notifyBeforeEventCheckbox.is(':checked')){\r\n $notifyContainerSelection.show();\r\n }else{\r\n $notifyContainerSelection.hide();\r\n }\r\n\r\n $inviteUsersCheckbox.unbind().change(function(){\r\n var $that = $(this);\r\n if($that.is(':checked')){\r\n $inviteUsersContainerSelection.show();\r\n }else{\r\n $inviteUsersContainerSelection.hide();\r\n }\r\n });\r\n if($inviteUsersCheckbox.is(':checked')){\r\n $inviteUsersContainerSelection.show();\r\n }else{\r\n $inviteUsersContainerSelection.hide();\r\n }\r\n nurseslounge_myDashboard_myCalendar.colleaguesListAutocomplete($inviteUsersList);\r\n\r\n $settingsColor.paletteColorPicker({\r\n colors: [\r\n \"#00FF00\",\r\n \"#B03060\",\r\n \"#A020F0\",\r\n \"#C0C0C0\",\r\n \"#00FF00\",\r\n \"#FF00FF\",\r\n \"#00FFFF\",\r\n \"#808080\",\r\n \"#008000\",\r\n \"#7F0000\",\r\n \"#7F007F\",\r\n ],\r\n set_background: true,\r\n position: 'downside'\r\n });\r\n\r\n if($settingsColor.val() != ''){\r\n var $settingsColorBackground = $settingsContainer.find('div[data-target=\"settingsColor\"]');\r\n $settingsColorBackground.css('backgroundColor', $settingsColor.val());\r\n }\r\n\r\n $hoursContainer.show();\r\n $notifyContainer.show();\r\n $inviteUsersContainer.show();\r\n $settingsContainer.show();\r\n $modalFooter.show();\r\n },\r\n colleaguesListAutocomplete:function($element){\r\n if($element.length == 0){\r\n return false;\r\n }\r\n var $autocompleteBinding;\r\n var $addAllSuggestionsElm;\r\n try{\r\n var $colleaguesListAutocomplete = libs.memoryGet('myDashboard_myCalendar_colleagues_list_autocomplete');\r\n $colleaguesListAutocomplete.destroy();\r\n }catch (e) {\r\n\r\n }\r\n var $tagify = new Tagify($element[0], {\r\n tagTextProp: 'name',\r\n enforceWhitelist: true,\r\n skipInvalid: true,\r\n dropdown: {\r\n closeOnSelect: false,\r\n enabled: 0,\r\n classname: 'users-list',\r\n searchKeys: ['long_name', 'email']\r\n },\r\n whitelist: [],\r\n templates: {\r\n tag: function($tagData){\r\n return \"\" +\r\n \"\" +\r\n \"
    \" +\r\n \"
    \" +\r\n \" \" +\r\n \"
    \" +\r\n \" \"+$tagData.long_name+\"\" +\r\n \"
    \" +\r\n \"
    \";\r\n },\r\n dropdownItem: function($tagData){\r\n return \"
    \" +\r\n $tagData.profile_image_root_friend ?\r\n \"
    \" +\r\n \" $lastWeekOfTheMonth){\r\n $lastWeekOfTheMonth = $weeksInYear;\r\n $lastWeekOfTheMonth = $lastWeekOfTheMonth+1;\r\n $lessYear = 1;\r\n }\r\n for(var $w = $firstWeekOfTheMonth; $w<=($lastWeekOfTheMonth) ; $w++){\r\n var $startOfWeek = $momentDate.clone().week($w).startOf('week');\r\n var $days = [];\r\n for(var $d=0;$d<7;$d++){\r\n var $date = $startOfWeek.clone().subtract($lessYear, 'year').add($d, 'day');\r\n var $day = $date.format('DD');\r\n $day = libs.pad('00',$day,'l');\r\n var $properties = $data && $data.data && $data.data.weeks && $data.data.weeks[$w] && $data.data.weeks[$w][$day] ?\r\n $data.data.weeks[$w][$day] : [];\r\n $days.push([$day, $properties, $date]);\r\n }\r\n $weeks.push([$w, $days]);\r\n }\r\n return $weeks;\r\n },\r\n createCalendarMonth:function($momentDate, $data) {\r\n var $userId = libs.memoryGet('user_id');\r\n var $weeks = nurseslounge_myDashboard_myCalendar.getWeeks($momentDate, $data);\r\n var $month = $momentDate.clone().format('MM');\r\n var $myCalendar = $(\"#nurseslounge-home-my-calendar\");\r\n var $viewMonth = $myCalendar.find(\".view-month\");\r\n var $viewWeek = $myCalendar.find(\".view-week\");\r\n $viewWeek.hide();\r\n var $viewDay = $myCalendar.find(\".view-day\");\r\n $viewDay.hide();\r\n var $viewList = $myCalendar.find(\".view-list\");\r\n $viewList.hide();\r\n var $viewMonthThead = $viewMonth.find('.view-month-thead');\r\n var $viewMonthTbody = $viewMonth.find('.view-month-tbody');\r\n var $viewMonthTfoot = $viewMonth.find('.view-month-tfoot');\r\n var $weeksDaysMin = moment.weekdaysMin();\r\n var $chtml = '';\r\n $chtml += '';\r\n $.each($weeksDaysMin, function($i, $v){\r\n $chtml += ''+$v+'';\r\n });\r\n $chtml += '';\r\n $viewMonthThead.html($chtml);\r\n $chtml = '';\r\n var $titleContent = [];\r\n var $titleEventContent = [];\r\n //TODO::\r\n $.each($weeks, function($i, $v){\r\n var $w = $v[0] + 1;\r\n var $week = $v[1];\r\n $chtml += '' +\r\n '';\r\n $.each($week, function($i, $v) {\r\n var $day = $v[0];\r\n var $properties = $v[1];\r\n var $date = $v[2];\r\n var $bgSecondary = $date.format('MM') == $month ? '' : 'bg-secondary';\r\n var $textLight = $date.format('MM') == $month ? '' : 'text-light';\r\n var $isToday = $date.format('MM-DD') == moment().format('MM-DD') ? 'month-today': '';\r\n $chtml += '' +\r\n '' +\r\n ' '+$day+'' +\r\n '
    ';\r\n if($properties.eventsCount > 0){\r\n\r\n var $toolTipHtml = '' +\r\n ' ' +\r\n ' ' +\r\n ' Event' +\r\n ' Title' +\r\n ' Start At' +\r\n ' End At' +\r\n ' ';\r\n ' ';\r\n $.each($properties.events, function($i, $v){\r\n var $title = $v.title.length <= 15 ? $v.title : $v.title.substring(0, 15) + '...';\r\n var $startAt = moment($v.start_at, 'YYYY-MM-DD HH:mm:ss').format('h:mm A');\r\n var $endAt = moment($v.end_at, 'YYYY-MM-DD HH:mm:ss').format('h:mm A');\r\n if($v.period == 'consecutive' && $v.periodRanges.length > 0){\r\n $startAt = $v.periodRanges[$w][$day] ? moment($v.periodRanges[$w][$day].from_date.trace.date.date, 'YYYY-MM-DD HH:mm:ss').format('h:mm A') : $startAt;\r\n $endAt = $v.periodRanges[$w][$day] ? moment($v.periodRanges[$w][$day].to_date.trace.date.date, 'YYYY-MM-DD HH:mm:ss').format('h:mm A') : $endAt;\r\n }\r\n $toolTipHtml += '' +\r\n '' +\r\n ' ' +\r\n ' '+($i+1)+'' +\r\n ' '+$title+'' +\r\n ' '+$startAt+'' +\r\n ' '+$endAt+'' +\r\n ' ' +\r\n '';\r\n });\r\n $toolTipHtml += '';\r\n $toolTipHtml = $toolTipHtml.replace(/\"/g, \"\\\\'\");\r\n $titleContent.push([$w+'_'+$day, $toolTipHtml]);\r\n $chtml += '' +\r\n '
    events '+$properties.eventsCount+'
    ' +\r\n '
    ';\r\n\r\n $.each($properties.events, function($i, $v){\r\n var $toolTipEventHtml = '';\r\n var $key = $v.key;\r\n var $color = $v.color;\r\n $toolTipEventHtml+= nurseslounge_myDashboard_myCalendar.tableDescription($v);\r\n //$toolTipEventHtml = $toolTipEventHtml.replace(/\"/g, \"\\\\'\");\r\n $titleEventContent.push([$key, $toolTipEventHtml, $color]);\r\n $chtml += '' +\r\n '
    ';\r\n });\r\n $chtml += '' +\r\n '
    ';\r\n }\r\n $chtml += '' +\r\n '
    '+\r\n '';\r\n });\r\n $chtml += '' +\r\n '';\r\n });\r\n $viewMonthTbody.html($chtml).promise().done(function(){\r\n var $clickBinding;\r\n var $holdBinding;\r\n var $template = '' +\r\n '
    ' +\r\n '
    ' +\r\n '
    ';\r\n if(!libs.isMobile()){\r\n $viewMonthTbody.find('.with-tooltip-month-events').each(function () {\r\n var $that = $(this);\r\n $that.unbind();\r\n $that.tooltip({\r\n html: true,\r\n title:function(){\r\n var $wd = $(this).data('wd');\r\n var $text = '';\r\n $.each($titleContent, function($i, $v){\r\n if($wd == $v[0]){\r\n $text = $v[1];\r\n return false;\r\n }\r\n });\r\n return $text;\r\n },\r\n sanitize:false,\r\n trigger: 'hover',\r\n template:$template,\r\n placement:'top'\r\n });\r\n $that.click(function($e){\r\n clearTimeout($clickBinding);\r\n });\r\n });\r\n }\r\n $template = '' +\r\n '
    ' +\r\n '
    ' +\r\n '
    ';\r\n if(!libs.isMobile()){\r\n $viewMonthTbody.find('.with-tooltip-month-event').each(function () {\r\n var $that = $(this);\r\n $that.unbind();\r\n $that.tooltip({\r\n html: true,\r\n title:function(){\r\n var $key = $(this).data('key');\r\n var $text = '';\r\n var $color = '';\r\n $.each($titleEventContent, function($i, $v){\r\n if($key == $v[0]){\r\n $text = $v[1];\r\n $color = $v[2];\r\n return false;\r\n }\r\n });\r\n setTimeout(function(){\r\n $(\".tooltip-month-event .tooltip-inner .event-info-table .event-color\").css('color', $color+' !important');\r\n }, 1);\r\n return $text;\r\n },\r\n offset:0,\r\n sanitize:false,\r\n trigger: 'hover',\r\n template:$template,\r\n placement:'auto'\r\n });\r\n $that.click(function($e){\r\n clearTimeout($clickBinding);\r\n var $key = $that.data('key');\r\n nurseslounge_myDashboard_myCalendar.getEventModal({key:$key, user_id: $userId});\r\n });\r\n });\r\n }else{\r\n $viewMonthTbody.find('.with-tooltip-month-event').each(function(){\r\n var $key, $keyHelper;\r\n var $that = $(this);\r\n $that.unbind().on('mousedown touchstart', function($e){\r\n $key = $that.data('key');\r\n }).on('mouseup touchend', function ($e) {\r\n $keyHelper = $that.data('key');\r\n nurseslounge_myDashboard_myCalendar.getEventModal({key:$key, user_id: $userId});\r\n });\r\n });\r\n }\r\n //Add new event from the calendar month\r\n if(!libs.isMobile()) {\r\n var $from = '';\r\n var $to = '';\r\n var $allTimeDay = 1;\r\n var $available = 1;\r\n var $selection = false;\r\n $viewMonthTbody.find('tr td').unbind().on('mousedown touchstart', function ($e) {\r\n $e.stopPropagation();\r\n $e.preventDefault();\r\n var $that = $(this);\r\n $from = $that.data('date');\r\n $selection = true;\r\n $that.addClass('month-focus-selection');\r\n /*\r\n $holdBinding = setTimeout(function () {\r\n clearTimeout($clickBinding);\r\n nurseslounge_myDashboard_myCalendar.switchCalendarTo('week', $from);\r\n }, 800);\r\n */\r\n }).on('mousemove touchmove', function ($e) {\r\n $e.stopPropagation();\r\n $e.preventDefault();\r\n var $that = $(this);\r\n $to = $that.data('date');\r\n if ($selection && $to != undefined) {\r\n $viewMonthTbody.find('tr').each(function () {\r\n var $thatTR = $(this);\r\n $thatTR.find('td').each(function () {\r\n var $thatTD = $(this);\r\n if (\r\n moment($from, 'YYYY-MM-DD HH:mm:ss') <= moment($thatTD.data('date'), 'YYYY-MM-DD HH:mm:ss') &&\r\n moment($to, 'YYYY-MM-DD HH:mm:ss') >= moment($thatTD.data('date'), 'YYYY-MM-DD HH:mm:ss')) {\r\n $thatTD.addClass('month-focus-selection');\r\n } else {\r\n $thatTD.removeClass('month-focus-selection');\r\n }\r\n });\r\n });\r\n }\r\n }).on('mouseup touchend', function ($e) {\r\n $e.stopPropagation();\r\n $e.preventDefault();\r\n var $that = $(this);\r\n $to = $that.data('date');\r\n if ($selection) {\r\n $viewMonthTbody.find('.month-focus-selection').removeClass('month-focus-selection');\r\n $selection = false;\r\n $clickBinding = setTimeout(function () {\r\n nurseslounge_myDashboard_myCalendar.getEventModal({\r\n user_id: $userId,\r\n type: $from == $to ? 'one_time' : 'periodical',\r\n period: $from == $to ? 'consecutive' : 'no_consecutive',\r\n from: $from,\r\n to: $to,\r\n all_time_day: $allTimeDay,\r\n start_at: '',\r\n end_at: '',\r\n available: $available\r\n });\r\n }, 800);\r\n }\r\n //clearTimeout($holdBinding);\r\n });\r\n }else{\r\n /*\r\n $viewMonthTbody.find('tr td').unbind().on('mousedown touchstart', function ($e) {\r\n $e.stopPropagation();\r\n $e.preventDefault();\r\n var $that = $(this);\r\n $from = $that.data('date');\r\n $holdBinding = setTimeout(function () {\r\n nurseslounge_myDashboard_myCalendar.switchCalendarTo('week', $from);\r\n $viewMonthTbody.find('.with-tooltip-month-event').unbind('mouseup touchend');\r\n }, 800);\r\n }).on('mouseup touchend', function ($e) {\r\n clearTimeout($holdBinding);\r\n });\r\n */\r\n }\r\n });\r\n $viewMonth.show();\r\n },\r\n createCalendarWeek:function($momentDate, $data){\r\n var $userId = libs.memoryGet('user_id');\r\n var $weeks = nurseslounge_myDashboard_myCalendar.getWeeks($momentDate, $data);\r\n var $week = $momentDate.clone().week();\r\n var $day = $momentDate.clone().format('DD');\r\n $day = libs.pad('00',$day,'l');\r\n var $currentWeek = $weeks.filter(function($v){\r\n return $v[0] == $week;\r\n })[0];\r\n var $currentDay = $currentWeek[1].filter(function($v){\r\n return $v[0] == $day;\r\n })[0];\r\n var $myCalendar = $(\"#nurseslounge-home-my-calendar\");\r\n var $viewMonth = $myCalendar.find(\".view-month\");\r\n $viewMonth.hide();\r\n var $viewWeek = $myCalendar.find(\".view-week\");\r\n var $viewDay = $myCalendar.find(\".view-day\");\r\n $viewDay.hide();\r\n var $viewList = $myCalendar.find(\".view-list\");\r\n $viewList.hide();\r\n var $viewWeekThead = $viewWeek.find('.view-week-thead');\r\n var $viewWeekTbody = $viewWeek.find('.view-week-tbody');\r\n var $weeksDaysMin = moment.weekdaysMin();\r\n $weeksDaysMin.unshift('         ');\r\n var $chtml = '';\r\n $chtml += '';\r\n var $titleContent = [];\r\n var $titleEventContent = [];\r\n var $clickBinding;\r\n var $holdBinding;\r\n $.each($weeksDaysMin, function($i, $v){\r\n var $content = $v;\r\n var $properties = $i != 0 ? $currentWeek[1][$i - 1][1] : null;\r\n if($properties){\r\n var $w = $properties.trace.week.W;\r\n var $day = $properties.trace.day.d;\r\n var $toolTipHtml = '' +\r\n '' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ';\r\n ' ';\r\n $.each($properties.events, function($i, $v){\r\n var $title = $v.title.length <= 15 ? $v.title : $v.title.substring(0, 15) + '...';\r\n var $startAt = moment($v.start_at, 'YYYY-MM-DD HH:mm:ss').format('h:mm A');\r\n var $endAt = moment($v.end_at, 'YYYY-MM-DD HH:mm:ss').format('h:mm A');\r\n if($v.period == 'consecutive' && $v.periodRanges.length > 0){\r\n $startAt = $v.periodRanges[$w][$day] ? moment($v.periodRanges[$w][$day].from_date.trace.date.date, 'YYYY-MM-DD HH:mm:ss').format('h:mm A') : $startAt;\r\n $endAt = $v.periodRanges[$w][$day] ? moment($v.periodRanges[$w][$day].to_date.trace.date.date, 'YYYY-MM-DD HH:mm:ss').format('h:mm A') : $endAt;\r\n }\r\n $toolTipHtml += '' +\r\n '' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n '';\r\n });\r\n $toolTipHtml += '
    EventTitleStart AtEnd At
    '+($i+1)+''+$title+''+$startAt+''+$endAt+'
    ';\r\n $toolTipHtml = $toolTipHtml.replace(/\"/g, \"\\\\'\");\r\n $titleContent.push([$w+'_'+$day, $toolTipHtml]);\r\n }\r\n $chtml += '' +\r\n '' +\r\n '
    '+$content+'
    ';\r\n if($properties && $properties.eventsCount > 0) {\r\n $chtml += '
    events '+$properties.eventsCount+'
    ';\r\n }\r\n $chtml += '' +\r\n '';\r\n });\r\n $chtml += '';\r\n var $before = false;\r\n $.each($weeksDaysMin, function($i, $v){\r\n var $content = $i != 0 ? $currentWeek[1][$i - 1][0] : $v;\r\n var $class = 'before';\r\n if($before){\r\n $class = 'after';\r\n }\r\n $chtml += '' +\r\n '' +\r\n ' '+$content+'' +\r\n '';\r\n if($currentDay[0] == $content){\r\n $before = true;\r\n }\r\n });\r\n $chtml += '';\r\n $viewWeekThead.html($chtml).promise().done(function(){\r\n var $template = '' +\r\n '
    ' +\r\n '
    ' +\r\n '
    ';\r\n if(!libs.isMobile()){\r\n $viewWeekThead.find('.with-tooltip-week-events').each(function () {\r\n var $that = $(this);\r\n $that.unbind();\r\n $that.tooltip({\r\n html: true,\r\n title:function(){\r\n var $wd = $(this).data('wd');\r\n var $text = '';\r\n $.each($titleContent, function($i, $v){\r\n if($wd == $v[0]){\r\n $text = $v[1];\r\n return false;\r\n }\r\n });\r\n return $text;\r\n },\r\n sanitize:false,\r\n trigger: 'hover',\r\n template:$template,\r\n placement:'bottom'\r\n });\r\n $that.click(function($e){\r\n clearTimeout($clickBinding);\r\n });\r\n });\r\n }\r\n });\r\n $chtml = '';\r\n for(var $halfHour = 0; $halfHour < 48; $halfHour++){\r\n var $hours = Math.floor($halfHour/2);\r\n var $min = (($halfHour+1)%2) > 0 ? '00' : '30';\r\n var $time = moment($hours + ' ' +$min, 'HH mm');\r\n $chtml += '' +\r\n '' +\r\n ' ' +\r\n '
    ' +\r\n $time.clone().format('hh:mm a') +\r\n '
    ' +\r\n ' ';\r\n\r\n $.each($currentWeek[1], function($i, $v){\r\n var $now = moment();\r\n var $properties = $v[1];\r\n var $date = $v[2];\r\n var $dateHtml = $hours+' '+$min+' '+$date.format('DD MM YYYY');\r\n var $startOfDay = moment('00 00 00 '+$date.format('DD MM YYYY'), 'HH mm ss DD MM YYYY');\r\n var $endOfDay = moment('23 59 59 '+$date.format('DD MM YYYY'), 'HH mm ss DD MM YYYY');\r\n var $from = moment($dateHtml, 'HH mm DD MM YYYY');\r\n var $to = $from.clone().add(30, 'minutes');\r\n var $dayRange = moment().range($startOfDay, $endOfDay);\r\n var $isToday = $dayRange.contains($now) ? 'week-today': '';\r\n var $timeRange = moment().range($from, $to);\r\n var $isNow = $timeRange.contains($now) ? 'active': '';\r\n var $diffInMinutes = $now.diff($from, 'minutes');\r\n var $top = (parseInt($diffInMinutes)*2);\r\n $chtml += '' +\r\n ' '+\r\n '
    ';\r\n if($properties.eventsCount > 0){\r\n $.each($properties.events, function($i, $v){\r\n var $toolTipEventHtml = '';\r\n var $key = $v.key;\r\n var $color = $v.color;\r\n $toolTipEventHtml+= nurseslounge_myDashboard_myCalendar.tableDescription($v);\r\n //$toolTipEventHtml = $toolTipEventHtml.replace(/\"/g, \"\\\\'\");\r\n $titleEventContent.push([$key, $toolTipEventHtml, $color]);\r\n var $w = $properties.trace.week.W;\r\n var $day = $properties.trace.day.d;\r\n var $startAt = moment($v.start_at, 'YYYY-MM-DD HH:mm:ss');\r\n var $endAt = moment($v.end_at, 'YYYY-MM-DD HH:mm:ss');\r\n if($v.type == 'periodical'){\r\n if($v.period != 'consecutive' && $v.periodRanges.length > 0){\r\n $startAt = $v.periodRanges[$w][$day] ? moment($v.periodRanges[$w][$day].from_date.trace.date.date, 'YYYY-MM-DD HH:mm:ss') : $startAt;\r\n $endAt = $v.periodRanges[$w][$day] ? moment($v.periodRanges[$w][$day].to_date.trace.date.date, 'YYYY-MM-DD HH:mm:ss') : $endAt;\r\n }\r\n }\r\n var $range = moment().range($startAt, $endAt);\r\n if($range.contains($from)) {\r\n $chtml += '' +\r\n '
    ';\r\n }\r\n });\r\n }\r\n $chtml += '' +\r\n ' ';\r\n\r\n });\r\n $chtml += '' +\r\n '';\r\n }\r\n $viewWeekTbody.html($chtml).promise().done(function(){\r\n var $template = '' +\r\n '
    ' +\r\n '
    ' +\r\n '
    ';\r\n if(!libs.isMobile()){\r\n $viewWeekTbody.find('.with-tooltip-week-event').each(function () {\r\n var $that = $(this);\r\n $that.unbind();\r\n $that.tooltip({\r\n html: true,\r\n title:function(){\r\n var $key = $(this).data('key');\r\n var $text = '';\r\n var $color = '';\r\n $.each($titleEventContent, function($i, $v){\r\n if($key == $v[0]){\r\n $text = $v[1];\r\n $color = $v[2];\r\n return false;\r\n }\r\n });\r\n setTimeout(function(){\r\n $(\".tooltip-month-event .tooltip-inner .event-info-table .event-color\").css('color', $color+' !important');\r\n }, 1);\r\n return $text;\r\n },\r\n offset:0,\r\n sanitize:false,\r\n trigger: 'hover',\r\n template:$template,\r\n placement:'auto'\r\n });\r\n $that.click(function($e){\r\n clearTimeout($clickBinding);\r\n var $key = $that.data('key');\r\n nurseslounge_myDashboard_myCalendar.getEventModal({key:$key, user_id: $userId});\r\n });\r\n });\r\n }else{\r\n $viewWeekTbody.find('.with-tooltip-week-event').each(function () {\r\n var $key, $keyHelper;\r\n var $that = $(this);\r\n $that.unbind().on('mousedown touchstart', function($e){\r\n $key = $that.data('key');\r\n }).on('mouseup touchend', function ($e) {\r\n $keyHelper = $that.data('key');\r\n nurseslounge_myDashboard_myCalendar.getEventModal({key:$key, user_id: $userId});\r\n });\r\n });\r\n }\r\n //Add new event from the calendar week\r\n if(!libs.isMobile()) {\r\n var $from = '';\r\n var $to = '';\r\n var $available = 1;\r\n var $selection = false;\r\n var $dayHelper = [];\r\n var $senseY;\r\n var $senseX;\r\n var $sense;\r\n $viewWeekTbody.find('tr td').unbind().on('mousedown touchstart', function($e){\r\n $e.stopPropagation();\r\n $e.preventDefault();\r\n var $that = $(this);\r\n $dayHelper.length = 0;\r\n $from = $that.data('from');\r\n $to = $that.data('to');\r\n if($to != undefined) {\r\n $that.addClass('week-focus-selection');\r\n $dayHelper.push(moment($that.data('to'), 'YYYY-MM-DD HH:mm:ss'));\r\n $selection = true;\r\n $senseY = true;\r\n $senseX = true;\r\n }\r\n /*\r\n $holdBinding = setTimeout(function(){\r\n clearTimeout($clickBinding);\r\n nurseslounge_myDashboard_myCalendar.switchCalendarTo('day', $from);\r\n }, 800);\r\n */\r\n }).on('mousemove touchmove', function($e){\r\n $e.stopPropagation();\r\n $e.preventDefault();\r\n var $that = $(this);\r\n $to = $that.data('to');\r\n if($selection && $to != undefined){\r\n if($dayHelper.length >= 2){\r\n var $currentDay = $dayHelper[0].format('DD');\r\n var $toDay = moment($to, 'YYYY-MM-DD HH:mm:ss').format('DD');\r\n var $currentHour = $dayHelper[0].format('HH:mm:ss');\r\n var $toHour = moment($to, 'YYYY-MM-DD HH:mm:ss').format('HH:mm:ss');\r\n $sense = $dayHelper[0].format('DD') == $dayHelper[1].format('DD') ? 'y' : 'x';\r\n if($sense == 'y' && $senseY){\r\n $senseX = false;\r\n if(\r\n $currentDay == $toDay &&\r\n moment($currentHour, 'HH:mm:ss')\r\n <=\r\n moment($toHour, 'HH:mm:ss')\r\n ){\r\n $that.addClass('week-focus-selection');\r\n }\r\n $viewWeekTbody.find('.week-focus-selection').each(function(){\r\n var $toHourHelper = moment($(this).data('to'), 'YYYY-MM-DD HH:mm:ss').format('HH:mm:ss');\r\n if(\r\n moment($toHour, 'HH:mm:ss')\r\n <\r\n moment($toHourHelper, 'HH:mm:ss')\r\n ){\r\n $that.removeClass('week-focus-selection');\r\n }\r\n });\r\n }\r\n if($sense == 'x' && $senseX){\r\n $senseY = false;\r\n if(\r\n $currentHour == $toHour &&\r\n (parseInt($dayHelper[0].format('DDD')) * parseInt($dayHelper[0].format('YYYY')))\r\n <=\r\n (parseInt(moment($to, 'YYYY-MM-DD HH:mm:ss').format('DDD')) * parseInt(moment($to, 'YYYY-MM-DD HH:mm:ss').format('YYYY')))\r\n ){\r\n $that.addClass('week-focus-selection');\r\n }\r\n $viewWeekTbody.find('.week-focus-selection').each(function(){\r\n var $toDayHelper = parseInt(moment($(this).data('to'), 'YYYY-MM-DD HH:mm:ss').format('DDD')) * parseInt(moment($(this).data('to'), 'YYYY-MM-DD HH:mm:ss').format('YYYY'));\r\n if(\r\n (parseInt(moment($to, 'YYYY-MM-DD HH:mm:ss').format('DDD')) * parseInt(moment($to, 'YYYY-MM-DD HH:mm:ss').format('YYYY')))\r\n <\r\n $toDayHelper\r\n ){\r\n $that.removeClass('week-focus-selection');\r\n }\r\n });\r\n }\r\n }else{\r\n var $newDate = moment($to, 'YYYY-MM-DD HH:mm:ss');\r\n $.each($dayHelper, function($i, $v){\r\n if($v < $newDate){\r\n $dayHelper.push($newDate);\r\n $that.addClass('week-focus-selection');\r\n return false;\r\n }\r\n });\r\n }\r\n }\r\n }).on('mouseup touchend', function($e){\r\n $e.stopPropagation();\r\n $e.preventDefault();\r\n var $that = $(this);\r\n var $eventsOfDate = $that.data('from');\r\n $to = $that.data('to');\r\n if($selection){\r\n $dayHelper.length = 0;\r\n $viewWeekTbody.find('.week-focus-selection').removeClass('week-focus-selection');\r\n $selection = false;\r\n $clickBinding = setTimeout(function(){\r\n nurseslounge_myDashboard_myCalendar.getEventModal({\r\n user_id: $userId,\r\n type: $sense == 'y' ? 'one_time' : 'periodical',\r\n period: $sense == 'y' ? 'consecutive': 'no_consecutive',\r\n from: $from,\r\n to: $to,\r\n all_time_day:0,\r\n start_at: $from,\r\n end_at: $to,\r\n available:$available\r\n });\r\n }, 800);\r\n }\r\n //clearTimeout($holdBinding);\r\n });\r\n }else{\r\n /*\r\n $viewWeekTbody.find('tr td').unbind().on('mousedown touchstart', function ($e) {\r\n $e.stopPropagation();\r\n $e.preventDefault();\r\n var $that = $(this);\r\n $from = $that.data('from');\r\n $holdBinding = setTimeout(function () {\r\n nurseslounge_myDashboard_myCalendar.switchCalendarTo('day', $from);\r\n $viewWeekTbody.find('.with-tooltip-week-event').unbind('mouseup touchend');\r\n }, 800);\r\n }).on('mouseup touchend', function ($e) {\r\n clearTimeout($holdBinding);\r\n });\r\n */\r\n }\r\n });\r\n $viewWeek.show();\r\n },\r\n createCalendarDay:function($momentDate, $data){\r\n var $userId = libs.memoryGet('user_id');\r\n var $weeks = nurseslounge_myDashboard_myCalendar.getWeeks($momentDate, $data);\r\n var $week = $momentDate.clone().week();\r\n var $day = $momentDate.clone().format('DD');\r\n $day = libs.pad('00',$day,'l');\r\n var $currentWeek = $weeks.filter(function($v){\r\n return $v[0] == $week;\r\n })[0];\r\n var $currentDay = $currentWeek[1].filter(function($v){\r\n return $v[0] == $day;\r\n })[0];\r\n var $myCalendar = $(\"#nurseslounge-home-my-calendar\");\r\n var $viewMonth = $myCalendar.find(\".view-month\");\r\n $viewMonth.hide();\r\n var $viewWeek = $myCalendar.find(\".view-week\");\r\n $viewWeek.hide();\r\n var $viewDay = $myCalendar.find(\".view-day\");\r\n var $viewList = $myCalendar.find(\".view-list\");\r\n $viewList.hide();\r\n var $viewDayThead = $viewDay.find('.view-day-thead');\r\n var $viewDayTbody = $viewDay.find('.view-day-tbody');\r\n var $chtml = '';\r\n $chtml += '';\r\n var $titleContent = [];\r\n var $titleEventContent = [];\r\n var $clickBinding;\r\n var $holdBinding;\r\n for(var $i = 0; $i<=1 ; $i++) {\r\n var $content = $i == 0 ? '         ' : $currentDay[$i].trace.day.l + ' - ' + $currentDay[$i].trace.day.d;\r\n var $width = $i == 0 ? 'w-week' : 'w-100';\r\n var $properties = $i != 0 ? $currentDay[$i] : null;\r\n if ($properties) {\r\n var $w = $properties.trace.week.W;\r\n var $day = $properties.trace.day.d;\r\n var $toolTipHtml = '' +\r\n '' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ';\r\n ' ';\r\n $.each($properties.events, function ($i, $v) {\r\n var $title = $v.title.length <= 15 ? $v.title : $v.title.substring(0, 15) + '...';\r\n var $startAt = moment($v.start_at, 'YYYY-MM-DD HH:mm:ss').format('h:mm A');\r\n var $endAt = moment($v.end_at, 'YYYY-MM-DD HH:mm:ss').format('h:mm A');\r\n if ($v.period == 'consecutive' && $v.periodRanges.length > 0) {\r\n $startAt = $v.periodRanges[$w][$day] ? moment($v.periodRanges[$w][$day].from_date.trace.date.date, 'YYYY-MM-DD HH:mm:ss').format('h:mm A') : $startAt;\r\n $endAt = $v.periodRanges[$w][$day] ? moment($v.periodRanges[$w][$day].to_date.trace.date.date, 'YYYY-MM-DD HH:mm:ss').format('h:mm A') : $endAt;\r\n }\r\n $toolTipHtml += '' +\r\n '' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n '';\r\n });\r\n $toolTipHtml += '
    EventTitleStart AtEnd At
    ' + ($i + 1) + '' + $title + '' + $startAt + '' + $endAt + '
    ';\r\n $toolTipHtml = $toolTipHtml.replace(/\"/g, \"\\\\'\");\r\n $titleContent.push([$w + '_' + $day, $toolTipHtml]);\r\n }\r\n $chtml += '' +\r\n '' +\r\n '
    ' +\r\n ' ' + $content + '' +\r\n '
    ';\r\n if ($properties && $properties.eventsCount > 0) {\r\n $chtml += '
    events ' + $properties.eventsCount + '
    ';\r\n }\r\n $chtml += '';\r\n }\r\n $chtml += '';\r\n $viewDayThead.html($chtml).promise().done(function(){\r\n var $template = '' +\r\n '
    ' +\r\n '
    ' +\r\n '
    ';\r\n if(!libs.isMobile()){\r\n $viewDayThead.find('.with-tooltip-day-events').each(function () {\r\n var $that = $(this);\r\n $that.unbind();\r\n $that.tooltip({\r\n html: true,\r\n title:function(){\r\n var $wd = $(this).data('wd');\r\n var $text = '';\r\n $.each($titleContent, function($i, $v){\r\n if($wd == $v[0]){\r\n $text = $v[1];\r\n return false;\r\n }\r\n });\r\n return $text;\r\n },\r\n sanitize:false,\r\n trigger: 'hover',\r\n template:$template,\r\n placement:'bottom'\r\n });\r\n $that.click(function($e){\r\n clearTimeout($clickBinding);\r\n });\r\n });\r\n }\r\n });\r\n $chtml = '';\r\n for(var $halfHour = 0; $halfHour < 48; $halfHour++){\r\n var $hours = Math.floor($halfHour/2);\r\n var $min = (($halfHour+1)%2) > 0 ? '00' : '30';\r\n var $time = moment($hours + ' ' +$min, 'HH mm');\r\n $chtml += '' +\r\n '' +\r\n ' ' +\r\n '
    ' +\r\n $time.clone().format('hh:mm a') +\r\n '
    ' +\r\n ' ';\r\n\r\n var $now = moment();\r\n var $properties = $currentDay[1];\r\n var $date = $currentDay[2];\r\n var $dateHtml = $hours+' '+$min+' '+$date.format('DD MM YYYY');\r\n var $startOfDay = moment('00 00 00 '+$date.format('DD MM YYYY'), 'HH mm ss DD MM YYYY');\r\n var $endOfDay = moment('23 59 59 '+$date.format('DD MM YYYY'), 'HH mm ss DD MM YYYY');\r\n var $from = moment($dateHtml, 'HH mm DD MM YYYY');\r\n var $to = $from.clone().add(30, 'minutes');\r\n var $dayRange = moment().range($startOfDay, $endOfDay);\r\n var $isToday = $dayRange.contains($now) ? 'day-today': '';\r\n var $timeRange = moment().range($from, $to);\r\n var $isNow = $timeRange.contains($now) ? 'active': '';\r\n var $diffInMinutes = $now.diff($from, 'minutes');\r\n var $top = (parseInt($diffInMinutes)*2);\r\n $chtml += '' +\r\n ' '+\r\n '
    ';\r\n if($properties.eventsCount > 0){\r\n $.each($properties.events, function($i, $v){\r\n var $toolTipEventHtml = '';\r\n var $type = $v.type;\r\n var $by = '';\r\n switch($type){\r\n case 'one_time':\r\n $type = 'One time event';\r\n break;\r\n case 'periodical':\r\n $type = 'Periodical';\r\n break;\r\n case 'consecutive':\r\n $type = 'Consecutive';\r\n break;\r\n case 'no_consecutive':\r\n $type = 'No Consecutive';\r\n break;\r\n case 'weekly':\r\n $type = 'Weekly';\r\n break;\r\n case 'monthly':\r\n $type = 'Monthly';\r\n break;\r\n }\r\n if($v.owner_system == 1){\r\n $by = 'Nurses Lounge';\r\n }\r\n if($v.ownerUser && $v.ownerUser.email){\r\n $by = $v.ownerUser.long_name;\r\n }\r\n if($v.ownerLounge && $v.ownerLounge.name){\r\n $by = $v.ownerLounge.name;\r\n }\r\n var $title = $v.title;\r\n $title = $title.length > 20 ? $title.substring(0, 20) + '...' : $title;\r\n //var $name = $v.name;\r\n //$name = $name.length > 20 ? $name.substring(0, 20) + '...' : $name;\r\n //var $description = $v.description;\r\n //$description = $description.length > 30 ? $description.substring(0, 30) + '...' : $description;\r\n //var $image;\r\n //if($v.owner_system == 1){\r\n // $image = '/bimg/Login/small-logo.jpeg';\r\n //}\r\n //if($v.ownerUser && $v.ownerUser.email){\r\n // $image = $v.ownerUser.profile_image_root_friend+'?resize=65';\r\n //}\r\n //if($v.ownerLounge && $v.ownerLounge.name){\r\n // $image = $v.ownerLounge.logo_root_lounge+'?resize=65';\r\n //}\r\n var $key = $v.key;\r\n var $color = $v.color;\r\n $toolTipEventHtml+= nurseslounge_myDashboard_myCalendar.tableDescription($v);\r\n //$toolTipEventHtml = $toolTipEventHtml.replace(/\"/g, \"\\\\'\");\r\n $titleEventContent.push([$key, $toolTipEventHtml, $color]);\r\n var $w = $properties.trace.week.W;\r\n var $day = $properties.trace.day.d;\r\n var $startAt = moment($v.start_at, 'YYYY-MM-DD HH:mm:ss');\r\n var $endAt = moment($v.end_at, 'YYYY-MM-DD HH:mm:ss');\r\n if($v.type == 'periodical'){\r\n if($v.period != 'consecutive' && $v.periodRanges.length > 0){\r\n $startAt = $v.periodRanges[$w][$day] ? moment($v.periodRanges[$w][$day].from_date.trace.date.date, 'YYYY-MM-DD HH:mm:ss') : $startAt;\r\n $endAt = $v.periodRanges[$w][$day] ? moment($v.periodRanges[$w][$day].to_date.trace.date.date, 'YYYY-MM-DD HH:mm:ss') : $endAt;\r\n }\r\n }\r\n var $fontColor;\r\n switch($color.toUpperCase()){\r\n case '#00FF00':\r\n $fontColor = '#46565f';\r\n break;\r\n case '#B03060':\r\n $fontColor = '#cccccc';\r\n break;\r\n case '#A020F0':\r\n $fontColor = '#f1f1f1';\r\n break;\r\n case '#C0C0C0':\r\n $fontColor = '#000000';\r\n break;\r\n case '#FF00FF':\r\n $fontColor = '#ffffff';\r\n break;\r\n case '#00FFFF':\r\n $fontColor = '#46565f';\r\n break;\r\n case '#808080':\r\n $fontColor = '#f1f1f1';\r\n break;\r\n case '#008000':\r\n $fontColor = '#f1f1f1';\r\n break;\r\n case '#7F0000':\r\n $fontColor = '#f1f1f1';\r\n break;\r\n case '#7F007F':\r\n $fontColor = '#f1f1f1';\r\n break;\r\n }\r\n var $range = moment().range($startAt, $endAt);\r\n if($range.contains($from)) {\r\n $chtml += '' +\r\n '
    ' +\r\n //'
    ' +\r\n //' ' +\r\n //'
    ' +\r\n '
    ' +\r\n ' '+ $type + ' by ' + $by + ' - ' + $title + ' from ' + $v.start_at +' to ' + $v.end_at + ' ' +\r\n '
    ' +\r\n //'
    ' +\r\n //' '+$description+'' +\r\n //'
    ' +\r\n '
    ';\r\n }\r\n });\r\n }\r\n $chtml += '' +\r\n ' '+\r\n '';\r\n }\r\n $viewDayTbody.html($chtml).promise().done(function(){\r\n var $template = '' +\r\n '
    ' +\r\n '
    ' +\r\n '
    ';\r\n if(!libs.isMobile()){\r\n $viewDayTbody.find('.with-tooltip-day-event').each(function () {\r\n var $that = $(this);\r\n $that.unbind();\r\n $that.tooltip({\r\n html: true,\r\n title:function(){\r\n var $key = $(this).data('key');\r\n var $text = '';\r\n var $color = '';\r\n $.each($titleEventContent, function($i, $v){\r\n if($key == $v[0]){\r\n $text = $v[1];\r\n $color = $v[2];\r\n return false;\r\n }\r\n });\r\n setTimeout(function(){\r\n $(\".tooltip-month-event .tooltip-inner .event-info-table .event-color\").css('color', $color+' !important');\r\n }, 1);\r\n return $text;\r\n },\r\n offset:0,\r\n sanitize:false,\r\n trigger: 'hover',\r\n template:$template,\r\n placement:'auto'\r\n });\r\n $that.click(function($e){\r\n clearTimeout($clickBinding);\r\n var $key = $that.data('key');\r\n nurseslounge_myDashboard_myCalendar.getEventModal({key:$key, user_id: $userId});\r\n });\r\n });\r\n }else{\r\n $viewDayTbody.find('.with-tooltip-day-event').each(function(){\r\n var $key, $keyHelper;\r\n var $that = $(this);\r\n $that.unbind().on('mousedown touchstart', function($e){\r\n $key = $that.data('key');\r\n }).on('mouseup touchend', function ($e) {\r\n $keyHelper = $that.data('key');\r\n nurseslounge_myDashboard_myCalendar.getEventModal({key:$key, user_id: $userId});\r\n });\r\n });\r\n }\r\n //Add new event from the calendar day\r\n if(!libs.isMobile()){\r\n var $from = '';\r\n var $to = '';\r\n var $available = 1;\r\n var $selection = false;\r\n var $dayHelper = [];\r\n var $senseY;\r\n var $senseX;\r\n var $sense;\r\n $viewDayTbody.find('tr td').unbind().on('mousedown touchstart', function($e){\r\n $e.stopPropagation();\r\n $e.preventDefault();\r\n var $that = $(this);\r\n $dayHelper.length = 0;\r\n $from = $that.data('from');\r\n $to = $that.data('to');\r\n if($to != undefined) {\r\n $that.addClass('week-focus-selection');\r\n $dayHelper.push(moment($that.data('to'), 'YYYY-MM-DD HH:mm:ss'));\r\n $selection = true;\r\n $senseY = true;\r\n $senseX = true;\r\n }\r\n /*\r\n $holdBinding = setTimeout(function(){\r\n clearTimeout($clickBinding);\r\n nurseslounge_myDashboard_myCalendar.switchCalendarTo('list', $from);\r\n }, 800);\r\n */\r\n }).on('mousemove touchmove', function($e){\r\n $e.stopPropagation();\r\n $e.preventDefault();\r\n var $that = $(this);\r\n $to = $that.data('to');\r\n if($selection && $to != undefined){\r\n if($dayHelper.length >= 2){\r\n var $currentDay = $dayHelper[0].format('DD');\r\n var $toDay = moment($to, 'YYYY-MM-DD HH:mm:ss').format('DD');\r\n var $currentHour = $dayHelper[0].format('HH:mm:ss');\r\n var $toHour = moment($to, 'YYYY-MM-DD HH:mm:ss').format('HH:mm:ss');\r\n $sense = $dayHelper[0].format('DD') == $dayHelper[1].format('DD') ? 'y' : 'x';\r\n if($sense == 'y' && $senseY){\r\n $senseX = false;\r\n if(\r\n $currentDay == $toDay &&\r\n moment($currentHour, 'HH:mm:ss')\r\n <=\r\n moment($toHour, 'HH:mm:ss')\r\n ){\r\n $that.addClass('week-focus-selection');\r\n }\r\n $viewDayTbody.find('.week-focus-selection').each(function(){\r\n var $toHourHelper = moment($(this).data('to'), 'YYYY-MM-DD HH:mm:ss').format('HH:mm:ss');\r\n if(\r\n moment($toHour, 'HH:mm:ss')\r\n <\r\n moment($toHourHelper, 'HH:mm:ss')\r\n ){\r\n $that.removeClass('week-focus-selection');\r\n }\r\n });\r\n }\r\n }else{\r\n var $newDate = moment($to, 'YYYY-MM-DD HH:mm:ss');\r\n $.each($dayHelper, function($i, $v){\r\n if($v < $newDate){\r\n $dayHelper.push($newDate);\r\n $that.addClass('week-focus-selection');\r\n return false;\r\n }\r\n });\r\n }\r\n }\r\n }).on('mouseup touchend', function($e){\r\n $e.stopPropagation();\r\n $e.preventDefault();\r\n var $that = $(this);\r\n $to = $that.data('to');\r\n if($selection){\r\n $dayHelper.length = 0;\r\n $viewDayTbody.find('.week-focus-selection').removeClass('week-focus-selection');\r\n $selection = false;\r\n $clickBinding = setTimeout(function(){\r\n nurseslounge_myDashboard_myCalendar.getEventModal({\r\n user_id: $userId,\r\n type: 'one_time',\r\n period: 'consecutive',\r\n from: $from,\r\n to: $to,\r\n all_time_day:0,\r\n start_at: $from,\r\n end_at: $to,\r\n available:$available\r\n });\r\n }, 800);\r\n }\r\n //clearTimeout($holdBinding);\r\n });\r\n }else{\r\n /*\r\n $viewDayTbody.find('tr td').unbind().on('mousedown touchstart', function ($e) {\r\n $e.stopPropagation();\r\n $e.preventDefault();\r\n var $that = $(this);\r\n $from = $that.data('from');\r\n $holdBinding = setTimeout(function () {\r\n nurseslounge_myDashboard_myCalendar.switchCalendarTo('list', $from);\r\n $viewDayTbody.find('.with-tooltip-day-event').unbind('mouseup touchend');\r\n }, 800);\r\n }).on('mouseup touchend', function ($e) {\r\n clearTimeout($holdBinding);\r\n });\r\n */\r\n }\r\n });\r\n $viewDay.show();\r\n },\r\n switchCalendarTo:function($selectedView, $date){\r\n var $userId = libs.memoryGet('user_id');\r\n var $myCalendar = $(\"#nurseslounge-home-my-calendar\");\r\n var $timeZone = $myCalendar.find(\".time-zone\");\r\n var $area = $timeZone.data('area');\r\n var $params = $.extend({}, {user_id:$userId, area:$area});\r\n var $selectedDate = moment($date, 'YYYY-MM-DD HH:mm:ss');\r\n switch ($selectedView) {\r\n case 'month':{\r\n $params = $.extend({}, $params, {month:$selectedDate.clone().startOf('month').format('DD-MM-YYYY')});\r\n break;\r\n }\r\n case 'week':{\r\n $params = $.extend({}, $params, {week:$selectedDate.clone().startOf('week').format('DD-MM-YYYY')});\r\n break;\r\n }\r\n case 'day':{\r\n $params = $.extend({}, $params, {week:$selectedDate.clone().startOf('week').format('DD-MM-YYYY')});\r\n break;\r\n }\r\n case 'list':{\r\n $params = $.extend({}, $params, {week:$selectedDate.clone().startOf('week').format('DD-MM-YYYY')});\r\n break;\r\n }\r\n }\r\n nurseslounge_myDashboard_myCalendar.get($params, function($data){\r\n nurseslounge_myDashboard_myCalendar.createCalendar($selectedView, $selectedDate.clone(), $data);\r\n });\r\n nurseslounge_myDashboard_myCalendar.selectedView = $selectedView;\r\n },\r\n tableDescription:function($v){\r\n var $title = $v.title;\r\n var $description = $v.description;\r\n var $link = $v.link ? 'Yes' : 'No';\r\n var $allTimeDay = $v.all_time_day === 1;\r\n var $fromDay = moment($v.from, 'YYYY-MM-DD HH:mm:ss').format('MM/DD/YYYY');\r\n var $toDay = moment($v.to, 'YYYY-MM-DD HH:mm:ss').format('MM/DD/YYYY');\r\n var $fromHour = moment($v.start_at, 'YYYY-MM-DD HH:mm:ss').format('h:mm A');\r\n var $toHour = moment($v.end_at, 'YYYY-MM-DD HH:mm:ss').format('h:mm A');\r\n var $include = $v.include;\r\n $include = $include ? $include.charAt(0).toUpperCase() + $include.slice(1) : null;\r\n var $days = $v.days;\r\n $days = $days ? $days.split(',').join(', ') : '';\r\n\r\n var $chtml = '' +\r\n '
    ' +\r\n '
    ';\r\n\r\n /*Top Window Init*/\r\n $chtml +='' +\r\n '
    ';\r\n if($v.owner_system == 1){\r\n $chtml +='' +\r\n '
    ' +\r\n ' ' +\r\n '
    ' +\r\n '
    ' +\r\n '

    Nurses Lounge

    ' +\r\n '
    ';\r\n }\r\n if($v.ownerUser && $v.ownerUser.email){\r\n $chtml +='' +\r\n '
    ' +\r\n ' ' +\r\n '
    ' +\r\n '
    ' +\r\n '

    '+$v.ownerUser.long_name+'

    ' +\r\n //'

    '+$v.ownerUser.email+'

    ' +\r\n '
    '+$v.ownerUser.profile.profile+'
    ' +\r\n '
    ';\r\n }\r\n if($v.ownerLounge && $v.ownerLounge.name){\r\n $chtml +='' +\r\n '
    ' +\r\n ' ' +\r\n '
    ' +\r\n '
    ' +\r\n '

    '+$v.ownerLounge.name+'

    ' +\r\n '
    '+$v.ownerLounge.lounge_type.type+'
    ' +\r\n '
    ';\r\n }\r\n $chtml += '' +\r\n '
    ' +\r\n '
    ' +\r\n '
    ';\r\n /*Top Window End*/\r\n /*Top Window Table Init*/\r\n $chtml+= '' +\r\n '' +\r\n '';\r\n\r\n $chtml+= '' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ';\r\n if($v.type == 'one_time'){\r\n $chtml+= '' +\r\n //' ' +\r\n //' ' +\r\n //' ' +\r\n //' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ';\r\n if($allTimeDay){\r\n $chtml+= '' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ';\r\n }else{\r\n $chtml+= '' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ';\r\n }\r\n }\r\n if($v.type == 'periodical'){\r\n //$chtml+= '' +\r\n // ' ' +\r\n // ' ' +\r\n // ' ' +\r\n // ' ';\r\n if($v.period == 'consecutive'){\r\n $chtml+= '' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ';\r\n if($allTimeDay){\r\n $chtml+= '' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' '+\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ';\r\n }else{\r\n $chtml+= '' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ';\r\n }\r\n }\r\n if($v.period == 'no_consecutive'){\r\n $chtml+= '' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ';\r\n if($allTimeDay){\r\n $chtml+= '' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ';\r\n }else{\r\n $chtml+= '' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ';\r\n }\r\n }\r\n if($v.period == 'weekly'){\r\n $chtml+= '' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ';\r\n if($allTimeDay){\r\n $chtml+= '' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ';\r\n }else{\r\n $chtml+= '' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ';\r\n }\r\n }\r\n if($v.period == 'monthly'){\r\n $chtml+= '' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ';\r\n if($allTimeDay){\r\n $chtml+= '' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ';\r\n }else{\r\n $chtml+= '' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ';\r\n }\r\n }\r\n }\r\n $chtml+= '' +\r\n ''+\r\n '
    Title'+$title+'
    Description'+$description+'
    Link'+$link+'
    Event TypeOne time event
    Event Day'+$fromDay+'
    ScheduleAll Day
    Schedule'+$fromHour+' to '+$toHour+'
    Event TypePeriodical
    PeriodConsecutive
    Duration'+$fromDay+' to '+$toDay+'
    ScheduleAll Day
    Duration'+$fromDay+' '+$fromHour+'\\n to \\n'+$toDay+' '+$toHour+'
    PeriodNo Consecutive
    Duration'+$fromDay+' to '+$toDay+'
    ScheduleAll Day
    Duration'+$fromDay+' to '+$toDay+'
    Schedule'+$fromHour+' to '+$toHour+'
    PeriodWeekly
    Duration'+$fromDay+' to '+$toDay+'
    ScheduleAll Day
    '+$include+''+$days+'
    Duration'+$fromDay+' to '+$toDay+'
    Schedule'+$fromHour+' to '+$toHour+'
    '+$include+''+$days+'
    PeriodMonthly
    Duration'+$fromDay+' to '+$toDay+'
    ScheduleAll Day
    '+$include+' day(s)'+$days+'
    Duration'+$fromDay+' to '+$toDay+'
    Schedule'+$fromHour+' to '+$toHour+'
    '+$include+' day(s)'+$days+'
    ' +\r\n '
    ' +\r\n '
    ';\r\n return $chtml;\r\n },\r\n getEvents:function($momentDate, $data){\r\n var $events = [];\r\n var $weeks = nurseslounge_lounge_calendar.getWeeks($momentDate, $data);\r\n var $week = $momentDate.clone().week();\r\n var $day = $momentDate.clone().format('DD');\r\n $day = libs.pad('00',$day,'l');\r\n var $currentWeek = $weeks.filter(function($v){\r\n return $v[0] == $week;\r\n })[0];\r\n var $_w = $currentWeek[0];\r\n var $currentDay = $currentWeek[1].filter(function($v){\r\n return $v[0] == $day;\r\n })[0];\r\n var $_day = $currentDay[0];\r\n var $properties = $currentDay[1];\r\n var $from = $currentDay[2];\r\n var $to = moment($from.format('DD-MM-YYYY') + ' 23:59:59', 'DD-MM-YYYY HH:mm:ss');\r\n $.each($properties.events, function($i, $v){\r\n var $startAt = moment($v.start_at, 'YYYY-MM-DD HH:mm:ss');\r\n var $endAt = moment($v.end_at, 'YYYY-MM-DD HH:mm:ss');\r\n if($v.type == 'periodical'){\r\n if($v.period != 'consecutive' && $v.periodRanges.length > 0){\r\n $startAt = $v.periodRanges[$_w][$_day] ? moment($v.periodRanges[$_w][$_day].from_date.trace.date.date, 'YYYY-MM-DD HH:mm:ss') : $startAt;\r\n $endAt = $v.periodRanges[$_w][$_day] ? moment($v.periodRanges[$_w][$_day].to_date.trace.date.date, 'YYYY-MM-DD HH:mm:ss') : $endAt;\r\n }\r\n }\r\n var $range = moment().range($from, $to);\r\n var $_from = moment($v.from, 'YYYY-MM-DD HH:mm:ss');\r\n if($range.contains($_from)) {\r\n var $unix = $startAt.clone().format('X');\r\n if($events[$unix] == undefined){\r\n $events[$unix] = [];\r\n }\r\n $events[$unix].push($v);\r\n }\r\n });\r\n return [$events, $currentDay];\r\n },\r\n tableBorderCSS:function($classBorder){\r\n $classBorder == undefined ? 1 : $classBorder;\r\n var $myCalendar = $(\"#nurseslounge-home-my-calendar\");\r\n var $calendarTable = $myCalendar.find(\".view-list .calendar.table:first\");\r\n var $viewListThead = $calendarTable.find('.view-list-thead');\r\n if($calendarTable.hasClass('border')){\r\n if($classBorder == 0){\r\n $calendarTable.removeClass('border');\r\n }\r\n }\r\n if($viewListThead.hasClass('border')){\r\n if($classBorder == 0) {\r\n $viewListThead.removeClass('border');\r\n }\r\n }\r\n },\r\n createCalendarList:function($momentDate, $data){\r\n var $userId = libs.memoryGet('user_id');\r\n nurseslounge_myDashboard_myCalendar.tableBorderCSS(0);\r\n var $getEvents = nurseslounge_myDashboard_myCalendar.getEvents($momentDate, $data);\r\n var $events = $getEvents[0];\r\n var $currentDay = $getEvents[1];\r\n var $myCalendar = $(\"#nurseslounge-home-my-calendar\");\r\n var $calendar = $myCalendar.find(\".calendar:first\");\r\n var $viewMonth = $myCalendar.find(\".view-month\");\r\n $viewMonth.hide();\r\n var $viewWeek = $myCalendar.find(\".view-week\");\r\n $viewWeek.hide();\r\n var $viewDay = $myCalendar.find(\".view-day\");\r\n $viewDay.hide();\r\n var $viewList = $myCalendar.find(\".view-list\");\r\n var $viewListThead = $viewList.find('.view-list-thead');\r\n var $viewListTbody = $viewList.find('.view-list-tbody');\r\n var $chtml = '';\r\n $chtml += '' +\r\n '' +\r\n ' ' +\r\n ' ' +\r\n $currentDay[1].trace.day.l + ' - ' + $currentDay[1].trace.day.d +\r\n ' ' +\r\n ' ' +\r\n '';\r\n $viewListThead.html($chtml);\r\n $chtml = '';\r\n var $carousel = [];\r\n var $newEvents = 0;\r\n var $oldEvents = 0;\r\n var $isTheNext = false;\r\n for(var $time in $events){\r\n $carousel.push($time);\r\n var $list = $events[$time];\r\n var $currentEvent = moment($time, 'X');\r\n var $now = moment();\r\n var $new = $currentEvent > $now;\r\n if($new){\r\n $isTheNext = $isTheNext == false ? true : false;\r\n var $timelineActive = '';\r\n if($isTheNext){\r\n $timelineActive = 'timeline active';\r\n }\r\n $newEvents++;\r\n $chtml += '' +\r\n '
    ' +\r\n '
    ' +\r\n '
    ';\r\n }else{\r\n $oldEvents++;\r\n $chtml += '' +\r\n '
    ' +\r\n '
    ' +\r\n '
    ';\r\n }\r\n //Carousel\r\n $chtml += '' +\r\n '
    ' +\r\n '
    ';\r\n $.each($list, function($i, $v){\r\n var $listDescription = nurseslounge_myDashboard_myCalendar.listDescription($v);\r\n var $key = $v.key;\r\n var $active = $i == 0 ? 'active' : '';\r\n $chtml += '' +\r\n '
    ' +\r\n $listDescription +\r\n '
    ';\r\n });\r\n $chtml += '
    ';\r\n if($list.length > 1){\r\n $chtml += '' +\r\n ' ' +\r\n ' ' +\r\n ' Previous' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' Next' +\r\n ' ';\r\n }\r\n $chtml += '
    ';\r\n //Carousel end\r\n $chtml += '
    ' +\r\n '
    ';\r\n if($new) {\r\n $chtml += '' +\r\n '
    ' +\r\n '
    ' +\r\n '
    ';\r\n $.each($list, function($i, $v) {\r\n var $key = $v.key;\r\n var $image;\r\n var $display = $i == 0 ? '' : 'none';\r\n if($v.owner_system == 1){\r\n $image = '/bimg/Login/small-logo.jpeg';\r\n }\r\n if($v.ownerUser && $v.ownerUser.email){\r\n $image = $v.ownerUser.profile_image_root_friend+'?resize=65';\r\n }\r\n if($v.ownerLounge && $v.ownerLounge.name){\r\n $image = $v.ownerLounge.logo_root_lounge+'?resize=65';\r\n }\r\n $chtml += '' +\r\n ' ';\r\n });\r\n $chtml += '' +\r\n '
    ' +\r\n '
    ';\r\n }else{\r\n $chtml += '' +\r\n '
    ' +\r\n '
    ' +\r\n '
    ';\r\n $.each($list, function($i, $v) {\r\n var $key = $v.key;\r\n var $image;\r\n var $display = $i == 0 ? '' : 'none';\r\n if($v.owner_system == 1){\r\n $image = '/bimg/Login/small-logo.jpeg';\r\n }\r\n if($v.ownerUser && $v.ownerUser.email){\r\n $image = $v.ownerUser.profile_image_root_friend+'?resize=65';\r\n }\r\n if($v.ownerLounge && $v.ownerLounge.name){\r\n $image = $v.ownerLounge.logo_root_lounge+'?resize=65';\r\n }\r\n $chtml += '' +\r\n ' ';\r\n });\r\n $chtml += '' +\r\n '
    ' +\r\n '
    ';\r\n }\r\n }\r\n $viewListTbody.html($chtml).promise().done(function(){\r\n var $calendar = $(\"#nurseslounge-home-my-calendar\");\r\n $.each($carousel, function($i, $v){\r\n $('#carousel_'+$v).on('slide.bs.carousel', function ($ev) {\r\n var $active = $($ev.relatedTarget);\r\n var $carousel = $active.data('carousel');\r\n var $key = $active.data('key');\r\n $(\".view-list-tbody-img img[data-carousel='\"+$carousel+\"']\").hide();\r\n $(\".view-list-tbody-img img[data-key='\"+$key+\"']\").fadeIn();\r\n }).carousel({\r\n interval: 6000,\r\n ride:true\r\n });\r\n });\r\n $calendar.find(\".view-list-tbody-img img\").unbind().click(function(){\r\n var $that = $(this);\r\n var $key = $that.data('key');\r\n nurseslounge_myDashboard_myCalendar.getEventModal({key:$key, user_id: $userId});\r\n });\r\n $calendar.find(\".carousel-item\").unbind().click(function(){\r\n var $that = $(this);\r\n var $key = $that.data('key');\r\n nurseslounge_myDashboard_myCalendar.getEventModal({key:$key, user_id: $userId});\r\n });\r\n libs.checkImageLoad($($chtml).find('img'), function(){\r\n $viewList.show();\r\n //var $top = $viewListThead.offset().top - $calendar.offset().top + $viewListThead.height();\r\n //var $height = $viewListTbody.height() - 10;\r\n //$('style[data=\"nurseslounge-home-my-calendar\"]').remove();\r\n //$('').appendTo('head');\r\n nurseslounge_myDashboard_myCalendar.createCalendarListClock($newEvents, $oldEvents);\r\n });\r\n });\r\n },\r\n listDescription:function($v){\r\n var $allTimeDay = $v.all_time_day === 1;\r\n var $fromDay = moment($v.from, 'YYYY-MM-DD HH:mm:ss').format('MM/DD/YYYY');\r\n var $toDay = moment($v.to, 'YYYY-MM-DD HH:mm:ss').format('MM/DD/YYYY');\r\n var $fromHour = moment($v.start_at, 'YYYY-MM-DD HH:mm:ss').format('h:mm A');\r\n var $toHour = moment($v.end_at, 'YYYY-MM-DD HH:mm:ss').format('h:mm A');\r\n var $include = $v.include;\r\n $include = $include ? $include.charAt(0).toUpperCase() + $include.slice(1) : null;\r\n var $days = $v.days;\r\n $days = $days ? $days.split(',').join(', ') : '';\r\n var $color = $v.color;\r\n var $chtml = '' +\r\n '
    ' +\r\n '
    ';\r\n\r\n if($v.owner_system == 1){\r\n $chtml +='' +\r\n '

    Nurses Lounge

    ';\r\n }\r\n if($v.ownerUser && $v.ownerUser.email){\r\n $chtml +='' +\r\n '

    '+$v.ownerUser.long_name+'

    ' +\r\n '
    '+$v.ownerUser.profile.profile+'
    ';\r\n }\r\n if($v.ownerLounge && $v.ownerLounge.name){\r\n $chtml +='' +\r\n '

    '+$v.ownerLounge.name+'

    ' +\r\n '
    '+$v.ownerLounge.lounge_type.type+'
    ';\r\n }\r\n\r\n $chtml +='' +\r\n '
    ' +\r\n '
    '+\r\n ' ' +\r\n ' ';\r\n if($v.type == 'one_time'){\r\n $chtml+= '' +\r\n //' ' +\r\n //' ' +\r\n //' ' +\r\n //' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ';\r\n if($allTimeDay){\r\n $chtml+= '' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ';\r\n }else{\r\n $chtml+= '' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ';\r\n }\r\n }\r\n if($v.type == 'periodical'){\r\n //$chtml+= '' +\r\n //' ' +\r\n //' ' +\r\n //' ' +\r\n //' ';\r\n if($v.period == 'consecutive'){\r\n $chtml+= '' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ';\r\n if($allTimeDay){\r\n $chtml+= '' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' '+\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ';\r\n }else{\r\n $chtml+= '' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ';\r\n }\r\n }\r\n if($v.period == 'no_consecutive'){\r\n $chtml+= '' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ';\r\n if($allTimeDay){\r\n $chtml+= '' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ';\r\n }else{\r\n $chtml+= '' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ';\r\n }\r\n }\r\n if($v.period == 'weekly'){\r\n $chtml+= '' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ';\r\n if($allTimeDay){\r\n $chtml+= '' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ';\r\n }else{\r\n $chtml+= '' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ';\r\n }\r\n }\r\n if($v.period == 'monthly'){\r\n $chtml+= '' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ';\r\n if($allTimeDay){\r\n $chtml+= '' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ';\r\n }else{\r\n $chtml+= '' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ';\r\n }\r\n }\r\n }\r\n $chtml+= '' +\r\n ' '+\r\n '
    Event TypeOne time event
    Event Day'+$fromDay+'
    ScheduleAll Day
    Schedule'+$fromHour+' to '+$toHour+'
    Event TypePeriodical
    PeriodConsecutive
    Duration'+$fromDay+' to '+$toDay+'
    ScheduleAll Day
    Duration'+$fromDay+' '+$fromHour+'\\n to \\n'+$toDay+' '+$toHour+'
    PeriodNo Consecutive
    Duration'+$fromDay+' to '+$toDay+'
    ScheduleAll Day
    Duration'+$fromDay+' to '+$toDay+'
    Schedule'+$fromHour+' to '+$toHour+'
    PeriodWeekly
    Duration'+$fromDay+' to '+$toDay+'
    ScheduleAll Day
    '+$include+''+$days+'
    Duration'+$fromDay+' to '+$toDay+'
    Schedule'+$fromHour+' to '+$toHour+'
    '+$include+''+$days+'
    PeriodMonthly
    Duration'+$fromDay+' to '+$toDay+'
    ScheduleAll Day
    '+$include+' day(s)'+$days+'
    Duration'+$fromDay+' to '+$toDay+'
    Schedule'+$fromHour+' to '+$toHour+'
    '+$include+' day(s)'+$days+'
    ' +\r\n '
    ' +\r\n '
    ';\r\n return $chtml;\r\n },\r\n createCalendarListClock:function($newEvents, $oldEvents){\r\n var $userId = libs.memoryGet('user_id');\r\n var $calendarClockBinding = libs.memoryGet('myDashboard_myCalendar_calendar_clock_binding') ? libs.memoryGet('myDashboard_myCalendar_calendar_clock_binding') : null;\r\n var $now = moment();\r\n var $myCalendar = $(\"#nurseslounge-home-my-calendar\");\r\n var $viewList = $myCalendar.find(\".view-list\");\r\n var $viewListTbody = $viewList.find('.view-list-tbody');\r\n var $news = 0;\r\n var $olds = 0;\r\n $viewListTbody.find('.clock').each(function($i, $v){\r\n var $dateString = [];\r\n var $that = $(this);\r\n var $startat = $that.data('startat');\r\n var $date = moment.unix($startat);\r\n var $sense = $date.clone().diff($now, 'seconds') > 0;\r\n var $diffSeconds = $sense ? $date.clone().diff($now, 'seconds') : $now.clone().diff($date, 'seconds');\r\n var $diffMinutes = $sense ? $date.clone().diff($now, 'minutes') : $now.clone().diff($date, 'minutes');\r\n var $diffHours = $sense ? $date.clone().diff($now, 'hours') : $now.clone().diff($date, 'hours');\r\n var $diffDays = $sense ? $date.clone().diff($now, 'days') : $now.clone().diff($date, 'days');\r\n var $diffMonths = $sense ? $date.clone().diff($now, 'months') : $now.clone().diff($date, 'months');\r\n var $diffYears = $sense ? $date.clone().diff($now, 'years') : $now.clone().diff($date, 'years');\r\n var $years = parseInt($diffYears);\r\n var $monthsHelper = $sense ? $date.clone().subtract($diffYears, 'years') : $date.clone().add($diffYears, 'years');\r\n var $months = $now.clone().diff($monthsHelper, 'months');\r\n $months = parseInt($months);\r\n $months = $months > 0 ? $months : (-1 * $months);\r\n $months = $months > 0 ? $months == 1 ? $months+' month' : $months+' months' : '';\r\n $dateString.push($months);\r\n var $daysHelper = $sense ? $date.clone().subtract($diffMonths, 'months') : $date.clone().add($diffMonths, 'months');\r\n var $days = $now.clone().diff($daysHelper, 'days');\r\n $days = parseInt($days);\r\n $days = $days > 0 ? $days : (-1 * $days);\r\n $days = $days > 0 ? $days == 1 ? $days+' day' : $days+' days' : '';\r\n $dateString.push($days);\r\n var $hoursHelper = $sense ? $date.clone().subtract($diffDays, 'days') : $date.clone().add($diffDays, 'days');\r\n var $hours = $now.clone().diff($hoursHelper, 'hours');\r\n $hours = parseInt($hours);\r\n $hours = $hours > 0 ? $hours : (-1 * $hours);\r\n $hours = $hours > 0 ? $hours == 1 ? $hours+' hour' : $hours+' hours' : '';\r\n $dateString.push($hours);\r\n var $minutesHelper = $sense ? $date.clone().subtract($diffHours, 'hours') : $date.clone().add($diffHours, 'hours');\r\n var $minutes = $now.clone().diff($minutesHelper, 'minutes');\r\n $minutes = parseInt($minutes);\r\n $minutes = $minutes > 0 ? $minutes : (-1 * $minutes);\r\n $minutes = $minutes > 0 ? $minutes == 1 ? $minutes+' minute' : $minutes+' minutes' : '';\r\n $dateString.push($minutes);\r\n var $secondsHelper = $sense ? $date.clone().subtract($diffMinutes, 'minutes') : $date.clone().add($diffMinutes, 'minutes');\r\n var $seconds = $now.clone().diff($secondsHelper, 'seconds');\r\n $seconds = parseInt($seconds);\r\n $seconds = $seconds > 0 ? $seconds : (-1 * $seconds);\r\n $seconds = $seconds > 0 ? $seconds == 1 ? $seconds+' second' : $seconds+' seconds' : '';\r\n $dateString.push($seconds);\r\n if($days > 3){\r\n $that.html($date.format('YYYY-MM-DD HH:mm:ss'));\r\n }else{\r\n if($sense){\r\n $news++;\r\n $that.html('start in ' + $dateString.join(' '));\r\n }else{\r\n $olds++;\r\n $that.html($dateString.join(' ') + ' ago');\r\n }\r\n }\r\n });\r\n if($newEvents != $news && $oldEvents != $olds){\r\n var $timeZone = $myCalendar.find(\".time-zone\");\r\n var $area = $timeZone.data('area');\r\n var $params = $.extend({}, {user_id:$userId, area:$area, week:$now.clone().format('DD-MM-YYYY')});\r\n nurseslounge_myDashboard_myCalendar.get($params, function($data){\r\n nurseslounge_myDashboard_myCalendar.createCalendar('list', $now.clone(), $data);\r\n });\r\n }\r\n try{\r\n clearTimeout($calendarClockBinding);\r\n }catch ($e) {\r\n\r\n }\r\n $calendarClockBinding = setTimeout(function(){\r\n nurseslounge_myDashboard_myCalendar.createCalendarListClock($newEvents, $oldEvents);\r\n }, 1000);\r\n libs.memorySave('myDashboard_myCalendar_calendar_clock_binding', $calendarClockBinding);\r\n },\r\n //Checklist\r\n /*\r\n openPreviousEvent:function($params){\r\n var $modal = $(\"#home-my-profile-calendar-events-checklist\");\r\n var $modalBody = $modal.find('.modal-body');\r\n nurseslounge_myDashboard_myCalendar.openPreviousEventRequest($params, function($chtml){\r\n $modalBody.html($chtml).promise().done(function(){\r\n\r\n\r\n $modal.modal('show');\r\n });\r\n });\r\n },\r\n openPreviousEventRequest:function($params, cback){\r\n $.ajax({\r\n url: \"/myDashboard/myCalendar/getChecklist\",\r\n method: 'POST',\r\n cache: false,\r\n dataType: \"html\",\r\n data:$params,\r\n success: function ($data) {\r\n libs.expire($data);\r\n cback($data);\r\n }\r\n });\r\n }\r\n */\r\n};\r\n","var nurseslounge_myDashboard_schedule = {\r\n serverDateHelper:null,\r\n serverDate:null,\r\n selectedView:'month',\r\n selectedDate:null,\r\n setServerDate:function($utcDate){\r\n this.serverDateHelper = new Date();\r\n this.serverDate = $utcDate.toDate();\r\n },\r\n getServerDate:function(){\r\n var $now = new Date().getTime();\r\n var $diff = $now - this.serverDateHelper.getTime();\r\n var $date = this.serverDate.getTime() + $diff;\r\n $date = new Date($date);\r\n return {\r\n Y: $date.getUTCFullYear(),\r\n n: $date.getUTCMonth(),\r\n d: $date.getUTCDate(),\r\n G: $date.getUTCHours(),\r\n i: $date.getUTCMinutes(),\r\n s: $date.getUTCSeconds(),\r\n v: $date.getUTCMilliseconds()\r\n };\r\n },\r\n open_my_calendar:function($params){\r\n nurseslounge_myDashboard_accountSettings.init($params);\r\n nurseslounge_myDashboard_camera.init($params);\r\n nurseslounge_myDashboard.submenu($params, function(){\r\n setTimeout(function(){\r\n var $myCalendar = $(\"#nurseslounge-home-my-calendar\");\r\n var $timeZone = $myCalendar.find(\".time-zone\");\r\n var $area = $timeZone.data('area');\r\n $params = $.extend({}, $params, {area:$area});\r\n nurseslounge_myDashboard_myCalendar.open_my_calendar_request($params, function($data){\r\n var $momentDate = moment($data.data.star_at);\r\n $params = $.extend({}, $params, {month:$momentDate.clone().format('DD-MM-YYYY')});\r\n nurseslounge_myDashboard_myCalendar.get($params, function($data){\r\n nurseslounge_myDashboard_myCalendar.createCalendar('week', $momentDate.clone(), $data);\r\n });\r\n });\r\n }, 1000);\r\n });\r\n },\r\n open_my_calendar_request:function($params, cback){\r\n $.ajax({\r\n url: \"/myDashboard/myCalendar/getEventMoment\",\r\n method: 'POST',\r\n cache: false,\r\n dataType: \"json\",\r\n data:$params,\r\n success: function ($data) {\r\n libs.expire($data);\r\n cback($data);\r\n }\r\n });\r\n },\r\n init: function ($params) {\r\n nurseslounge_myDashboard_schedule.schedule($params);\r\n },\r\n schedule:function($params){\r\n nurseslounge_myDashboard_schedule.currentTime();\r\n var $myCalendar = $(\"#nurseslounge-home-schedule\");\r\n var $timeZone = $myCalendar.find(\".time-zone\");\r\n var $area = $timeZone.data('area');\r\n nurseslounge_myDashboard_schedule.selectedDate = moment();\r\n var $calendarDate = nurseslounge_myDashboard_schedule.selectedDate;\r\n var $defaulCalendar = nurseslounge_myDashboard_schedule.selectedView;\r\n switch ($defaulCalendar) {\r\n case 'month':{\r\n $params = $.extend({}, $params, {area:$area, month:$calendarDate.clone().format('DD-MM-YYYY')});\r\n break;\r\n }\r\n case 'week':{\r\n $params = $.extend({}, $params, {area:$area, week:$calendarDate.clone().format('DD-MM-YYYY')});\r\n break;\r\n }\r\n case 'day':{\r\n $params = $.extend({}, $params, {area:$area, week:$calendarDate.clone().format('DD-MM-YYYY')});\r\n break;\r\n }\r\n case 'list':{\r\n $params = $.extend({}, $params, {area:$area, week:$calendarDate.clone().format('DD-MM-YYYY')});\r\n break;\r\n }\r\n }\r\n nurseslounge_myDashboard_schedule.get($params, function($data){\r\n var $weeks = nurseslounge_myDashboard_schedule.getWeeks($calendarDate, $data);\r\n var $week = $calendarDate.clone().week();\r\n var $day = $calendarDate.clone().format('DD');\r\n $day = libs.pad('00',$day,'l');\r\n var $currentWeek = $weeks.filter(function($v){\r\n return $v[0] == $week;\r\n })[0];\r\n var $currentDay = $currentWeek[1].filter(function($v){\r\n return $v[0] == $day;\r\n })[0];\r\n var $Y = $currentDay[1].trace.year.Y;\r\n var $n = $currentDay[1].trace.month.n - 1;\r\n var $d = $currentDay[1].trace.day.d;\r\n var $G = $currentDay[1].trace.hour.G;\r\n var $i = $currentDay[1].trace.hour.i;\r\n var $s = $currentDay[1].trace.hour.s;\r\n var $v = $currentDay[1].trace.hour.v;\r\n var $utcDate = moment.utc([$Y, $n, $d, $G, $i, $s, $v]);\r\n nurseslounge_myDashboard_schedule.setServerDate($utcDate);\r\n nurseslounge_myDashboard_schedule.createCalendar($defaulCalendar, $calendarDate.clone(), $data);\r\n });\r\n },\r\n currentTime:function(){\r\n var $myCalendar = $(\"#nurseslounge-home-schedule\");\r\n var $calendarBinding = libs.memoryGet('myDashboard_schedule_current_time') ? libs.memoryGet('myDashboard_schedule_current_time') : null;\r\n var $now = moment();\r\n var $dateArea = moment.tz.guess();\r\n var $dateZone = moment($now.format('YYYY-MM-DD')).tz($dateArea).format('Z');\r\n var $dateZoneAbbr = moment($now.format('YYYY-MM-DD')).tz($dateArea).format('z');\r\n var $timeZone = $myCalendar.find(\".time-zone\");\r\n var $timeNow = $myCalendar.find(\".time-now\");\r\n $timeZone.data('area', $dateArea);\r\n $timeZone.data('zone', $dateZone);\r\n $timeZone.data('zoneabbr', $dateZoneAbbr);\r\n $timeZone.html($dateArea+' '+$dateZone+' '+$dateZoneAbbr);\r\n $timeNow.data('datetime', $now.format('DD-MM-YYYY, HH:mm:ss'));\r\n\r\n var $activeTimeLine = $(\".calendar .view-week .week-timeline.active\");\r\n var $viewWeek = $activeTimeLine.parent();\r\n var $from = $viewWeek.data('from');\r\n $from = moment($from, 'YYYY-MM-DD HH:mm:ss');\r\n var $diffInMinutes = $now.diff($from, 'minutes');\r\n var $top = (parseInt($diffInMinutes)*2);\r\n var $getTop = $activeTimeLine.css('top');\r\n $getTop = $getTop!= undefined ? $getTop.replace('px', '') : '';\r\n if($getTop != $top){\r\n $activeTimeLine.css('top', $top);\r\n }\r\n\r\n var $weekTimeline = libs.memoryGet('myDashboard_shedule_week_timeline_binding');\r\n if($diffInMinutes == 0 && !$weekTimeline){\r\n libs.memorySave('myDashboard_schedule_week_timeline_binding', true);\r\n $activeTimeLine.removeClass('active');\r\n var $index = $($activeTimeLine.parents('tr:first').find('td')).index($viewWeek);\r\n $activeTimeLine.parent().closest('tr').next('tr').find('td:eq('+$index+')').find('.week-timeline').addClass('active');\r\n libs.memorySave('myDashboard_shedule_week_timeline_binding', false);\r\n }\r\n\r\n $timeNow.html($now.format('MMMM DD YYYY, hh:mm:ss a')).promise().done(function(){\r\n try{\r\n clearTimeout($calendarBinding);\r\n }catch ($e) {\r\n\r\n }\r\n $calendarBinding = setTimeout(function(){\r\n nurseslounge_myDashboard_schedule.currentTime();\r\n }, 1000);\r\n });\r\n libs.memorySave('myDashboard_schedule_current_time', $calendarBinding)\r\n },\r\n get:function($params, cback){\r\n $.ajax({\r\n url: \"/myDashboard/schedule/get\",\r\n method: \"POST\",\r\n cache:false,\r\n dataType: \"json\",\r\n data:$params,\r\n success: function ($data) {\r\n libs.expire($data);\r\n cback($data);\r\n }\r\n });\r\n },\r\n createCalendar:function($view, $momentDate, $data){\r\n var $userId = libs.memoryGet('user_id');\r\n var $myCalendar = $(\"#nurseslounge-home-schedule\");\r\n var $timeZone = $myCalendar.find(\".time-zone\");\r\n var $area = $timeZone.data('area');\r\n var $viewOptions = $myCalendar.find(\".view-options\");\r\n var $prevButton = $myCalendar.find(\".prev-button\");\r\n var $nextButton = $myCalendar.find(\".next-button\");\r\n var $todayButton = $myCalendar.find(\".today-button\");\r\n var $createEvent = $myCalendar.find(\".create-event\");\r\n var $YYYY = $momentDate.format('YYYY');\r\n var $MMMM = $momentDate.format('MMMM');\r\n var $calendarTitle = $myCalendar.find(\".calendar-title\");\r\n var $calendarTop = $(\"#nurseslounge-home-schedule .nurseslounge-home-schedule-top\");\r\n nurseslounge_myDashboard_schedule.selectedDate = $momentDate;\r\n switch ($view) {\r\n case 'month':{\r\n $calendarTop.find(\".event-list-text\").html('Event List View').promise().done(function(){\r\n $calendarTop.find(\".event-list-text\").data('event','list');\r\n nurseslounge_myDashboard_schedule.createCalendarMonth($momentDate, $data);\r\n });\r\n break;\r\n }\r\n case 'week':{\r\n $calendarTop.find(\".event-list-text\").html('Event Calendar View').promise().done(function(){\r\n $calendarTop.find(\".event-list-text\").data('event','month');\r\n nurseslounge_myDashboard_schedule.createCalendarWeek($momentDate, $data);\r\n });\r\n break;\r\n }\r\n case 'day':{\r\n $calendarTop.find(\".event-list-text\").html('Event Calendar View').promise().done(function(){\r\n $calendarTop.find(\".event-list-text\").data('event','month');\r\n nurseslounge_myDashboard_schedule.createCalendarDay($momentDate, $data);\r\n });\r\n break;\r\n }\r\n case 'list':{\r\n $calendarTop.find(\".event-list-text\").html('Event Calendar View').promise().done(function(){\r\n $calendarTop.find(\".event-list-text\").data('event','month');\r\n nurseslounge_myDashboard_schedule.createCalendarList($momentDate, $data);\r\n });\r\n break;\r\n }\r\n }\r\n $calendarTitle.removeClass('calendar-title-preload');\r\n $calendarTitle.html($MMMM+' - '+$YYYY).promise().done(function(){\r\n $viewOptions.unbind().change(function(){\r\n var $that = $(this);\r\n var $selectedView = $that.val();\r\n var $params = {user_id:$userId, area:$area};\r\n var $selectedDate = nurseslounge_myDashboard_schedule.selectedDate;\r\n if($selectedView != ''){\r\n switch ($selectedView) {\r\n case 'month':{\r\n $params = $.extend({}, $params, {month:$selectedDate.clone().format('DD-MM-YYYY')});\r\n break;\r\n }\r\n case 'week':{\r\n $params = $.extend({}, $params, {week:$selectedDate.clone().format('DD-MM-YYYY')});\r\n break;\r\n }\r\n case 'day':{\r\n $params = $.extend({}, $params, {week:$selectedDate.clone().format('DD-MM-YYYY')});\r\n break;\r\n }\r\n case 'list':{\r\n $params = $.extend({}, $params, {week:$selectedDate.clone().format('DD-MM-YYYY')});\r\n break;\r\n }\r\n }\r\n nurseslounge_myDashboard_schedule.get($params, function($data){\r\n nurseslounge_myDashboard_schedule.createCalendar($selectedView, $selectedDate.clone(), $data);\r\n });\r\n nurseslounge_myDashboard_schedule.selectedView = $selectedView;\r\n }\r\n });\r\n $viewOptions.find('option[value=\"'+$view+'\"]').prop('selected', true);\r\n $prevButton.unbind().click(function(){\r\n var $newMomentDate = null;\r\n var $selectedView = nurseslounge_myDashboard_schedule.selectedView;\r\n var $params = {user_id:$userId, area:$area};\r\n switch ($selectedView) {\r\n case 'month':{\r\n $newMomentDate = $momentDate.subtract(1, 'month');\r\n $params = $.extend({}, $params, {month:$newMomentDate.clone().format('DD-MM-YYYY')});\r\n break;\r\n }\r\n case 'week':{\r\n $newMomentDate = $momentDate.subtract(1, 'week');\r\n $params = $.extend({}, $params, {week:$newMomentDate.clone().format('DD-MM-YYYY')});\r\n break;\r\n }\r\n case 'day':{\r\n $newMomentDate = $momentDate.subtract(1, 'day');\r\n $params = $.extend({}, $params, {week:$newMomentDate.clone().format('DD-MM-YYYY')});\r\n break;\r\n }\r\n case 'list':{\r\n $newMomentDate = $momentDate.subtract(1, 'day');\r\n $params = $.extend({}, $params, {week:$newMomentDate.clone().format('DD-MM-YYYY')});\r\n break;\r\n }\r\n }\r\n nurseslounge_myDashboard_schedule.get($params, function($data){\r\n nurseslounge_myDashboard_schedule.createCalendar($selectedView, $newMomentDate.clone(), $data);\r\n });\r\n nurseslounge_myDashboard_schedule.selectedView = $selectedView;\r\n });\r\n $nextButton.unbind().click(function(){\r\n var $newMomentDate = null;\r\n var $selectedView = nurseslounge_myDashboard_schedule.selectedView;\r\n var $params = {user_id:$userId, area:$area};\r\n switch ($selectedView) {\r\n case 'month':{\r\n $newMomentDate = $momentDate.add(1, 'month');\r\n $params = $.extend({}, $params, {month:$newMomentDate.clone().format('DD-MM-YYYY')});\r\n break;\r\n }\r\n case 'week':{\r\n $newMomentDate = $momentDate.add(1, 'week');\r\n $params = $.extend({}, $params, {week:$newMomentDate.clone().format('DD-MM-YYYY')});\r\n break;\r\n }\r\n case 'day':{\r\n $newMomentDate = $momentDate.add(1, 'day');\r\n $params = $.extend({}, $params, {week:$newMomentDate.clone().format('DD-MM-YYYY')});\r\n break;\r\n }\r\n case 'list':{\r\n $newMomentDate = $momentDate.add(1, 'day');\r\n $params = $.extend({}, $params, {week:$newMomentDate.clone().format('DD-MM-YYYY')});\r\n break;\r\n }\r\n }\r\n nurseslounge_myDashboard_schedule.get($params, function($data){\r\n nurseslounge_myDashboard_schedule.createCalendar($selectedView, $newMomentDate.clone(), $data);\r\n });\r\n nurseslounge_myDashboard_schedule.selectedView = $selectedView;\r\n });\r\n $todayButton.unbind().click(function(){\r\n var $selectedView = nurseslounge_myDashboard_schedule.selectedView;\r\n var $params = {user_id:$userId, area:$area};\r\n var $today = moment();\r\n switch ($selectedView) {\r\n case 'month':{\r\n $params = $.extend({}, $params, {month:$today.clone().format('DD-MM-YYYY')});\r\n break;\r\n }\r\n case 'week':{\r\n $params = $.extend({}, $params, {week:$today.clone().format('DD-MM-YYYY')});\r\n break;\r\n }\r\n case 'day':{\r\n $params = $.extend({}, $params, {week:$today.clone().format('DD-MM-YYYY')});\r\n break;\r\n }\r\n case 'list':{\r\n $params = $.extend({}, $params, {week:$today.clone().format('DD-MM-YYYY')});\r\n break;\r\n }\r\n }\r\n //Scroll\r\n nurseslounge_myDashboard_schedule.get($params, function($data){\r\n nurseslounge_myDashboard_schedule.createCalendar($selectedView, $today, $data);\r\n var $calendarViewWeek = $(\".calendar .view-week\");\r\n var $activeTimeLine = $calendarViewWeek.find(\".week-timeline.active\");\r\n if($activeTimeLine.length > 0 && $calendarViewWeek.is(':visible')){\r\n var $scrollPosition = $activeTimeLine.offset().top;\r\n //$(\"html, body\").animate({scrollTop:parseInt($scrollPosition) - 150});\r\n }\r\n var $calendarViewDay = $(\".calendar .view-day\");\r\n var $activeTimeLine = $calendarViewDay.find(\".week-timeline.active\");\r\n if($activeTimeLine.length > 0 && $calendarViewDay.is(':visible')){\r\n var $scrollPosition = $activeTimeLine.offset().top;\r\n //$(\"html, body\").animate({scrollTop:parseInt($scrollPosition) - 150});\r\n }\r\n var $calendarViewList = $(\".calendar .view-list\");\r\n var $activeTimeLine = $calendarViewList.find(\".timeline.active\");\r\n if($activeTimeLine.length > 0 && $calendarViewList.is(':visible')){\r\n var $scrollPosition = $activeTimeLine.offset().top;\r\n //$(\"html, body\").animate({scrollTop:parseInt($scrollPosition) - 150});\r\n }\r\n });\r\n });\r\n $createEvent.unbind().click(function(){\r\n var $params = {user_id:$userId, area:$area};\r\n nurseslounge_myDashboard_schedule.getEventModal($params);\r\n //var $params = {user_id:$userId, area:$area};\r\n //nurseslounge_myDashboard_schedule.openPreviousEvent($params);\r\n });\r\n var $calendarViewWeek = $(\".calendar .view-week\");\r\n var $activeTimeLine = $calendarViewWeek.find(\".week-timeline.active\");\r\n if($activeTimeLine.length > 0 && $calendarViewWeek.is(':visible')){\r\n var $scrollPosition = $activeTimeLine.offset().top;\r\n //$(\"html, body\").animate({scrollTop:parseInt($scrollPosition) - 150});\r\n }\r\n var $calendarViewDay = $(\".calendar .view-day\");\r\n var $activeTimeLine = $calendarViewDay.find(\".week-timeline.active\");\r\n if($activeTimeLine.length > 0 && $calendarViewDay.is(':visible')){\r\n var $scrollPosition = $activeTimeLine.offset().top;\r\n //$(\"html, body\").animate({scrollTop:parseInt($scrollPosition) - 150});\r\n }\r\n var $calendarViewList = $(\".calendar .view-list\");\r\n var $activeTimeLine = $calendarViewList.find(\".timeline.active\");\r\n if($activeTimeLine.length > 0 && $calendarViewList.is(':visible')){\r\n var $scrollPosition = $activeTimeLine.offset().top;\r\n //$(\"html, body\").animate({scrollTop:parseInt($scrollPosition) - 150});\r\n }\r\n });\r\n },\r\n //Save Events Init\r\n getEventModal:function($params){\r\n var $myCalendar = $(\"#nurseslounge-home-schedule\");\r\n var $timeZone = $myCalendar.find(\".time-zone\");\r\n var $area = $timeZone.data('area');\r\n $params = $.extend({}, $params, {area:$area});\r\n var $modal = $(\"#home-my-profile-schedule-events\");\r\n var $modalTitle = $modal.find(\".modal-title\");\r\n var $modalBody = $modal.find(\".modal-body\");\r\n nurseslounge_myDashboard_schedule.getEventRequest($params, function($chtml){\r\n var $modalFooter = $($chtml).find('.modal-footer:first');\r\n var $isOwner = $modalFooter.data('owner') == 1;\r\n var $key = $modalFooter.data('key');\r\n var $hasKey = $key && $key != '';\r\n var $createEditHtml = '';\r\n if($hasKey){\r\n if(!$isOwner){\r\n $createEditHtml = 'Invitation to an event';\r\n }else{\r\n $createEditHtml = 'Edit event';\r\n }\r\n }else{\r\n if($isOwner) {\r\n $createEditHtml = 'Create event';\r\n }\r\n }\r\n $modalTitle.html($createEditHtml);\r\n $modalBody.html($chtml).promise().done(function(){\r\n var $modalForm = $modal.find(\"form\");\r\n var $typeContainer = $modal.find('.event_type_container');\r\n var $typeEventType = $typeContainer.find('select[name=\"typeEventType\"]');\r\n var $oneTimeEventContainer = $modal.find('.event_oneTimeEvent_container');\r\n $oneTimeEventContainer.hide();\r\n var $periodicalEventContainer = $modal.find('.event_periodicalEvent_container');\r\n $periodicalEventContainer.hide();\r\n var $periodContainer = $modal.find('.event_period_container');\r\n $periodContainer.hide();\r\n var $weeklyContainer = $modal.find('.event_weekly_container');\r\n var $weeklyContainerSelection = $weeklyContainer.find('.event_weekly_container_selection');\r\n $weeklyContainerSelection.hide();\r\n $weeklyContainer.hide();\r\n var $monthlyContainer = $modal.find('.event_monthly_container');\r\n var $monthlyContainerSelection = $monthlyContainer.find('.event_monthly_container_selection');\r\n $monthlyContainerSelection.hide();\r\n $monthlyContainer.hide();\r\n var $hoursContainer = $modal.find('.event_hours_container');\r\n var $hoursContainerSelection = $hoursContainer.find('.event_hours_container_selection');\r\n $hoursContainerSelection.hide();\r\n $hoursContainer.hide();\r\n var $notifyContainer = $modal.find('.event_notify_container');\r\n var $notifyContainerSelection = $notifyContainer.find('.event_notify_container_selection');\r\n $notifyContainerSelection.hide();\r\n $notifyContainer.hide();\r\n var $inviteUsersContainer = $modal.find('.event_inviteUsers_container');\r\n $inviteUsersContainer.hide();\r\n var $settingsContainer = $modal.find('.event_settings_container');\r\n $settingsContainer.hide();\r\n var $modalFooter = $modal.find('.modal-footer');\r\n $modalFooter.hide();\r\n $typeEventType.unbind().change(function(){\r\n var $that = $(this);\r\n $oneTimeEventContainer.hide();\r\n $periodicalEventContainer.hide();\r\n $periodContainer.hide();\r\n $weeklyContainer.hide();\r\n $monthlyContainer.hide();\r\n $hoursContainer.hide();\r\n $hoursContainerSelection.hide();\r\n $notifyContainer.hide();\r\n $notifyContainerSelection.hide();\r\n $inviteUsersContainer.hide();\r\n $settingsContainer.hide();\r\n $modalFooter.hide();\r\n $modalForm.find('.invalid-feedback').hide();\r\n $modalForm.find('.error').removeClass('error');\r\n $modalForm.find('.is-invalid').removeClass('is-invalid');\r\n switch($that.val()){\r\n case 'one_time':{\r\n nurseslounge_myDashboard_schedule.oneTimeEvents();\r\n break;\r\n }\r\n case 'periodical':{\r\n nurseslounge_myDashboard_schedule.periodicalEvents();\r\n break;\r\n }\r\n }\r\n });\r\n var $modalDescription =$modalForm.find(\"textarea[name='dataDescription']\");\r\n var $modalDescriptionCharacters =$modalForm.find(\"input[name='dataDescriptionCharacters']\");\r\n $modalDescription.unbind().on('keyup keydown keypress', function(){\r\n var $that = $(this);\r\n var $val = $that.val();\r\n var $allowedCharacters = 200 - $val.length;\r\n $allowedCharacters = $allowedCharacters > 0 ? $allowedCharacters : 0;\r\n if($allowedCharacters <= 0){\r\n $that.val($val.substring(0, 200));\r\n }\r\n $modalDescriptionCharacters.val($allowedCharacters);\r\n });\r\n switch($typeEventType.val()){\r\n case 'one_time':{\r\n nurseslounge_myDashboard_schedule.oneTimeEvents();\r\n break;\r\n }\r\n case 'periodical':{\r\n nurseslounge_myDashboard_schedule.periodicalEvents();\r\n break;\r\n }\r\n }\r\n libs.checkImageLoad($($chtml).find('img'), function(){\r\n $modal.modal('show');\r\n });\r\n });\r\n });\r\n },\r\n getEventRequest:function($params, cback){\r\n $.ajax({\r\n url: \"/myDashboard/schedule/getEvent\",\r\n method: 'POST',\r\n cache: false,\r\n dataType: \"html\",\r\n data:$params,\r\n success: function ($data) {\r\n libs.expire($data);\r\n cback($data);\r\n }\r\n });\r\n },\r\n //\r\n oneTimeEvents:function(){\r\n var $userId = libs.memoryGet('user_id');\r\n var $modal = $(\"#home-my-profile-schedule-events\");\r\n var $oneTimeEventContainer = $modal.find('.event_oneTimeEvent_container');\r\n var $oneTimeEventDay = $oneTimeEventContainer.find('.day');\r\n var $oneTimeEventResetDay = $oneTimeEventContainer.find('.reset_day');\r\n var $date = $oneTimeEventDay.data('value') != '' ? moment($oneTimeEventDay.data('value'), 'YYYY-MM-DD HH:mm:ss').format('MM/DD/YYYY') : moment().format('MM/DD/YYYY');\r\n $oneTimeEventDay.val($date).datepicker(\"update\");\r\n $oneTimeEventDay.on('changeDate', function () {\r\n $(this).datepicker('hide');\r\n });\r\n $oneTimeEventResetDay.unbind().click(function(){\r\n $oneTimeEventDay.val($date).datepicker(\"update\");\r\n });\r\n nurseslounge_myDashboard_schedule.mandatoryEvents();\r\n nurseslounge_myDashboard_schedule.oneTimeEventsValidator(function($form){\r\n var $params = libs.getObjForm($form);\r\n var $title = $params.dataTitle;\r\n var $description = $params.dataDescription;\r\n var $link = $params.dataLink;\r\n var $type = $params.typeEventType;\r\n var $permanent = 0;\r\n var $from = $params.oneTimeEventDay;\r\n var $to = $params.oneTimeEventDay;\r\n var $period = null;\r\n var $include = null;\r\n var $days = null;\r\n var $allTimeDay = $params.hourAllDayCheckbox == 'on' ? 1 : 0;\r\n var $startAt = $params.hourSelectionFromHour;\r\n var $endAt = $params.hourSelectionToHour;\r\n var $notificationBeforeEvent = $params.notifyBeforeEventCheckbox == 'on' ? 1 : 0;\r\n var $notificationTime = null;\r\n var $notifyNotificationUnitTime = null;\r\n var $inviteUsersCheckbox = $params.inviteUsersCheckbox == 'on' ? 1 : 0;\r\n var $inviteUsersList = $params.inviteUsersList ? JSON.parse($params.inviteUsersList) : [];\r\n var $invitations = [];\r\n var $color = libs.rgb2hex($(\"input[name='settingsColor']\").css('backgroundColor'));\r\n var $available = $params.available == 'on' ? 1 : 0;\r\n if($notificationBeforeEvent == 1){\r\n $notificationTime = $params.notifyNotificationTimes;\r\n $notifyNotificationUnitTime = $params.notifyNotificationUnitTime;\r\n }\r\n if($inviteUsersCheckbox == 1){\r\n $.each($inviteUsersList, function($i, $v){\r\n $invitations.push($v.id);\r\n });\r\n }\r\n var $myCalendar = $(\"#nurseslounge-home-schedule\");\r\n var $timeZone = $myCalendar.find(\".time-zone\");\r\n var $area = $timeZone.data('area');\r\n var $event = {\r\n user_id:$userId,\r\n area:$area,\r\n title:$title,\r\n description:$description,\r\n link:$link,\r\n type:$type,\r\n permanent:$permanent,\r\n from:$from,\r\n to:$to,\r\n period:$period,\r\n include:$include,\r\n days:$days,\r\n all_time_day:$allTimeDay,\r\n start_at:$startAt,\r\n end_at:$endAt,\r\n notification_time:$notificationTime,\r\n notification_unit_time:$notifyNotificationUnitTime,\r\n color:$color,\r\n available:$available,\r\n invitations:$invitations.join(','),\r\n selected_date:nurseslounge_myDashboard_schedule.selectedDate.clone().format('DD-MM-YYYY')\r\n };\r\n nurseslounge_myDashboard_schedule.saveEvent($event);\r\n });\r\n nurseslounge_myDashboard_schedule.deleteEvent();\r\n $oneTimeEventContainer.show();\r\n },\r\n oneTimeEventsValidator:function(cback){\r\n $.validator.addMethod(\"dateGreaterThanHour\", function($v, $ele, $params) {\r\n var $oneTimeEventDay = $(\"#home-my-profile-schedule-events form .event_oneTimeEvent_container input[name='oneTimeEventDay']\").val();\r\n var $date = $oneTimeEventDay+' '+$v;\r\n return $params != false ? moment($date, 'MM/DD/YYYY h:mm A') > moment($params, 'MM/DD/YYYY h:mm A') : true;\r\n },'Date must be greater than {0}.');\r\n $.validator.addMethod(\"dateGreaterThanDay\", function($v, $ele, $params) {\r\n return $params != false ? moment($v, 'MM/DD/YYYY') > $params : true;\r\n },'Date must be greater than {0}.');\r\n var $validator;\r\n try {\r\n $validator = $(\"#home-my-profile-schedule-events form\").validate();\r\n $validator.destroy();\r\n }catch (e) {\r\n\r\n }\r\n var $typeEventType = $('#home-my-profile-schedule-events form .event_type_container select[name=\"typeEventType\"]');\r\n var $hourAllDayCheckbox = $('#home-my-profile-schedule-events form .event_hours_container input[name=\"hourAllDayCheckbox\"]');\r\n var $notifyBeforeEventCheckbox = $('#home-my-profile-schedule-events form .event_notify_container input[name=\"notifyBeforeEventCheckbox\"]');\r\n var $inviteUsersCheckbox = $('#home-my-profile-schedule-events form .event_inviteUsers_container input[name=\"inviteUsersCheckbox\"]');\r\n $validator = $(\"#home-my-profile-schedule-events form\").validate({\r\n onsubmit: true,\r\n debug: true,\r\n ignore: \"*:not(.validate)\",\r\n rules: {\r\n dataTitle: {\r\n required: true\r\n },\r\n dataDescription: {\r\n required: true,\r\n minlength: 1,\r\n maxlength: 200\r\n },\r\n dataLink: {\r\n required: false\r\n },\r\n typeEventType: {\r\n required: true,\r\n },\r\n oneTimeEventDay: {\r\n required: function () {\r\n return $typeEventType.val() == 'one_time';\r\n }\r\n },\r\n hourSelectionFromHour:{\r\n required: function () {\r\n return !$hourAllDayCheckbox.is(':checked');\r\n }\r\n },\r\n hourSelectionToHour:{\r\n required: function () {\r\n return !$hourAllDayCheckbox.is(':checked');\r\n },\r\n dateGreaterThanHour:function(){\r\n var $oneTimeEventDay = $(\"#home-my-profile-schedule-events form .event_oneTimeEvent_container input[name='oneTimeEventDay']\").val();\r\n var $hourSelectionFromHour = $(\"#home-my-profile-schedule-events form .event_hours_container input[name='hourSelectionFromHour']\").val();\r\n var $date = $oneTimeEventDay+' '+$hourSelectionFromHour;\r\n return $typeEventType.val() == 'one_time' && !$hourAllDayCheckbox.is(':checked') ? moment($date, 'MM/DD/YYYY h:mm A') : false;\r\n }\r\n },\r\n notifyNotificationTimes:{\r\n required: function () {\r\n return !$notifyBeforeEventCheckbox.is(':checked');\r\n }\r\n },\r\n notifyNotificationUnitTime:{\r\n required: function () {\r\n return !$notifyBeforeEventCheckbox.is(':checked');\r\n }\r\n },\r\n inviteUsersList:{\r\n required: function () {\r\n return $inviteUsersCheckbox.is(':checked');\r\n }\r\n },\r\n },\r\n messages: {\r\n dataTitle: {\r\n required: \"The event title is required\",\r\n },\r\n dataDescription: {\r\n required: \"The event description is required\",\r\n minlength: \"The event description must have at least 1 characters\",\r\n maxlength: \"The event description cannot exceed 200 characters\"\r\n },\r\n dataLink: {\r\n required: \"The event link is not required\",\r\n },\r\n typeEventType: {\r\n required: \"The event type is required\"\r\n },\r\n oneTimeEventDay: {\r\n required: \"The event type day is required\"\r\n },\r\n hourSelectionFromHour: {\r\n required: \"The event from hour is required\"\r\n },\r\n hourSelectionToHour: {\r\n required: \"The event to hour is required\",\r\n dateGreaterThanHour:'The event to hour must be greater than from hour'\r\n },\r\n notifyNotificationTimes:{\r\n required: \"The time prev for notification is required\"\r\n },\r\n notifyNotificationUnitTime: {\r\n required: \"The unit time prev for notification is required\"\r\n },\r\n inviteUsersList: {\r\n required: \"The colleagues list is required\"\r\n }\r\n },\r\n errorPlacement: function($error, $element){\r\n var $ele = $($element);\r\n var $name = $ele.attr(\"name\");\r\n if(!$ele.hasClass('is-invalid')){\r\n $ele.addClass('is-invalid');\r\n }\r\n $(\".\"+$name+\"_validate\").html($($error).text()).show();\r\n },\r\n success: function($error, $element) {\r\n var $ele = $($element);\r\n var $name = $ele.attr(\"name\");\r\n if($ele.hasClass('is-invalid')){\r\n $ele.removeClass('is-invalid');\r\n }\r\n $(\".\"+$name+\"_validate\").html('').hide();\r\n },\r\n submitHandler: function($form) {\r\n cback($form);\r\n return false;\r\n }\r\n });\r\n },\r\n //\r\n periodicalEvents:function(){\r\n var $userId = libs.memoryGet('user_id');\r\n var $modal = $(\"#home-my-profile-schedule-events\");\r\n var $periodicalEventContainer = $modal.find('.event_periodicalEvent_container');\r\n var $periodicalEventFromDate = $periodicalEventContainer.find('.from_date');\r\n var $periodicalEventFromResetDate = $periodicalEventContainer.find('.reset_from_date');\r\n var $periodicalEventToDate = $periodicalEventContainer.find('.to_date');\r\n var $periodicalEventToResetDate = $periodicalEventContainer.find('.reset_to_date');\r\n var $periodicalEventPermanentCheckbox = $periodicalEventContainer.find('input[name=\"periodicalEventPermanentCheckbox\"]');\r\n var $periodicalEventContainerSelection = $periodicalEventContainer.find('.event_periodicalEvent_container_selection');\r\n var $periodContainer = $modal.find('.event_period_container');\r\n var $periodDate = $periodContainer.find('select[name=\"periodDate\"]');\r\n var $weeklyContainer = $modal.find('.event_weekly_container');\r\n var $monthlyContainer = $modal.find('.event_monthly_container');\r\n $periodicalEventPermanentCheckbox.unbind().change(function(){\r\n var $that = $(this);\r\n if($that.is(':checked')){\r\n $periodicalEventContainerSelection.hide();\r\n }else{\r\n $periodicalEventContainerSelection.show();\r\n }\r\n });\r\n if($periodicalEventPermanentCheckbox.is(':checked')){\r\n $periodicalEventContainerSelection.hide();\r\n }else{\r\n $periodicalEventContainerSelection.show();\r\n }\r\n var $fromDate = $periodicalEventFromDate.data('value') != '' ? moment($periodicalEventFromDate.data('value'), 'YYYY-MM-DD HH:mm:ss').format('MM/DD/YYYY') : moment().format('MM/DD/YYYY');\r\n $periodicalEventFromDate.val($fromDate).datepicker(\"update\");\r\n $periodicalEventFromDate.on('changeDate', function () {\r\n $(this).datepicker('hide');\r\n });\r\n $periodicalEventFromResetDate.unbind().click(function(){\r\n $periodicalEventFromDate.val($fromDate).datepicker(\"update\");\r\n });\r\n var $toDate = $periodicalEventToDate.data('value') != '' ? moment($periodicalEventToDate.data('value'), 'YYYY-MM-DD HH:mm:ss').format('MM/DD/YYYY') : moment().format('MM/DD/YYYY');\r\n $periodicalEventToDate.val($toDate).datepicker(\"update\");\r\n $periodicalEventToDate.on('changeDate', function () {\r\n $(this).datepicker('hide');\r\n });\r\n $periodicalEventToResetDate.unbind().click(function(){\r\n $periodicalEventToDate.val($toDate).datepicker(\"update\");\r\n });\r\n\r\n $periodDate.unbind().change(function(){\r\n var $that = $(this);\r\n $weeklyContainer.hide();\r\n $monthlyContainer.hide();\r\n switch($that.val()){\r\n case 'all':{\r\n $weeklyContainer.hide();\r\n $monthlyContainer.hide();\r\n break;\r\n }\r\n case 'monthly':{\r\n nurseslounge_myDashboard_schedule.monthlyEvents();\r\n break;\r\n }\r\n case 'weekly':{\r\n nurseslounge_myDashboard_schedule.weeklyEvents();\r\n break;\r\n }\r\n }\r\n });\r\n switch($periodDate.val()){\r\n case 'all':{\r\n $weeklyContainer.hide();\r\n $monthlyContainer.hide();\r\n break;\r\n }\r\n case 'monthly':{\r\n nurseslounge_myDashboard_schedule.monthlyEvents();\r\n break;\r\n }\r\n case 'weekly':{\r\n nurseslounge_myDashboard_schedule.weeklyEvents();\r\n break;\r\n }\r\n }\r\n nurseslounge_myDashboard_schedule.mandatoryEvents();\r\n nurseslounge_myDashboard_schedule.periodicalEventsValidator(function($form){\r\n var $params = libs.getObjForm($form);\r\n var $title = $params.dataTitle;\r\n var $description = $params.dataDescription;\r\n var $link = $params.dataLink;\r\n var $type = $params.typeEventType;\r\n var $permanent = $params.periodicalEventPermanentCheckbox == 'on' ? 1 : 0;\r\n var $from = $params.periodicalEventFromDate;\r\n var $to = $params.periodicalEventToDate;\r\n var $period = $params.periodDate;\r\n var $include = null;\r\n var $days = null;\r\n var $allTimeDay = $params.hourAllDayCheckbox == 'on' ? 1 : 0;\r\n var $startAt = $params.hourSelectionFromHour;\r\n var $endAt = $params.hourSelectionToHour;\r\n var $notificationBeforeEvent = $params.notifyBeforeEventCheckbox == 'on' ? 1 : 0;\r\n var $notificationTime = null;\r\n var $notifyNotificationUnitTime = null;\r\n var $inviteUsersCheckbox = $params.inviteUsersCheckbox == 'on' ? 1 : 0;\r\n var $inviteUsersList = $params.inviteUsersList ? JSON.parse($params.inviteUsersList) : [];\r\n var $invitations = [];\r\n var $color = libs.rgb2hex($(\"input[name='settingsColor']\").css('backgroundColor'));\r\n var $available = $params.available == 'on' ? 1 : 0;\r\n switch($period){\r\n case 'weekly':{\r\n var $weeklyDate = $params.weeklyDate;\r\n $days = $params.weeklyDatesSelected;\r\n switch($weeklyDate){\r\n case 'weekly_every':{\r\n $include = 'every';\r\n break;\r\n }\r\n case 'weekly_except':{\r\n $include = 'except';\r\n break;\r\n }\r\n }\r\n break;\r\n }\r\n case 'monthly':{\r\n var $monthlyDate = $params.monthlyDate;\r\n $days = $params.monthlyDatesSelected;\r\n switch($monthlyDate){\r\n case 'monthly_every':{\r\n $include = 'every';\r\n break;\r\n }\r\n case 'monthly_except':{\r\n $include = 'except';\r\n break;\r\n }\r\n }\r\n break;\r\n }\r\n }\r\n if($notificationBeforeEvent == 1){\r\n $notificationTime = $params.notifyNotificationTimes;\r\n $notifyNotificationUnitTime = $params.notifyNotificationUnitTime;\r\n }\r\n if($inviteUsersCheckbox == 1){\r\n $.each($inviteUsersList, function($i, $v){\r\n $invitations.push($v.id);\r\n });\r\n }\r\n var $myCalendar = $(\"#nurseslounge-home-schedule\");\r\n var $timeZone = $myCalendar.find(\".time-zone\");\r\n var $area = $timeZone.data('area');\r\n var $event = {\r\n user_id:$userId,\r\n area:$area,\r\n title:$title,\r\n description:$description,\r\n link:$link,\r\n type:$type,\r\n permanent:$permanent,\r\n from:$from,\r\n to:$to,\r\n period:$period,\r\n include:$include,\r\n days:$days,\r\n all_time_day:$allTimeDay,\r\n start_at:$startAt,\r\n end_at:$endAt,\r\n notification_time:$notificationTime,\r\n notification_unit_time:$notifyNotificationUnitTime,\r\n color:$color,\r\n available:$available,\r\n invitations:$invitations.join(','),\r\n selected_date:nurseslounge_myDashboard_schedule.selectedDate.clone().format('DD-MM-YYYY')\r\n };\r\n nurseslounge_myDashboard_schedule.saveEvent($event);\r\n });\r\n nurseslounge_myDashboard_schedule.deleteEvent();\r\n $periodicalEventContainer.show();\r\n $periodContainer.show();\r\n },\r\n periodicalEventsValidator:function(cback){\r\n $.validator.addMethod(\"dateGreaterThanHourStart\", function($v, $ele, $params) {\r\n var $periodicalEventFromDate = $(\"#home-my-profile-schedule-events form .event_periodicalEvent_container input[name='periodicalEventFromDate']\").val();\r\n var $date = $periodicalEventFromDate+' '+$v;\r\n return $params != false ? moment($date, 'MM/DD/YYYY h:mm A') > moment($params, 'MM/DD/YYYY h:mm A') : true;\r\n },'Date must be greater than {0}.');\r\n $.validator.addMethod(\"dateGreaterThanHourEnd\", function($v, $ele, $params) {\r\n var $periodicalEventPermanentCheckbox = $('#home-my-profile-schedule-events form .event_periodicalEvent_container input[name=\"periodicalEventPermanentCheckbox\"]');\r\n var $date;\r\n if($periodicalEventPermanentCheckbox.is(':checked')){\r\n var $periodicalEventFromDate = $(\"#home-my-profile-schedule-events form .event_periodicalEvent_container input[name='periodicalEventFromDate']\").val();\r\n $date = $periodicalEventFromDate+' '+$v;\r\n }else{\r\n var $periodicalEventToDate = $(\"#home-my-profile-schedule-events form .event_periodicalEvent_container input[name='periodicalEventToDate']\").val();\r\n $date = $periodicalEventToDate+' '+$v;\r\n }\r\n return $params != false ? moment($date, 'MM/DD/YYYY h:mm A') > moment($params, 'MM/DD/YYYY h:mm A') : true;\r\n },'Date must be greater than {0}.');\r\n $.validator.addMethod(\"dateGreaterThanDay\", function($v, $ele, $params) {\r\n return $params;\r\n },'Date must be greater than {0}.');\r\n /*\r\n $.validator.addMethod(\"maxFourteen\", function($v, $ele, $params) {\r\n var $start = $params;\r\n var $end = moment($v, 'MM/DD/YYYY');\r\n var $duration = moment.duration($end.diff($start));\r\n var $days = $duration.asDays();\r\n return $days <= 14 ? true : false;\r\n },'Date must be greater than {0}.');\r\n */\r\n var $validator;\r\n try {\r\n $validator = $(\"#home-my-profile-schedule-events form\").validate();\r\n $validator.destroy();\r\n }catch (e) {\r\n\r\n }\r\n var $typeEventType = $('#home-my-profile-schedule-events form .event_type_container select[name=\"typeEventType\"]');\r\n var $hourAllDayCheckbox = $('#home-my-profile-schedule-events form .event_hours_container input[name=\"hourAllDayCheckbox\"]');\r\n var $notifyBeforeEventCheckbox = $('#home-my-profile-schedule-events form .event_notify_container input[name=\"notifyBeforeEventCheckbox\"]');\r\n var $inviteUsersCheckbox = $('#home-my-profile-schedule-events form .event_inviteUsers_container input[name=\"inviteUsersCheckbox\"]');\r\n var $periodicalEventFromDate = $('#home-my-profile-schedule-events form .event_periodicalEvent_container input[name=\"periodicalEventFromDate\"]');\r\n var $periodicalEventToDate = $('#home-my-profile-schedule-events form .event_periodicalEvent_container input[name=\"periodicalEventToDate\"]');\r\n var $periodicalEventPermanentCheckbox = $('#home-my-profile-schedule-events form .event_periodicalEvent_container input[name=\"periodicalEventPermanentCheckbox\"]');\r\n var $periodDate = $('#home-my-profile-schedule-events form .event_period_container select[name=\"periodDate\"]');\r\n var $monthlyDatesSelectedArr = [];\r\n var $weeklyDatesSelectedArr = [];\r\n $validator = $(\"#home-my-profile-schedule-events form\").validate({\r\n onsubmit: true,\r\n debug: true,\r\n ignore: \"*:not(.validate)\",\r\n rules: {\r\n dataTitle: {\r\n required: true\r\n },\r\n dataDescription: {\r\n required: false,\r\n minlength: 1,\r\n maxlength: 200\r\n },\r\n dataLink: {\r\n required: false\r\n },\r\n typeEventType: {\r\n required: true,\r\n },\r\n periodicalEventFromDate: {\r\n required: function () {\r\n return $typeEventType.val() == 'periodical';\r\n }\r\n },\r\n periodicalEventToDate: {\r\n required: function () {\r\n return $typeEventType.val() == 'periodical';\r\n },\r\n dateGreaterThanDay:function () {\r\n var $nowDay = $periodicalEventFromDate.val();\r\n $nowDay = moment($nowDay, 'MM/DD/YYYY');\r\n $nowDay = $nowDay.subtract(1, 'day');\r\n var $toDate = $periodicalEventToDate.val();\r\n setTimeout(function(){\r\n var $newToDate = $periodicalEventToDate.val();\r\n if($toDate != $newToDate && !$periodicalEventPermanentCheckbox.is(':checked')){\r\n $periodicalEventToDate.blur();\r\n }\r\n },800);\r\n var $toDateMoment = moment($toDate, 'MM/DD/YYYY');\r\n return !$periodicalEventPermanentCheckbox.is(':checked') ? $toDateMoment > $nowDay : false;\r\n },\r\n /*maxFourteen:function () {\r\n var $nowDay = $periodicalEventFromDate.val();\r\n $nowDay = moment($nowDay, 'MM/DD/YYYY');\r\n return moment($nowDay, 'MM/DD/YYYY');\r\n }*/\r\n },\r\n monthlyDatesSelected:{\r\n required: function () {\r\n var $monthlyDatesSelected = $('#home-my-profile-schedule-events form .event_monthly_container input[name=\"monthlyDatesSelected\"]');\r\n var $monthlyDate = $('#home-my-profile-schedule-events form .event_monthly_container select[name=\"monthlyDate\"]');\r\n $monthlyDatesSelectedArr.length = 0;\r\n var $tableDatesSelected = $('#home-my-profile-schedule-events form .event_monthly_container_selection_table tr td .dates');\r\n $tableDatesSelected.each(function($i, $v){\r\n $monthlyDatesSelectedArr.push($(this).data('date'));\r\n });\r\n $monthlyDatesSelected.val($monthlyDatesSelectedArr.join(','));\r\n return $periodDate.val() == 'monthly' && $monthlyDate.val() != 'monthly_every_day';\r\n },\r\n },\r\n weeklyDatesSelected:{\r\n required: function () {\r\n var $weeklyDatesSelected = $('#home-my-profile-schedule-events form .event_weekly_container input[name=\"weeklyDatesSelected\"]');\r\n var $weeklyDate = $('#home-my-profile-schedule-events form .event_weekly_container select[name=\"weeklyDate\"]');\r\n $weeklyDatesSelectedArr.length = 0;\r\n var $tableDatesSelected = $('#home-my-profile-schedule-events form .event_weekly_container_selection .weekly_days');\r\n $tableDatesSelected.each(function($i, $v){\r\n var $that = $(this);\r\n if($that.is(':checked') == true){\r\n $weeklyDatesSelectedArr.push($that.data('value'));\r\n }\r\n });\r\n $weeklyDatesSelected.val($weeklyDatesSelectedArr.join(','));\r\n return $periodDate.val() == 'weekly' && $weeklyDate.val() != 'weekly_every_day';\r\n },\r\n },\r\n hourSelectionFromHour:{\r\n required: function () {\r\n return !$hourAllDayCheckbox.is(':checked');\r\n }\r\n },\r\n hourSelectionToHour:{\r\n required: function () {\r\n return !$hourAllDayCheckbox.is(':checked');\r\n },\r\n dateGreaterThanHourEnd:function(){\r\n var $periodicalEventFromDate = $(\"#home-my-profile-schedule-events form .event_periodicalEvent_container input[name='periodicalEventFromDate']\").val();\r\n var $hourSelectionFromHour = $(\"#home-my-profile-schedule-events form .event_hours_container input[name='hourSelectionFromHour']\").val();\r\n var $date = $periodicalEventFromDate+' '+$hourSelectionFromHour;\r\n return $typeEventType.val() == 'periodical' && !$hourAllDayCheckbox.is(':checked') ? moment($date, 'MM/DD/YYYY h:mm A') : false;\r\n }\r\n },\r\n notifyNotificationTimes:{\r\n required: function () {\r\n return !$notifyBeforeEventCheckbox.is(':checked');\r\n }\r\n },\r\n notifyNotificationUnitTime:{\r\n required: function () {\r\n return !$notifyBeforeEventCheckbox.is(':checked');\r\n }\r\n },\r\n inviteUsersList:{\r\n required: function () {\r\n return $inviteUsersCheckbox.is(':checked');\r\n }\r\n },\r\n },\r\n messages: {\r\n dataTitle: {\r\n required: \"The event title is required\",\r\n },\r\n dataDescription: {\r\n required: \"The event description is required\",\r\n minlength: \"The event description must have at least 1 characters\",\r\n maxlength: \"The event description cannot exceed 200 characters\"\r\n },\r\n dataLink: {\r\n required: \"The event link is not required\",\r\n },\r\n typeEventType: {\r\n required: \"The event type is required\"\r\n },\r\n periodicalEventFromDate: {\r\n required: \"The event from date is required\"\r\n },\r\n periodicalEventToDate: {\r\n required: \"The event to date is required\",\r\n dateGreaterThanDay:\"The event to date must be greater than from date\",\r\n //maxFourteen:\"The maximum event length allowed is 14 days.\",\r\n },\r\n monthlyDatesSelected:{\r\n required: \"The event must have at least one day selected of the month\",\r\n },\r\n weeklyDatesSelected:{\r\n required: \"The event must have at least one day selected of the week\",\r\n },\r\n hourSelectionFromHour: {\r\n required: \"The event from hour is required\",\r\n },\r\n hourSelectionToHour: {\r\n required: \"The event to hour is required\",\r\n dateGreaterThanHourEnd:'The event to hour must be greater than from hour'\r\n },\r\n notifyNotificationTimes:{\r\n required: \"The time prev for notification is required\"\r\n },\r\n notifyNotificationUnitTime: {\r\n required: \"The unit time prev for notification is required\"\r\n },\r\n inviteUsersList: {\r\n required: \"The colleagues list is required\"\r\n }\r\n },\r\n errorPlacement: function($error, $element){\r\n var $ele = $($element);\r\n var $name = $ele.attr(\"name\");\r\n if(!$ele.hasClass('is-invalid')){\r\n $ele.addClass('is-invalid');\r\n }\r\n $(\".\"+$name+\"_validate\").html($($error).text()).show();\r\n },\r\n success: function($error, $element) {\r\n var $ele = $($element);\r\n var $name = $ele.attr(\"name\");\r\n if($ele.hasClass('is-invalid')){\r\n $ele.removeClass('is-invalid');\r\n }\r\n $(\".\"+$name+\"_validate\").html('').hide();\r\n },\r\n submitHandler: function($form) {\r\n cback($form);\r\n return false;\r\n }\r\n });\r\n },\r\n monthlyEvents:function(){\r\n var $modal = $(\"#home-my-profile-schedule-events\");\r\n var $monthlyContainer = $modal.find('.event_monthly_container');\r\n var $add = $monthlyContainer.find('.add');\r\n var $monthlyDate = $monthlyContainer.find('select[name=\"monthlyDate\"]');\r\n var $monthlyDates = $monthlyContainer.find('select[name=\"monthlyDates\"]');\r\n var $monthlyDatesSelected = $monthlyContainer.find('input[name=\"monthlyDatesSelected\"]');\r\n var $monthlyContainerSelection = $monthlyContainer.find('.event_monthly_container_selection');\r\n var $monthlyContainerSelectionTable = $monthlyContainer.find('.event_monthly_container_selection_table');\r\n var $firstTr = $monthlyContainerSelectionTable.children().first();\r\n var $everyTxt = 'Every day(s)Delete';\r\n var $exceptTxt = 'Except day(s)Delete';\r\n $add.unbind().click(function(){\r\n var $monthlyDatesVal = $monthlyDates.val();\r\n var $chtml = '';\r\n $chtml += '' +\r\n '' +\r\n ' '+$monthlyDatesVal+'' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n '';\r\n $monthlyContainerSelectionTable.children().first().after($chtml);\r\n });\r\n $monthlyDatesSelected = $monthlyDatesSelected.val() != '' ? $monthlyDatesSelected.val().split(',') : null;\r\n if($monthlyDatesSelected){\r\n $.each($monthlyDatesSelected, function($i, $v){\r\n var $chtml = '';\r\n $chtml += '' +\r\n '' +\r\n ' '+$v+'' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n '';\r\n $monthlyContainerSelectionTable.children().first().after($chtml);\r\n });\r\n }\r\n $monthlyDate.unbind().change(function(){\r\n var $that = $(this);\r\n $monthlyContainerSelection.hide();\r\n if($that.val() == 'monthly_every_day'){\r\n $monthlyContainerSelectionTable.html($monthlyContainerSelectionTable.children().first());\r\n $monthlyContainerSelection.hide();\r\n }else{\r\n if($that.val() == 'monthly_every') {\r\n $firstTr.html($everyTxt);\r\n }else{\r\n $firstTr.html($exceptTxt);\r\n }\r\n $monthlyContainerSelection.show();\r\n }\r\n });\r\n if($monthlyDate.val() == 'monthly_every_day'){\r\n $monthlyContainerSelectionTable.html($monthlyContainerSelectionTable.children().first());\r\n $monthlyContainerSelection.hide();\r\n }else{\r\n if($monthlyDate.val() == 'monthly_every') {\r\n $firstTr.html($everyTxt);\r\n }else{\r\n $firstTr.html($exceptTxt);\r\n }\r\n $monthlyContainerSelection.show();\r\n }\r\n $monthlyContainer.show();\r\n },\r\n weeklyEvents:function(){\r\n var $modal = $(\"#home-my-profile-schedule-events\");\r\n var $weeklyContainer = $modal.find('.event_weekly_container');\r\n var $weeklyDate = $modal.find('select[name=\"weeklyDate\"]');\r\n var $weeklyDays = $modal.find('.weekly_days');\r\n var $weeklyContainerSelection = $weeklyContainer.find('.event_weekly_container_selection');\r\n $weeklyDate.unbind().change(function(){\r\n var $that = $(this);\r\n if($that.val() == 'weekly_every_day'){\r\n $weeklyDays.prop('checked', false);\r\n $weeklyContainerSelection.hide();\r\n }else{\r\n $weeklyContainerSelection.show();\r\n }\r\n });\r\n if($weeklyDate.val() == 'weekly_every_day'){\r\n $weeklyDays.prop('checked', false);\r\n $weeklyContainerSelection.hide();\r\n }else{\r\n $weeklyContainerSelection.show();\r\n }\r\n $weeklyContainer.show();\r\n },\r\n //\r\n mandatoryEvents:function(){\r\n var $now = moment();\r\n var $modal = $(\"#home-my-profile-schedule-events\");\r\n var $hoursContainer = $modal.find('.event_hours_container');\r\n var $hoursContainerSelection = $hoursContainer.find('.event_hours_container_selection');\r\n var $hourAllDayCheckbox = $modal.find('input[name=\"hourAllDayCheckbox\"]');\r\n var $hoursContainerFromHour = $(\"#schedule_event_hours_container_selection_from_hour\");\r\n var $hoursContainerToHour = $(\"#schedule_event_hours_container_selection_to_hour\");\r\n var $notifyContainer = $modal.find('.event_notify_container');\r\n var $notifyContainerSelection = $notifyContainer.find('.event_notify_container_selection');\r\n var $notifyBeforeEventCheckbox = $notifyContainer.find('input[name=\"notifyBeforeEventCheckbox\"]');\r\n var $inviteUsersContainer = $modal.find('.event_inviteUsers_container');\r\n var $inviteUsersContainerSelection = $inviteUsersContainer.find('.event_inviteUsers_container_selection');\r\n var $inviteUsersCheckbox = $inviteUsersContainer.find('input[name=\"inviteUsersCheckbox\"]');\r\n var $inviteUsersList = $inviteUsersContainer.find('input[name=\"inviteUsersList\"]');\r\n var $settingsContainer = $modal.find('.event_settings_container');\r\n var $settingsColor = $settingsContainer.find('input[name=\"settingsColor\"]');\r\n var $modalFooter = $modal.find('.modal-footer');\r\n $hourAllDayCheckbox.unbind().change(function(){\r\n var $that = $(this);\r\n if($that.is(':checked')){\r\n $hoursContainerSelection.hide();\r\n }else{\r\n var $fromHour = $hoursContainerFromHour.data('value') != '' ? moment($hoursContainerFromHour.data('value'), 'YYYY-MM-DD HH:mm:ss') : $now.clone();\r\n $hoursContainerFromHour.datetimepicker({\r\n defaultDate: $fromHour,\r\n format: 'LT'\r\n });\r\n var $toHour = $hoursContainerFromHour.data('value') != '' ? moment($hoursContainerToHour.data('value'), 'YYYY-MM-DD HH:mm:ss') : $now.clone().add(1,'hour');\r\n $hoursContainerToHour.datetimepicker({\r\n defaultDate: $toHour,\r\n format: 'LT',\r\n });\r\n $hoursContainerSelection.show();\r\n }\r\n });\r\n if($hourAllDayCheckbox.is(':checked')){\r\n $hoursContainerSelection.hide();\r\n }else{\r\n var $fromHour = $hoursContainerFromHour.data('value') != '' ? moment($hoursContainerFromHour.data('value'), 'YYYY-MM-DD HH:mm:ss') : $now.clone();\r\n $hoursContainerFromHour.datetimepicker({\r\n defaultDate: $fromHour,\r\n format: 'LT',\r\n });\r\n var $toHour = $hoursContainerFromHour.data('value') != '' ? moment($hoursContainerToHour.data('value'), 'YYYY-MM-DD HH:mm:ss') : $now.clone().add(1,'hour');\r\n $hoursContainerToHour.datetimepicker({\r\n defaultDate: $toHour,\r\n format: 'LT',\r\n });\r\n $hoursContainerSelection.show();\r\n }\r\n\r\n $notifyBeforeEventCheckbox.unbind().change(function(){\r\n var $that = $(this);\r\n if($that.is(':checked')){\r\n $notifyContainerSelection.show();\r\n }else{\r\n $notifyContainerSelection.hide();\r\n }\r\n });\r\n if($notifyBeforeEventCheckbox.is(':checked')){\r\n $notifyContainerSelection.show();\r\n }else{\r\n $notifyContainerSelection.hide();\r\n }\r\n\r\n $inviteUsersCheckbox.unbind().change(function(){\r\n var $that = $(this);\r\n if($that.is(':checked')){\r\n $inviteUsersContainerSelection.show();\r\n }else{\r\n $inviteUsersContainerSelection.hide();\r\n }\r\n });\r\n if($inviteUsersCheckbox.is(':checked')){\r\n $inviteUsersContainerSelection.show();\r\n }else{\r\n $inviteUsersContainerSelection.hide();\r\n }\r\n nurseslounge_myDashboard_schedule.colleaguesListAutocomplete($inviteUsersList);\r\n\r\n $settingsColor.paletteColorPicker({\r\n colors: [\r\n \"#00FF00\",\r\n \"#B03060\",\r\n \"#A020F0\",\r\n \"#C0C0C0\",\r\n \"#00FF00\",\r\n \"#FF00FF\",\r\n \"#00FFFF\",\r\n \"#808080\",\r\n \"#008000\",\r\n \"#7F0000\",\r\n \"#7F007F\",\r\n ],\r\n set_background: true,\r\n position: 'downside'\r\n });\r\n\r\n if($settingsColor.val() != ''){\r\n var $settingsColorBackground = $settingsContainer.find('div[data-target=\"settingsColor\"]');\r\n $settingsColorBackground.css('backgroundColor', $settingsColor.val());\r\n }\r\n\r\n $hoursContainer.show();\r\n $notifyContainer.show();\r\n $inviteUsersContainer.show();\r\n $settingsContainer.show();\r\n $modalFooter.show();\r\n },\r\n colleaguesListAutocomplete:function($element){\r\n if($element.length == 0){\r\n return false;\r\n }\r\n var $autocompleteBinding;\r\n var $addAllSuggestionsElm;\r\n try{\r\n var $colleaguesListAutocomplete = libs.memoryGet('myDashboard_schedule_colleagues_list_autocomplete');\r\n $colleaguesListAutocomplete.destroy();\r\n }catch (e) {\r\n\r\n }\r\n var $tagify = new Tagify($element[0], {\r\n tagTextProp: 'name',\r\n enforceWhitelist: true,\r\n skipInvalid: true,\r\n dropdown: {\r\n closeOnSelect: false,\r\n enabled: 0,\r\n classname: 'users-list',\r\n searchKeys: ['long_name', 'email']\r\n },\r\n whitelist: [],\r\n templates: {\r\n tag: function($tagData){\r\n return \"\" +\r\n \"\" +\r\n \"
    \" +\r\n \"
    \" +\r\n \" \" +\r\n \"
    \" +\r\n \" \"+$tagData.long_name+\"\" +\r\n \"
    \" +\r\n \"
    \";\r\n },\r\n dropdownItem: function($tagData){\r\n return \"
    \" +\r\n $tagData.profile_image_root_friend ?\r\n \"
    \" +\r\n \" $lastWeekOfTheMonth){\r\n $lastWeekOfTheMonth = $weeksInYear;\r\n $lastWeekOfTheMonth = $lastWeekOfTheMonth+1;\r\n $lessYear = 1;\r\n }\r\n for(var $w = $firstWeekOfTheMonth; $w<=($lastWeekOfTheMonth) ; $w++){\r\n var $startOfWeek = $momentDate.clone().week($w).startOf('week');\r\n var $days = [];\r\n for(var $d=0;$d<7;$d++){\r\n var $date = $startOfWeek.clone().subtract($lessYear, 'year').add($d, 'day');\r\n var $day = $date.format('DD');\r\n $day = libs.pad('00',$day,'l');\r\n var $properties = $data && $data.data && $data.data.weeks && $data.data.weeks[$w] && $data.data.weeks[$w][$day] ?\r\n $data.data.weeks[$w][$day] : [];\r\n $days.push([$day, $properties, $date]);\r\n }\r\n $weeks.push([$w, $days]);\r\n }\r\n return $weeks;\r\n },\r\n createCalendarMonth:function($momentDate, $data) {\r\n var $userId = libs.memoryGet('user_id');\r\n var $weeks = nurseslounge_myDashboard_schedule.getWeeks($momentDate, $data);\r\n var $month = $momentDate.clone().format('MM');\r\n var $myCalendar = $(\"#nurseslounge-home-schedule\");\r\n var $viewMonth = $myCalendar.find(\".view-month\");\r\n var $viewWeek = $myCalendar.find(\".view-week\");\r\n $viewWeek.hide();\r\n var $viewDay = $myCalendar.find(\".view-day\");\r\n $viewDay.hide();\r\n var $viewList = $myCalendar.find(\".view-list\");\r\n $viewList.hide();\r\n var $viewMonthThead = $viewMonth.find('.view-month-thead');\r\n var $viewMonthTbody = $viewMonth.find('.view-month-tbody');\r\n var $viewMonthTfoot = $viewMonth.find('.view-month-tfoot');\r\n var $weeksDaysMin = moment.weekdaysMin();\r\n var $chtml = '';\r\n $chtml += '';\r\n $.each($weeksDaysMin, function($i, $v){\r\n $chtml += ''+$v+'';\r\n });\r\n $chtml += '';\r\n $viewMonthThead.html($chtml);\r\n $chtml = '';\r\n var $titleContent = [];\r\n var $titleEventContent = [];\r\n $.each($weeks, function($i, $v){\r\n var $w = $v[0] + 1;\r\n var $week = $v[1];\r\n $chtml += '' +\r\n '';\r\n $.each($week, function($i, $v) {\r\n var $day = $v[0];\r\n var $properties = $v[1];\r\n var $date = $v[2];\r\n var $bgSecondary = $date.format('MM') == $month ? '' : 'bg-secondary';\r\n var $textLight = $date.format('MM') == $month ? '' : 'text-light';\r\n var $isToday = $date.format('MM-DD') == moment().format('MM-DD') ? 'month-today': '';\r\n $chtml += '' +\r\n '' +\r\n ' '+$day+'' +\r\n '
    ';\r\n if($properties.eventsCount > 0){\r\n\r\n var $toolTipHtml = '' +\r\n ' ' +\r\n ' ' +\r\n ' Event' +\r\n ' Title' +\r\n ' Start At' +\r\n ' End At' +\r\n ' ';\r\n ' ';\r\n $.each($properties.events, function($i, $v){\r\n var $title = $v.title.length <= 15 ? $v.title : $v.title.substring(0, 15) + '...';\r\n var $startAt = moment($v.start_at, 'YYYY-MM-DD HH:mm:ss').format('h:mm A');\r\n var $endAt = moment($v.end_at, 'YYYY-MM-DD HH:mm:ss').format('h:mm A');\r\n if($v.period == 'consecutive' && $v.periodRanges.length > 0){\r\n $startAt = $v.periodRanges[$w][$day] ? moment($v.periodRanges[$w][$day].from_date.trace.date.date, 'YYYY-MM-DD HH:mm:ss').format('h:mm A') : $startAt;\r\n $endAt = $v.periodRanges[$w][$day] ? moment($v.periodRanges[$w][$day].to_date.trace.date.date, 'YYYY-MM-DD HH:mm:ss').format('h:mm A') : $endAt;\r\n }\r\n $toolTipHtml += '' +\r\n '' +\r\n ' ' +\r\n ' '+($i+1)+'' +\r\n ' '+$title+'' +\r\n ' '+$startAt+'' +\r\n ' '+$endAt+'' +\r\n ' ' +\r\n '';\r\n });\r\n $toolTipHtml += '';\r\n $toolTipHtml = $toolTipHtml.replace(/\"/g, \"\\\\'\");\r\n $titleContent.push([$w+'_'+$day, $toolTipHtml]);\r\n $chtml += '' +\r\n '
    events '+$properties.eventsCount+'
    ' +\r\n '
    ';\r\n\r\n $.each($properties.events, function($i, $v){\r\n var $toolTipEventHtml = '';\r\n var $key = $v.key;\r\n var $color = $v.color;\r\n $toolTipEventHtml+= nurseslounge_myDashboard_schedule.tableDescription($v);\r\n //$toolTipEventHtml = $toolTipEventHtml.replace(/\"/g, \"\\\\'\");\r\n $titleEventContent.push([$key, $toolTipEventHtml, $color]);\r\n $chtml += '' +\r\n '
    ';\r\n });\r\n $chtml += '' +\r\n '
    ';\r\n }\r\n $chtml += '' +\r\n '
    '+\r\n '';\r\n });\r\n $chtml += '' +\r\n '';\r\n });\r\n $viewMonthTbody.html($chtml).promise().done(function(){\r\n var $clickBinding;\r\n var $holdBinding;\r\n var $template = '' +\r\n '
    ' +\r\n '
    ' +\r\n '
    ';\r\n if(!libs.isMobile()){\r\n $viewMonthTbody.find('.with-tooltip-month-events').each(function () {\r\n var $that = $(this);\r\n $that.unbind();\r\n $that.tooltip({\r\n html: true,\r\n title:function(){\r\n var $wd = $(this).data('wd');\r\n var $text = '';\r\n $.each($titleContent, function($i, $v){\r\n if($wd == $v[0]){\r\n $text = $v[1];\r\n return false;\r\n }\r\n });\r\n return $text;\r\n },\r\n sanitize:false,\r\n trigger: 'hover',\r\n template:$template,\r\n placement:'top'\r\n });\r\n $that.click(function($e){\r\n clearTimeout($clickBinding);\r\n });\r\n });\r\n }\r\n $template = '' +\r\n '
    ' +\r\n '
    ' +\r\n '
    ';\r\n if(!libs.isMobile()){\r\n $viewMonthTbody.find('.with-tooltip-month-event').each(function () {\r\n var $that = $(this);\r\n $that.unbind();\r\n $that.tooltip({\r\n html: true,\r\n title:function(){\r\n var $key = $(this).data('key');\r\n var $text = '';\r\n var $color = '';\r\n $.each($titleEventContent, function($i, $v){\r\n if($key == $v[0]){\r\n $text = $v[1];\r\n $color = $v[2];\r\n return false;\r\n }\r\n });\r\n setTimeout(function(){\r\n $(\".tooltip-month-event .tooltip-inner .event-info-table .event-color\").css('color', $color+' !important');\r\n }, 1);\r\n return $text;\r\n },\r\n offset:0,\r\n sanitize:false,\r\n trigger: 'hover',\r\n template:$template,\r\n placement:'auto'\r\n });\r\n $that.click(function($e){\r\n clearTimeout($clickBinding);\r\n var $key = $that.data('key');\r\n nurseslounge_myDashboard_schedule.getEventModal({key:$key, user_id: $userId});\r\n });\r\n });\r\n }else{\r\n $viewMonthTbody.find('.with-tooltip-month-event').each(function(){\r\n var $key, $keyHelper;\r\n var $that = $(this);\r\n $that.unbind().on('mousedown touchstart', function($e){\r\n $key = $that.data('key');\r\n }).on('mouseup touchend', function ($e) {\r\n $keyHelper = $that.data('key');\r\n //nurseslounge_myDashboard_schedule.getEventModal({key:$key, user_id: $userId});\r\n });\r\n });\r\n }\r\n //Add new event from the calendar month\r\n if(!libs.isMobile()) {\r\n var $from = '';\r\n var $to = '';\r\n var $allTimeDay = 1;\r\n var $available = 1;\r\n var $selection = false;\r\n $viewMonthTbody.find('tr td').unbind().on('mousedown touchstart', function ($e) {\r\n $e.stopPropagation();\r\n $e.preventDefault();\r\n var $that = $(this);\r\n $from = $that.data('date');\r\n $selection = true;\r\n $that.addClass('month-focus-selection');\r\n /*\r\n $holdBinding = setTimeout(function () {\r\n clearTimeout($clickBinding);\r\n nurseslounge_myDashboard_schedule.switchCalendarTo('week', $from);\r\n }, 800);\r\n */\r\n }).on('mousemove touchmove', function ($e) {\r\n $e.stopPropagation();\r\n $e.preventDefault();\r\n var $that = $(this);\r\n $to = $that.data('date');\r\n if ($selection && $to != undefined) {\r\n $viewMonthTbody.find('tr').each(function () {\r\n var $thatTR = $(this);\r\n $thatTR.find('td').each(function () {\r\n var $thatTD = $(this);\r\n if (\r\n moment($from, 'YYYY-MM-DD HH:mm:ss') <= moment($thatTD.data('date'), 'YYYY-MM-DD HH:mm:ss') &&\r\n moment($to, 'YYYY-MM-DD HH:mm:ss') >= moment($thatTD.data('date'), 'YYYY-MM-DD HH:mm:ss')) {\r\n $thatTD.addClass('month-focus-selection');\r\n } else {\r\n $thatTD.removeClass('month-focus-selection');\r\n }\r\n });\r\n });\r\n }\r\n }).on('mouseup touchend', function ($e) {\r\n $e.stopPropagation();\r\n $e.preventDefault();\r\n var $that = $(this);\r\n $to = $that.data('date');\r\n if ($selection) {\r\n $viewMonthTbody.find('.month-focus-selection').removeClass('month-focus-selection');\r\n $selection = false;\r\n $clickBinding = setTimeout(function () {\r\n /*\r\n nurseslounge_myDashboard_schedule.getEventModal({\r\n user_id: $userId,\r\n type: $from == $to ? 'one_time' : 'periodical',\r\n period: $from == $to ? 'consecutive' : 'no_consecutive',\r\n from: $from,\r\n to: $to,\r\n all_time_day: $allTimeDay,\r\n start_at: '',\r\n end_at: '',\r\n available: $available\r\n });\r\n */\r\n }, 800);\r\n }\r\n //clearTimeout($holdBinding);\r\n });\r\n }else{\r\n /*\r\n $viewMonthTbody.find('tr td').unbind().on('mousedown touchstart', function ($e) {\r\n $e.stopPropagation();\r\n $e.preventDefault();\r\n var $that = $(this);\r\n $from = $that.data('date');\r\n $holdBinding = setTimeout(function () {\r\n nurseslounge_myDashboard_schedule.switchCalendarTo('week', $from);\r\n $viewMonthTbody.find('.with-tooltip-month-event').unbind('mouseup touchend');\r\n }, 800);\r\n }).on('mouseup touchend', function ($e) {\r\n clearTimeout($holdBinding);\r\n });\r\n */\r\n }\r\n });\r\n $viewMonth.show();\r\n },\r\n createCalendarWeek:function($momentDate, $data){\r\n var $userId = libs.memoryGet('user_id');\r\n var $weeks = nurseslounge_myDashboard_schedule.getWeeks($momentDate, $data);\r\n var $week = $momentDate.clone().week();\r\n var $day = $momentDate.clone().format('DD');\r\n $day = libs.pad('00',$day,'l');\r\n var $currentWeek = $weeks.filter(function($v){\r\n return $v[0] == $week;\r\n })[0];\r\n var $currentDay = $currentWeek[1].filter(function($v){\r\n return $v[0] == $day;\r\n })[0];\r\n var $myCalendar = $(\"#nurseslounge-home-schedule\");\r\n var $viewMonth = $myCalendar.find(\".view-month\");\r\n $viewMonth.hide();\r\n var $viewWeek = $myCalendar.find(\".view-week\");\r\n var $viewDay = $myCalendar.find(\".view-day\");\r\n $viewDay.hide();\r\n var $viewList = $myCalendar.find(\".view-list\");\r\n $viewList.hide();\r\n var $viewWeekThead = $viewWeek.find('.view-week-thead');\r\n var $viewWeekTbody = $viewWeek.find('.view-week-tbody');\r\n var $weeksDaysMin = moment.weekdaysMin();\r\n $weeksDaysMin.unshift('         ');\r\n var $chtml = '';\r\n $chtml += '';\r\n var $titleContent = [];\r\n var $titleEventContent = [];\r\n var $clickBinding;\r\n var $holdBinding;\r\n $.each($weeksDaysMin, function($i, $v){\r\n var $content = $v;\r\n var $properties = $i != 0 ? $currentWeek[1][$i - 1][1] : null;\r\n if($properties){\r\n var $w = $properties.trace.week.W;\r\n var $day = $properties.trace.day.d;\r\n var $toolTipHtml = '' +\r\n '' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ';\r\n ' ';\r\n $.each($properties.events, function($i, $v){\r\n var $title = $v.title.length <= 15 ? $v.title : $v.title.substring(0, 15) + '...';\r\n var $startAt = moment($v.start_at, 'YYYY-MM-DD HH:mm:ss').format('h:mm A');\r\n var $endAt = moment($v.end_at, 'YYYY-MM-DD HH:mm:ss').format('h:mm A');\r\n if($v.period == 'consecutive' && $v.periodRanges.length > 0){\r\n $startAt = $v.periodRanges[$w][$day] ? moment($v.periodRanges[$w][$day].from_date.trace.date.date, 'YYYY-MM-DD HH:mm:ss').format('h:mm A') : $startAt;\r\n $endAt = $v.periodRanges[$w][$day] ? moment($v.periodRanges[$w][$day].to_date.trace.date.date, 'YYYY-MM-DD HH:mm:ss').format('h:mm A') : $endAt;\r\n }\r\n $toolTipHtml += '' +\r\n '' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n '';\r\n });\r\n $toolTipHtml += '
    EventTitleStart AtEnd At
    '+($i+1)+''+$title+''+$startAt+''+$endAt+'
    ';\r\n $toolTipHtml = $toolTipHtml.replace(/\"/g, \"\\\\'\");\r\n $titleContent.push([$w+'_'+$day, $toolTipHtml]);\r\n }\r\n $chtml += '' +\r\n '' +\r\n '
    '+$content+'
    ';\r\n if($properties && $properties.eventsCount > 0) {\r\n $chtml += '
    events '+$properties.eventsCount+'
    ';\r\n }\r\n $chtml += '' +\r\n '';\r\n });\r\n $chtml += '';\r\n var $before = false;\r\n $.each($weeksDaysMin, function($i, $v){\r\n var $content = $i != 0 ? $currentWeek[1][$i - 1][0] : $v;\r\n var $class = 'before';\r\n if($before){\r\n $class = 'after';\r\n }\r\n $chtml += '' +\r\n '' +\r\n ' '+$content+'' +\r\n '';\r\n if($currentDay[0] == $content){\r\n $before = true;\r\n }\r\n });\r\n $chtml += '';\r\n $viewWeekThead.html($chtml).promise().done(function(){\r\n var $template = '' +\r\n '
    ' +\r\n '
    ' +\r\n '
    ';\r\n if(!libs.isMobile()){\r\n $viewWeekThead.find('.with-tooltip-week-events').each(function () {\r\n var $that = $(this);\r\n $that.unbind();\r\n $that.tooltip({\r\n html: true,\r\n title:function(){\r\n var $wd = $(this).data('wd');\r\n var $text = '';\r\n $.each($titleContent, function($i, $v){\r\n if($wd == $v[0]){\r\n $text = $v[1];\r\n return false;\r\n }\r\n });\r\n return $text;\r\n },\r\n sanitize:false,\r\n trigger: 'hover',\r\n template:$template,\r\n placement:'bottom'\r\n });\r\n $that.click(function($e){\r\n clearTimeout($clickBinding);\r\n });\r\n });\r\n }\r\n });\r\n $chtml = '';\r\n for(var $halfHour = 0; $halfHour < 48; $halfHour++){\r\n var $hours = Math.floor($halfHour/2);\r\n var $min = (($halfHour+1)%2) > 0 ? '00' : '30';\r\n var $time = moment($hours + ' ' +$min, 'HH mm');\r\n $chtml += '' +\r\n '' +\r\n ' ' +\r\n '
    ' +\r\n $time.clone().format('hh:mm a') +\r\n '
    ' +\r\n ' ';\r\n\r\n $.each($currentWeek[1], function($i, $v){\r\n var $now = moment();\r\n var $properties = $v[1];\r\n var $date = $v[2];\r\n var $dateHtml = $hours+' '+$min+' '+$date.format('DD MM YYYY');\r\n var $startOfDay = moment('00 00 00 '+$date.format('DD MM YYYY'), 'HH mm ss DD MM YYYY');\r\n var $endOfDay = moment('23 59 59 '+$date.format('DD MM YYYY'), 'HH mm ss DD MM YYYY');\r\n var $from = moment($dateHtml, 'HH mm DD MM YYYY');\r\n var $to = $from.clone().add(30, 'minutes');\r\n var $dayRange = moment().range($startOfDay, $endOfDay);\r\n var $isToday = $dayRange.contains($now) ? 'week-today': '';\r\n var $timeRange = moment().range($from, $to);\r\n var $isNow = $timeRange.contains($now) ? 'active': '';\r\n var $diffInMinutes = $now.diff($from, 'minutes');\r\n var $top = (parseInt($diffInMinutes)*2);\r\n $chtml += '' +\r\n ' '+\r\n '
    ';\r\n if($properties.eventsCount > 0){\r\n $.each($properties.events, function($i, $v){\r\n var $toolTipEventHtml = '';\r\n var $key = $v.key;\r\n var $color = $v.color;\r\n $toolTipEventHtml+= nurseslounge_myDashboard_schedule.tableDescription($v);\r\n //$toolTipEventHtml = $toolTipEventHtml.replace(/\"/g, \"\\\\'\");\r\n $titleEventContent.push([$key, $toolTipEventHtml, $color]);\r\n var $w = $properties.trace.week.W;\r\n var $day = $properties.trace.day.d;\r\n var $startAt = moment($v.start_at, 'YYYY-MM-DD HH:mm:ss');\r\n var $endAt = moment($v.end_at, 'YYYY-MM-DD HH:mm:ss');\r\n if($v.type == 'periodical'){\r\n if($v.period != 'consecutive' && $v.periodRanges.length > 0){\r\n $startAt = $v.periodRanges[$w][$day] ? moment($v.periodRanges[$w][$day].from_date.trace.date.date, 'YYYY-MM-DD HH:mm:ss') : $startAt;\r\n $endAt = $v.periodRanges[$w][$day] ? moment($v.periodRanges[$w][$day].to_date.trace.date.date, 'YYYY-MM-DD HH:mm:ss') : $endAt;\r\n }\r\n }\r\n var $range = moment().range($startAt, $endAt);\r\n if($range.contains($from)) {\r\n $chtml += '' +\r\n '
    ';\r\n }\r\n });\r\n }\r\n $chtml += '' +\r\n ' ';\r\n\r\n });\r\n $chtml += '' +\r\n '';\r\n }\r\n $viewWeekTbody.html($chtml).promise().done(function(){\r\n var $template = '' +\r\n '
    ' +\r\n '
    ' +\r\n '
    ';\r\n if(!libs.isMobile()){\r\n $viewWeekTbody.find('.with-tooltip-week-event').each(function () {\r\n var $that = $(this);\r\n $that.unbind();\r\n $that.tooltip({\r\n html: true,\r\n title:function(){\r\n var $key = $(this).data('key');\r\n var $text = '';\r\n var $color = '';\r\n $.each($titleEventContent, function($i, $v){\r\n if($key == $v[0]){\r\n $text = $v[1];\r\n $color = $v[2];\r\n return false;\r\n }\r\n });\r\n setTimeout(function(){\r\n $(\".tooltip-month-event .tooltip-inner .event-info-table .event-color\").css('color', $color+' !important');\r\n }, 1);\r\n return $text;\r\n },\r\n offset:0,\r\n sanitize:false,\r\n trigger: 'hover',\r\n template:$template,\r\n placement:'auto'\r\n });\r\n $that.click(function($e){\r\n clearTimeout($clickBinding);\r\n var $key = $that.data('key');\r\n nurseslounge_myDashboard_schedule.getEventModal({key:$key, user_id: $userId});\r\n });\r\n });\r\n }else{\r\n $viewWeekTbody.find('.with-tooltip-week-event').each(function () {\r\n var $key, $keyHelper;\r\n var $that = $(this);\r\n $that.unbind().on('mousedown touchstart', function($e){\r\n $key = $that.data('key');\r\n }).on('mouseup touchend', function ($e) {\r\n $keyHelper = $that.data('key');\r\n //nurseslounge_myDashboard_schedule.getEventModal({key:$key, user_id: $userId});\r\n });\r\n });\r\n }\r\n //Add new event from the calendar week\r\n if(!libs.isMobile()) {\r\n var $from = '';\r\n var $to = '';\r\n var $available = 1;\r\n var $selection = false;\r\n var $dayHelper = [];\r\n var $senseY;\r\n var $senseX;\r\n var $sense;\r\n $viewWeekTbody.find('tr td').unbind().on('mousedown touchstart', function($e){\r\n $e.stopPropagation();\r\n $e.preventDefault();\r\n var $that = $(this);\r\n $dayHelper.length = 0;\r\n $from = $that.data('from');\r\n $to = $that.data('to');\r\n if($to != undefined) {\r\n $that.addClass('week-focus-selection');\r\n $dayHelper.push(moment($that.data('to'), 'YYYY-MM-DD HH:mm:ss'));\r\n $selection = true;\r\n $senseY = true;\r\n $senseX = true;\r\n }\r\n /*\r\n $holdBinding = setTimeout(function(){\r\n clearTimeout($clickBinding);\r\n nurseslounge_myDashboard_schedule.switchCalendarTo('day', $from);\r\n }, 800);\r\n */\r\n }).on('mousemove touchmove', function($e){\r\n $e.stopPropagation();\r\n $e.preventDefault();\r\n var $that = $(this);\r\n $to = $that.data('to');\r\n if($selection && $to != undefined){\r\n if($dayHelper.length >= 2){\r\n var $currentDay = $dayHelper[0].format('DD');\r\n var $toDay = moment($to, 'YYYY-MM-DD HH:mm:ss').format('DD');\r\n var $currentHour = $dayHelper[0].format('HH:mm:ss');\r\n var $toHour = moment($to, 'YYYY-MM-DD HH:mm:ss').format('HH:mm:ss');\r\n $sense = $dayHelper[0].format('DD') == $dayHelper[1].format('DD') ? 'y' : 'x';\r\n if($sense == 'y' && $senseY){\r\n $senseX = false;\r\n if(\r\n $currentDay == $toDay &&\r\n moment($currentHour, 'HH:mm:ss')\r\n <=\r\n moment($toHour, 'HH:mm:ss')\r\n ){\r\n $that.addClass('week-focus-selection');\r\n }\r\n $viewWeekTbody.find('.week-focus-selection').each(function(){\r\n var $toHourHelper = moment($(this).data('to'), 'YYYY-MM-DD HH:mm:ss').format('HH:mm:ss');\r\n if(\r\n moment($toHour, 'HH:mm:ss')\r\n <\r\n moment($toHourHelper, 'HH:mm:ss')\r\n ){\r\n $that.removeClass('week-focus-selection');\r\n }\r\n });\r\n }\r\n if($sense == 'x' && $senseX){\r\n $senseY = false;\r\n if(\r\n $currentHour == $toHour &&\r\n (parseInt($dayHelper[0].format('DDD')) * parseInt($dayHelper[0].format('YYYY')))\r\n <=\r\n (parseInt(moment($to, 'YYYY-MM-DD HH:mm:ss').format('DDD')) * parseInt(moment($to, 'YYYY-MM-DD HH:mm:ss').format('YYYY')))\r\n ){\r\n $that.addClass('week-focus-selection');\r\n }\r\n $viewWeekTbody.find('.week-focus-selection').each(function(){\r\n var $toDayHelper = parseInt(moment($(this).data('to'), 'YYYY-MM-DD HH:mm:ss').format('DDD')) * parseInt(moment($(this).data('to'), 'YYYY-MM-DD HH:mm:ss').format('YYYY'));\r\n if(\r\n (parseInt(moment($to, 'YYYY-MM-DD HH:mm:ss').format('DDD')) * parseInt(moment($to, 'YYYY-MM-DD HH:mm:ss').format('YYYY')))\r\n <\r\n $toDayHelper\r\n ){\r\n $that.removeClass('week-focus-selection');\r\n }\r\n });\r\n }\r\n }else{\r\n var $newDate = moment($to, 'YYYY-MM-DD HH:mm:ss');\r\n $.each($dayHelper, function($i, $v){\r\n if($v < $newDate){\r\n $dayHelper.push($newDate);\r\n $that.addClass('week-focus-selection');\r\n return false;\r\n }\r\n });\r\n }\r\n }\r\n }).on('mouseup touchend', function($e){\r\n $e.stopPropagation();\r\n $e.preventDefault();\r\n var $that = $(this);\r\n var $eventsOfDate = $that.data('from');\r\n $to = $that.data('to');\r\n if($selection){\r\n $dayHelper.length = 0;\r\n $viewWeekTbody.find('.week-focus-selection').removeClass('week-focus-selection');\r\n $selection = false;\r\n $clickBinding = setTimeout(function(){\r\n /*\r\n nurseslounge_myDashboard_schedule.getEventModal({\r\n user_id: $userId,\r\n type: $sense == 'y' ? 'one_time' : 'periodical',\r\n period: $sense == 'y' ? 'consecutive': 'no_consecutive',\r\n from: $from,\r\n to: $to,\r\n all_time_day:0,\r\n start_at: $from,\r\n end_at: $to,\r\n available:$available\r\n });\r\n */\r\n }, 800);\r\n }\r\n //clearTimeout($holdBinding);\r\n });\r\n }else{\r\n /*\r\n $viewWeekTbody.find('tr td').unbind().on('mousedown touchstart', function ($e) {\r\n $e.stopPropagation();\r\n $e.preventDefault();\r\n var $that = $(this);\r\n $from = $that.data('from');\r\n $holdBinding = setTimeout(function () {\r\n nurseslounge_myDashboard_schedule.switchCalendarTo('day', $from);\r\n $viewWeekTbody.find('.with-tooltip-week-event').unbind('mouseup touchend');\r\n }, 800);\r\n }).on('mouseup touchend', function ($e) {\r\n clearTimeout($holdBinding);\r\n });\r\n */\r\n }\r\n });\r\n $viewWeek.show();\r\n },\r\n createCalendarDay:function($momentDate, $data){\r\n var $userId = libs.memoryGet('user_id');\r\n var $weeks = nurseslounge_myDashboard_schedule.getWeeks($momentDate, $data);\r\n var $week = $momentDate.clone().week();\r\n var $day = $momentDate.clone().format('DD');\r\n $day = libs.pad('00',$day,'l');\r\n var $currentWeek = $weeks.filter(function($v){\r\n return $v[0] == $week;\r\n })[0];\r\n var $currentDay = $currentWeek[1].filter(function($v){\r\n return $v[0] == $day;\r\n })[0];\r\n var $myCalendar = $(\"#nurseslounge-home-schedule\");\r\n var $viewMonth = $myCalendar.find(\".view-month\");\r\n $viewMonth.hide();\r\n var $viewWeek = $myCalendar.find(\".view-week\");\r\n $viewWeek.hide();\r\n var $viewDay = $myCalendar.find(\".view-day\");\r\n var $viewList = $myCalendar.find(\".view-list\");\r\n $viewList.hide();\r\n var $viewDayThead = $viewDay.find('.view-day-thead');\r\n var $viewDayTbody = $viewDay.find('.view-day-tbody');\r\n var $chtml = '';\r\n $chtml += '';\r\n var $titleContent = [];\r\n var $titleEventContent = [];\r\n var $clickBinding;\r\n var $holdBinding;\r\n for(var $i = 0; $i<=1 ; $i++) {\r\n var $content = $i == 0 ? '         ' : $currentDay[$i].trace.day.l + ' - ' + $currentDay[$i].trace.day.d;\r\n var $width = $i == 0 ? 'w-week' : 'w-100';\r\n var $properties = $i != 0 ? $currentDay[$i] : null;\r\n if ($properties) {\r\n var $w = $properties.trace.week.W;\r\n var $day = $properties.trace.day.d;\r\n var $toolTipHtml = '' +\r\n '' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ';\r\n ' ';\r\n $.each($properties.events, function ($i, $v) {\r\n var $title = $v.title.length <= 15 ? $v.title : $v.title.substring(0, 15) + '...';\r\n var $startAt = moment($v.start_at, 'YYYY-MM-DD HH:mm:ss').format('h:mm A');\r\n var $endAt = moment($v.end_at, 'YYYY-MM-DD HH:mm:ss').format('h:mm A');\r\n if ($v.period == 'consecutive' && $v.periodRanges.length > 0) {\r\n $startAt = $v.periodRanges[$w][$day] ? moment($v.periodRanges[$w][$day].from_date.trace.date.date, 'YYYY-MM-DD HH:mm:ss').format('h:mm A') : $startAt;\r\n $endAt = $v.periodRanges[$w][$day] ? moment($v.periodRanges[$w][$day].to_date.trace.date.date, 'YYYY-MM-DD HH:mm:ss').format('h:mm A') : $endAt;\r\n }\r\n $toolTipHtml += '' +\r\n '' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n '';\r\n });\r\n $toolTipHtml += '
    EventTitleStart AtEnd At
    ' + ($i + 1) + '' + $title + '' + $startAt + '' + $endAt + '
    ';\r\n $toolTipHtml = $toolTipHtml.replace(/\"/g, \"\\\\'\");\r\n $titleContent.push([$w + '_' + $day, $toolTipHtml]);\r\n }\r\n $chtml += '' +\r\n '' +\r\n '
    ' +\r\n ' ' + $content + '' +\r\n '
    ';\r\n if ($properties && $properties.eventsCount > 0) {\r\n $chtml += '
    events ' + $properties.eventsCount + '
    ';\r\n }\r\n $chtml += '';\r\n }\r\n $chtml += '';\r\n $viewDayThead.html($chtml).promise().done(function(){\r\n var $template = '' +\r\n '
    ' +\r\n '
    ' +\r\n '
    ';\r\n if(!libs.isMobile()){\r\n $viewDayThead.find('.with-tooltip-day-events').each(function () {\r\n var $that = $(this);\r\n $that.unbind();\r\n $that.tooltip({\r\n html: true,\r\n title:function(){\r\n var $wd = $(this).data('wd');\r\n var $text = '';\r\n $.each($titleContent, function($i, $v){\r\n if($wd == $v[0]){\r\n $text = $v[1];\r\n return false;\r\n }\r\n });\r\n return $text;\r\n },\r\n sanitize:false,\r\n trigger: 'hover',\r\n template:$template,\r\n placement:'bottom'\r\n });\r\n $that.click(function($e){\r\n clearTimeout($clickBinding);\r\n });\r\n });\r\n }\r\n });\r\n $chtml = '';\r\n for(var $halfHour = 0; $halfHour < 48; $halfHour++){\r\n var $hours = Math.floor($halfHour/2);\r\n var $min = (($halfHour+1)%2) > 0 ? '00' : '30';\r\n var $time = moment($hours + ' ' +$min, 'HH mm');\r\n $chtml += '' +\r\n '' +\r\n ' ' +\r\n '
    ' +\r\n $time.clone().format('hh:mm a') +\r\n '
    ' +\r\n ' ';\r\n\r\n var $now = moment();\r\n var $properties = $currentDay[1];\r\n var $date = $currentDay[2];\r\n var $dateHtml = $hours+' '+$min+' '+$date.format('DD MM YYYY');\r\n var $startOfDay = moment('00 00 00 '+$date.format('DD MM YYYY'), 'HH mm ss DD MM YYYY');\r\n var $endOfDay = moment('23 59 59 '+$date.format('DD MM YYYY'), 'HH mm ss DD MM YYYY');\r\n var $from = moment($dateHtml, 'HH mm DD MM YYYY');\r\n var $to = $from.clone().add(30, 'minutes');\r\n var $dayRange = moment().range($startOfDay, $endOfDay);\r\n var $isToday = $dayRange.contains($now) ? 'day-today': '';\r\n var $timeRange = moment().range($from, $to);\r\n var $isNow = $timeRange.contains($now) ? 'active': '';\r\n var $diffInMinutes = $now.diff($from, 'minutes');\r\n var $top = (parseInt($diffInMinutes)*2);\r\n $chtml += '' +\r\n ' '+\r\n '
    ';\r\n if($properties.eventsCount > 0){\r\n $.each($properties.events, function($i, $v){\r\n var $toolTipEventHtml = '';\r\n var $type = $v.type;\r\n var $by = '';\r\n switch($type){\r\n case 'one_time':\r\n $type = 'One time event';\r\n break;\r\n case 'periodical':\r\n $type = 'Periodical';\r\n break;\r\n case 'consecutive':\r\n $type = 'Consecutive';\r\n break;\r\n case 'no_consecutive':\r\n $type = 'No Consecutive';\r\n break;\r\n case 'weekly':\r\n $type = 'Weekly';\r\n break;\r\n case 'monthly':\r\n $type = 'Monthly';\r\n break;\r\n }\r\n if($v.owner_system == 1){\r\n $by = 'Nurses Lounge';\r\n }\r\n if($v.ownerUser && $v.ownerUser.email){\r\n $by = $v.ownerUser.long_name;\r\n }\r\n if($v.ownerLounge && $v.ownerLounge.name){\r\n $by = $v.ownerLounge.name;\r\n }\r\n var $title = $v.title;\r\n $title = $title.length > 20 ? $title.substring(0, 20) + '...' : $title;\r\n //var $name = $v.name;\r\n //$name = $name.length > 20 ? $name.substring(0, 20) + '...' : $name;\r\n //var $description = $v.description;\r\n //$description = $description.length > 30 ? $description.substring(0, 30) + '...' : $description;\r\n //var $image;\r\n //if($v.owner_system == 1){\r\n // $image = '/bimg/Login/small-logo.jpeg';\r\n //}\r\n //if($v.ownerUser && $v.ownerUser.email){\r\n // $image = $v.ownerUser.profile_image_root_friend+'?resize=65';\r\n //}\r\n //if($v.ownerLounge && $v.ownerLounge.name){\r\n // $image = $v.ownerLounge.logo_root_lounge+'?resize=65';\r\n //}\r\n var $key = $v.key;\r\n var $color = $v.color;\r\n $toolTipEventHtml+= nurseslounge_myDashboard_schedule.tableDescription($v);\r\n //$toolTipEventHtml = $toolTipEventHtml.replace(/\"/g, \"\\\\'\");\r\n $titleEventContent.push([$key, $toolTipEventHtml, $color]);\r\n var $w = $properties.trace.week.W;\r\n var $day = $properties.trace.day.d;\r\n var $startAt = moment($v.start_at, 'YYYY-MM-DD HH:mm:ss');\r\n var $endAt = moment($v.end_at, 'YYYY-MM-DD HH:mm:ss');\r\n if($v.type == 'periodical'){\r\n if($v.period != 'consecutive' && $v.periodRanges.length > 0){\r\n $startAt = $v.periodRanges[$w][$day] ? moment($v.periodRanges[$w][$day].from_date.trace.date.date, 'YYYY-MM-DD HH:mm:ss') : $startAt;\r\n $endAt = $v.periodRanges[$w][$day] ? moment($v.periodRanges[$w][$day].to_date.trace.date.date, 'YYYY-MM-DD HH:mm:ss') : $endAt;\r\n }\r\n }\r\n var $fontColor;\r\n switch($color.toUpperCase()){\r\n case '#00FF00':\r\n $fontColor = '#46565f';\r\n break;\r\n case '#B03060':\r\n $fontColor = '#cccccc';\r\n break;\r\n case '#A020F0':\r\n $fontColor = '#f1f1f1';\r\n break;\r\n case '#C0C0C0':\r\n $fontColor = '#000000';\r\n break;\r\n case '#FF00FF':\r\n $fontColor = '#ffffff';\r\n break;\r\n case '#00FFFF':\r\n $fontColor = '#46565f';\r\n break;\r\n case '#808080':\r\n $fontColor = '#f1f1f1';\r\n break;\r\n case '#008000':\r\n $fontColor = '#f1f1f1';\r\n break;\r\n case '#7F0000':\r\n $fontColor = '#f1f1f1';\r\n break;\r\n case '#7F007F':\r\n $fontColor = '#f1f1f1';\r\n break;\r\n }\r\n var $range = moment().range($startAt, $endAt);\r\n if($range.contains($from)) {\r\n $chtml += '' +\r\n '
    ' +\r\n //'
    ' +\r\n //' ' +\r\n //'
    ' +\r\n '
    ' +\r\n ' '+ $type + ' by ' + $by + ' - ' + $title + ' from ' + $v.start_at +' to ' + $v.end_at + ' ' +\r\n '
    ' +\r\n //'
    ' +\r\n //' '+$description+'' +\r\n //'
    ' +\r\n '
    ';\r\n }\r\n });\r\n }\r\n $chtml += '' +\r\n ' '+\r\n '';\r\n }\r\n $viewDayTbody.html($chtml).promise().done(function(){\r\n var $template = '' +\r\n '
    ' +\r\n '
    ' +\r\n '
    ';\r\n if(!libs.isMobile()){\r\n $viewDayTbody.find('.with-tooltip-day-event').each(function () {\r\n var $that = $(this);\r\n $that.unbind();\r\n $that.tooltip({\r\n html: true,\r\n title:function(){\r\n var $key = $(this).data('key');\r\n var $text = '';\r\n var $color = '';\r\n $.each($titleEventContent, function($i, $v){\r\n if($key == $v[0]){\r\n $text = $v[1];\r\n $color = $v[2];\r\n return false;\r\n }\r\n });\r\n setTimeout(function(){\r\n $(\".tooltip-month-event .tooltip-inner .event-info-table .event-color\").css('color', $color+' !important');\r\n }, 1);\r\n return $text;\r\n },\r\n offset:0,\r\n sanitize:false,\r\n trigger: 'hover',\r\n template:$template,\r\n placement:'auto'\r\n });\r\n $that.click(function($e){\r\n clearTimeout($clickBinding);\r\n var $key = $that.data('key');\r\n nurseslounge_myDashboard_schedule.getEventModal({key:$key, user_id: $userId});\r\n });\r\n });\r\n }else{\r\n $viewDayTbody.find('.with-tooltip-day-event').each(function(){\r\n var $key, $keyHelper;\r\n var $that = $(this);\r\n $that.unbind().on('mousedown touchstart', function($e){\r\n $key = $that.data('key');\r\n }).on('mouseup touchend', function ($e) {\r\n $keyHelper = $that.data('key');\r\n //nurseslounge_myDashboard_schedule.getEventModal({key:$key, user_id: $userId});\r\n });\r\n });\r\n }\r\n //Add new event from the calendar day\r\n if(!libs.isMobile()){\r\n var $from = '';\r\n var $to = '';\r\n var $available = 1;\r\n var $selection = false;\r\n var $dayHelper = [];\r\n var $senseY;\r\n var $senseX;\r\n var $sense;\r\n $viewDayTbody.find('tr td').unbind().on('mousedown touchstart', function($e){\r\n $e.stopPropagation();\r\n $e.preventDefault();\r\n var $that = $(this);\r\n $dayHelper.length = 0;\r\n $from = $that.data('from');\r\n $to = $that.data('to');\r\n if($to != undefined) {\r\n $that.addClass('week-focus-selection');\r\n $dayHelper.push(moment($that.data('to'), 'YYYY-MM-DD HH:mm:ss'));\r\n $selection = true;\r\n $senseY = true;\r\n $senseX = true;\r\n }\r\n /*\r\n $holdBinding = setTimeout(function(){\r\n clearTimeout($clickBinding);\r\n nurseslounge_myDashboard_schedule.switchCalendarTo('list', $from);\r\n }, 800);\r\n */\r\n }).on('mousemove touchmove', function($e){\r\n $e.stopPropagation();\r\n $e.preventDefault();\r\n var $that = $(this);\r\n $to = $that.data('to');\r\n if($selection && $to != undefined){\r\n if($dayHelper.length >= 2){\r\n var $currentDay = $dayHelper[0].format('DD');\r\n var $toDay = moment($to, 'YYYY-MM-DD HH:mm:ss').format('DD');\r\n var $currentHour = $dayHelper[0].format('HH:mm:ss');\r\n var $toHour = moment($to, 'YYYY-MM-DD HH:mm:ss').format('HH:mm:ss');\r\n $sense = $dayHelper[0].format('DD') == $dayHelper[1].format('DD') ? 'y' : 'x';\r\n if($sense == 'y' && $senseY){\r\n $senseX = false;\r\n if(\r\n $currentDay == $toDay &&\r\n moment($currentHour, 'HH:mm:ss')\r\n <=\r\n moment($toHour, 'HH:mm:ss')\r\n ){\r\n $that.addClass('week-focus-selection');\r\n }\r\n $viewDayTbody.find('.week-focus-selection').each(function(){\r\n var $toHourHelper = moment($(this).data('to'), 'YYYY-MM-DD HH:mm:ss').format('HH:mm:ss');\r\n if(\r\n moment($toHour, 'HH:mm:ss')\r\n <\r\n moment($toHourHelper, 'HH:mm:ss')\r\n ){\r\n $that.removeClass('week-focus-selection');\r\n }\r\n });\r\n }\r\n }else{\r\n var $newDate = moment($to, 'YYYY-MM-DD HH:mm:ss');\r\n $.each($dayHelper, function($i, $v){\r\n if($v < $newDate){\r\n $dayHelper.push($newDate);\r\n $that.addClass('week-focus-selection');\r\n return false;\r\n }\r\n });\r\n }\r\n }\r\n }).on('mouseup touchend', function($e){\r\n $e.stopPropagation();\r\n $e.preventDefault();\r\n var $that = $(this);\r\n $to = $that.data('to');\r\n if($selection){\r\n $dayHelper.length = 0;\r\n $viewDayTbody.find('.week-focus-selection').removeClass('week-focus-selection');\r\n $selection = false;\r\n $clickBinding = setTimeout(function(){\r\n /*\r\n nurseslounge_myDashboard_schedule.getEventModal({\r\n user_id: $userId,\r\n type: 'one_time',\r\n period: 'consecutive',\r\n from: $from,\r\n to: $to,\r\n all_time_day:0,\r\n start_at: $from,\r\n end_at: $to,\r\n available:$available\r\n });\r\n */\r\n }, 800);\r\n }\r\n //clearTimeout($holdBinding);\r\n });\r\n }else{\r\n /*\r\n $viewDayTbody.find('tr td').unbind().on('mousedown touchstart', function ($e) {\r\n $e.stopPropagation();\r\n $e.preventDefault();\r\n var $that = $(this);\r\n $from = $that.data('from');\r\n $holdBinding = setTimeout(function () {\r\n nurseslounge_myDashboard_schedule.switchCalendarTo('list', $from);\r\n $viewDayTbody.find('.with-tooltip-day-event').unbind('mouseup touchend');\r\n }, 800);\r\n }).on('mouseup touchend', function ($e) {\r\n clearTimeout($holdBinding);\r\n });\r\n */\r\n }\r\n });\r\n $viewDay.show();\r\n },\r\n switchCalendarTo:function($selectedView, $date){\r\n var $userId = libs.memoryGet('user_id');\r\n var $myCalendar = $(\"#nurseslounge-home-schedule\");\r\n var $timeZone = $myCalendar.find(\".time-zone\");\r\n var $area = $timeZone.data('area');\r\n var $params = $.extend({}, {user_id:$userId, area:$area});\r\n var $selectedDate = moment($date, 'YYYY-MM-DD HH:mm:ss');\r\n switch ($selectedView) {\r\n case 'month':{\r\n $params = $.extend({}, $params, {month:$selectedDate.clone().startOf('month').format('DD-MM-YYYY')});\r\n break;\r\n }\r\n case 'week':{\r\n $params = $.extend({}, $params, {week:$selectedDate.clone().startOf('week').format('DD-MM-YYYY')});\r\n break;\r\n }\r\n case 'day':{\r\n $params = $.extend({}, $params, {week:$selectedDate.clone().startOf('week').format('DD-MM-YYYY')});\r\n break;\r\n }\r\n case 'list':{\r\n $params = $.extend({}, $params, {week:$selectedDate.clone().startOf('week').format('DD-MM-YYYY')});\r\n break;\r\n }\r\n }\r\n nurseslounge_myDashboard_schedule.get($params, function($data){\r\n nurseslounge_myDashboard_schedule.createCalendar($selectedView, $selectedDate.clone(), $data);\r\n });\r\n nurseslounge_myDashboard_schedule.selectedView = $selectedView;\r\n },\r\n tableDescription:function($v){\r\n var $title = $v.title;\r\n var $description = $v.description;\r\n var $link = $v.link ? 'Yes' : 'No';\r\n var $allTimeDay = $v.all_time_day === 1;\r\n var $fromDay = moment($v.from, 'YYYY-MM-DD HH:mm:ss').format('MM/DD/YYYY');\r\n var $toDay = moment($v.to, 'YYYY-MM-DD HH:mm:ss').format('MM/DD/YYYY');\r\n var $fromHour = moment($v.start_at, 'YYYY-MM-DD HH:mm:ss').format('h:mm A');\r\n var $toHour = moment($v.end_at, 'YYYY-MM-DD HH:mm:ss').format('h:mm A');\r\n var $include = $v.include;\r\n $include = $include ? $include.charAt(0).toUpperCase() + $include.slice(1) : null;\r\n var $days = $v.days;\r\n $days = $days ? $days.split(',').join(', ') : '';\r\n\r\n var $chtml = '' +\r\n '
    ' +\r\n '
    ';\r\n\r\n /*Top Window Init*/\r\n $chtml +='' +\r\n '
    ';\r\n if($v.owner_system == 1){\r\n $chtml +='' +\r\n '
    ' +\r\n ' ' +\r\n '
    ' +\r\n '
    ' +\r\n '

    Nurses Lounge

    ' +\r\n '
    ';\r\n }\r\n if($v.ownerUser && $v.ownerUser.email){\r\n $chtml +='' +\r\n '
    ' +\r\n ' ' +\r\n '
    ' +\r\n '
    ' +\r\n '

    '+$v.ownerUser.long_name+'

    ' +\r\n //'

    '+$v.ownerUser.email+'

    ' +\r\n '
    '+$v.ownerUser.profile.profile+'
    ' +\r\n '
    ';\r\n }\r\n if($v.ownerLounge && $v.ownerLounge.name){\r\n $chtml +='' +\r\n '
    ' +\r\n ' ' +\r\n '
    ' +\r\n '
    ' +\r\n '

    '+$v.ownerLounge.name+'

    ' +\r\n '
    '+$v.ownerLounge.lounge_type.type+'
    ' +\r\n '
    ';\r\n }\r\n $chtml += '' +\r\n '
    ' +\r\n '
    ' +\r\n '
    ';\r\n /*Top Window End*/\r\n /*Top Window Table Init*/\r\n $chtml+= '' +\r\n '' +\r\n '';\r\n\r\n $chtml+= '' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ';\r\n if($v.type == 'one_time'){\r\n $chtml+= '' +\r\n //' ' +\r\n //' ' +\r\n //' ' +\r\n //' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ';\r\n if($allTimeDay){\r\n $chtml+= '' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ';\r\n }else{\r\n $chtml+= '' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ';\r\n }\r\n }\r\n if($v.type == 'periodical'){\r\n //$chtml+= '' +\r\n // ' ' +\r\n // ' ' +\r\n // ' ' +\r\n // ' ';\r\n if($v.period == 'consecutive'){\r\n $chtml+= '' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ';\r\n if($allTimeDay){\r\n $chtml+= '' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' '+\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ';\r\n }else{\r\n $chtml+= '' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ';\r\n }\r\n }\r\n if($v.period == 'no_consecutive'){\r\n $chtml+= '' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ';\r\n if($allTimeDay){\r\n $chtml+= '' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ';\r\n }else{\r\n $chtml+= '' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ';\r\n }\r\n }\r\n if($v.period == 'weekly'){\r\n $chtml+= '' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ';\r\n if($allTimeDay){\r\n $chtml+= '' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ';\r\n }else{\r\n $chtml+= '' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ';\r\n }\r\n }\r\n if($v.period == 'monthly'){\r\n $chtml+= '' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ';\r\n if($allTimeDay){\r\n $chtml+= '' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ';\r\n }else{\r\n $chtml+= '' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ';\r\n }\r\n }\r\n }\r\n $chtml+= '' +\r\n ''+\r\n '
    Title'+$title+'
    Description'+$description+'
    Link'+$link+'
    Event TypeOne time event
    Event Day'+$fromDay+'
    ScheduleAll Day
    Schedule'+$fromHour+' to '+$toHour+'
    Event TypePeriodical
    PeriodOne-time event
    Duration'+$fromDay+' to '+$toDay+'
    ScheduleAll Day
    Duration'+$fromDay+' '+$fromHour+'\\n to \\n'+$toDay+' '+$toHour+'
    PeriodNo Consecutive
    Duration'+$fromDay+' to '+$toDay+'
    ScheduleAll Day
    Duration'+$fromDay+' to '+$toDay+'
    Schedule'+$fromHour+' to '+$toHour+'
    PeriodReoccurring event
    Duration'+$fromDay+' to '+$toDay+'
    ScheduleAll Day
    '+$include+''+$days+'
    Duration'+$fromDay+' to '+$toDay+'
    Schedule'+$fromHour+' to '+$toHour+'
    '+$include+''+$days+'
    PeriodMonthly
    Duration'+$fromDay+' to '+$toDay+'
    ScheduleAll Day
    '+$include+' day(s)'+$days+'
    Duration'+$fromDay+' to '+$toDay+'
    Schedule'+$fromHour+' to '+$toHour+'
    '+$include+' day(s)'+$days+'
    ' +\r\n '
    ' +\r\n '
    ';\r\n return $chtml;\r\n },\r\n createCalendarList:function($momentDate, $data){\r\n var $userId = libs.memoryGet('user_id');\r\n nurseslounge_myDashboard_schedule.tableBorderCSS(0);\r\n var $getEvents = nurseslounge_myDashboard_schedule.getEvents($momentDate, $data);\r\n var $events = $getEvents[0];\r\n var $currentDay = $getEvents[1];\r\n var $myCalendar = $(\"#nurseslounge-home-schedule\");\r\n var $calendar = $myCalendar.find(\".calendar:first\");\r\n var $viewMonth = $myCalendar.find(\".view-month\");\r\n $viewMonth.hide();\r\n var $viewWeek = $myCalendar.find(\".view-week\");\r\n $viewWeek.hide();\r\n var $viewDay = $myCalendar.find(\".view-day\");\r\n $viewDay.hide();\r\n var $viewList = $myCalendar.find(\".view-list\");\r\n var $viewListThead = $viewList.find('.view-list-thead');\r\n var $viewListTbody = $viewList.find('.view-list-tbody');\r\n var $chtml = '';\r\n $chtml += '' +\r\n '' +\r\n ' ' +\r\n ' ' +\r\n $currentDay[1].trace.day.l + ' - ' + $currentDay[1].trace.day.d +\r\n ' ' +\r\n ' ' +\r\n '';\r\n $viewListThead.html($chtml);\r\n $chtml = '';\r\n var $carousel = [];\r\n var $newEvents = 0;\r\n var $oldEvents = 0;\r\n var $isTheNext = false;\r\n for(var $time in $events){\r\n $carousel.push($time);\r\n var $list = $events[$time];\r\n var $currentEvent = moment($time, 'X');\r\n var $now = moment();\r\n var $new = $currentEvent > $now;\r\n if($new){\r\n $isTheNext = $isTheNext == false ? true : false;\r\n var $timelineActive = '';\r\n if($isTheNext){\r\n $timelineActive = 'timeline active';\r\n }\r\n $newEvents++;\r\n $chtml += '' +\r\n '
    ' +\r\n '
    ' +\r\n '
    ';\r\n }else{\r\n $oldEvents++;\r\n $chtml += '' +\r\n '
    ' +\r\n '
    ' +\r\n '
    ';\r\n }\r\n //Carousel\r\n $chtml += '' +\r\n '
    ' +\r\n '
    ';\r\n $.each($list, function($i, $v){\r\n var $listDescription = nurseslounge_myDashboard_schedule.listDescription($v);\r\n var $key = $v.key;\r\n var $active = $i == 0 ? 'active' : '';\r\n $chtml += '' +\r\n '
    ' +\r\n $listDescription +\r\n '
    ';\r\n });\r\n $chtml += '
    ';\r\n if($list.length > 1){\r\n $chtml += '' +\r\n ' ' +\r\n ' ' +\r\n ' Previous' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' Next' +\r\n ' ';\r\n }\r\n $chtml += '
    ';\r\n //Carousel end\r\n $chtml += '
    ' +\r\n '
    ';\r\n if($new) {\r\n $chtml += '' +\r\n '
    ' +\r\n '
    ' +\r\n '
    ';\r\n $.each($list, function($i, $v) {\r\n var $key = $v.key;\r\n var $image;\r\n var $display = $i == 0 ? '' : 'none';\r\n if($v.owner_system == 1){\r\n $image = '/bimg/Login/small-logo.jpeg';\r\n }\r\n if($v.ownerUser && $v.ownerUser.email){\r\n $image = $v.ownerUser.profile_image_root_friend+'?resize=65';\r\n }\r\n if($v.ownerLounge && $v.ownerLounge.name){\r\n $image = $v.ownerLounge.logo_root_lounge+'?resize=65';\r\n }\r\n $chtml += '' +\r\n ' ';\r\n });\r\n $chtml += '' +\r\n '
    ' +\r\n '
    ';\r\n }else{\r\n $chtml += '' +\r\n '
    ' +\r\n '
    ' +\r\n '
    ';\r\n $.each($list, function($i, $v) {\r\n var $key = $v.key;\r\n var $image;\r\n var $display = $i == 0 ? '' : 'none';\r\n if($v.owner_system == 1){\r\n $image = '/bimg/Login/small-logo.jpeg';\r\n }\r\n if($v.ownerUser && $v.ownerUser.email){\r\n $image = $v.ownerUser.profile_image_root_friend+'?resize=65';\r\n }\r\n if($v.ownerLounge && $v.ownerLounge.name){\r\n $image = $v.ownerLounge.logo_root_lounge+'?resize=65';\r\n }\r\n $chtml += '' +\r\n ' ';\r\n });\r\n $chtml += '' +\r\n '
    ' +\r\n '
    ';\r\n }\r\n }\r\n $viewListTbody.html($chtml).promise().done(function(){\r\n var $calendar = $(\"#nurseslounge-home-my-calendar\");\r\n $.each($carousel, function($i, $v){\r\n $('#carousel_'+$v).on('slide.bs.carousel', function ($ev) {\r\n var $active = $($ev.relatedTarget);\r\n var $carousel = $active.data('carousel');\r\n var $key = $active.data('key');\r\n $(\".view-list-tbody-img img[data-carousel='\"+$carousel+\"']\").hide();\r\n $(\".view-list-tbody-img img[data-key='\"+$key+\"']\").fadeIn();\r\n }).carousel({\r\n interval: 6000,\r\n ride:true\r\n });\r\n });\r\n $calendar.find(\".view-list-tbody-img img\").unbind().click(function(){\r\n var $that = $(this);\r\n var $key = $that.data('key');\r\n //nurseslounge_myDashboard_schedule.getEventModal({key:$key, user_id: $userId});\r\n });\r\n $calendar.find(\".carousel-item\").unbind().click(function(){\r\n var $that = $(this);\r\n var $key = $that.data('key');\r\n //nurseslounge_myDashboard_schedule.getEventModal({key:$key, user_id: $userId});\r\n });\r\n libs.checkImageLoad($($chtml).find('img'), function(){\r\n $viewList.show();\r\n //var $top = $viewListThead.offset().top - $calendar.offset().top + $viewListThead.height();\r\n //var $height = $viewListTbody.height() - 10;\r\n //$('style[data=\"nurseslounge-home-my-calendar\"]').remove();\r\n //$('').appendTo('head');\r\n nurseslounge_myDashboard_schedule.createCalendarListClock($newEvents, $oldEvents);\r\n });\r\n });\r\n },\r\n getEvents:function($momentDate, $data){\r\n var $events = [];\r\n var $weeks = nurseslounge_lounge_calendar.getWeeks($momentDate, $data);\r\n var $week = $momentDate.clone().week();\r\n var $day = $momentDate.clone().format('DD');\r\n $day = libs.pad('00',$day,'l');\r\n var $currentWeek = $weeks.filter(function($v){\r\n return $v[0] == $week;\r\n })[0];\r\n var $_w = $currentWeek[0];\r\n var $currentDay = $currentWeek[1].filter(function($v){\r\n return $v[0] == $day;\r\n })[0];\r\n var $_day = $currentDay[0];\r\n var $properties = $currentDay[1];\r\n var $from = $currentDay[2];\r\n var $to = moment($from.format('DD-MM-YYYY') + ' 23:59:59', 'DD-MM-YYYY HH:mm:ss');\r\n $.each($properties.events, function($i, $v){\r\n var $startAt = moment($v.start_at, 'YYYY-MM-DD HH:mm:ss');\r\n var $endAt = moment($v.end_at, 'YYYY-MM-DD HH:mm:ss');\r\n if($v.type == 'periodical'){\r\n if($v.period != 'consecutive' && $v.periodRanges.length > 0){\r\n $startAt = $v.periodRanges[$_w][$_day] ? moment($v.periodRanges[$_w][$_day].from_date.trace.date.date, 'YYYY-MM-DD HH:mm:ss') : $startAt;\r\n $endAt = $v.periodRanges[$_w][$_day] ? moment($v.periodRanges[$_w][$_day].to_date.trace.date.date, 'YYYY-MM-DD HH:mm:ss') : $endAt;\r\n }\r\n }\r\n var $range = moment().range($from, $to);\r\n var $_from = moment($v.from, 'YYYY-MM-DD HH:mm:ss');\r\n if($range.contains($_from)) {\r\n var $unix = $startAt.clone().format('X');\r\n if($events[$unix] == undefined){\r\n $events[$unix] = [];\r\n }\r\n $events[$unix].push($v);\r\n }\r\n });\r\n return [$events, $currentDay];\r\n },\r\n tableBorderCSS:function($classBorder){\r\n $classBorder == undefined ? 1 : $classBorder;\r\n var $myCalendar = $(\"#nurseslounge-home-schedule\");\r\n var $calendarTable = $myCalendar.find(\".view-list .calendar.table:first\");\r\n var $viewListThead = $calendarTable.find('.view-list-thead');\r\n if($calendarTable.hasClass('border')){\r\n if($classBorder == 0){\r\n $calendarTable.removeClass('border');\r\n }\r\n }\r\n if($viewListThead.hasClass('border')){\r\n if($classBorder == 0) {\r\n $viewListThead.removeClass('border');\r\n }\r\n }\r\n },\r\n listDescription:function($v){\r\n var $allTimeDay = $v.all_time_day === 1;\r\n var $fromDay = moment($v.from, 'YYYY-MM-DD HH:mm:ss').format('MM/DD/YYYY');\r\n var $toDay = moment($v.to, 'YYYY-MM-DD HH:mm:ss').format('MM/DD/YYYY');\r\n var $fromHour = moment($v.start_at, 'YYYY-MM-DD HH:mm:ss').format('h:mm A');\r\n var $toHour = moment($v.end_at, 'YYYY-MM-DD HH:mm:ss').format('h:mm A');\r\n var $include = $v.include;\r\n $include = $include ? $include.charAt(0).toUpperCase() + $include.slice(1) : null;\r\n var $days = $v.days;\r\n $days = $days ? $days.split(',').join(', ') : '';\r\n var $color = $v.color;\r\n var $chtml = '' +\r\n '
    ' +\r\n '
    ';\r\n\r\n if($v.owner_system == 1){\r\n $chtml +='' +\r\n '

    Nurses Lounge

    ';\r\n }\r\n if($v.ownerUser && $v.ownerUser.email){\r\n $chtml +='' +\r\n '

    '+$v.ownerUser.long_name+'

    ' +\r\n '
    '+$v.ownerUser.profile.profile+'
    ';\r\n }\r\n if($v.ownerLounge && $v.ownerLounge.name){\r\n $chtml +='' +\r\n '

    '+$v.ownerLounge.name+'

    ' +\r\n '
    '+$v.ownerLounge.lounge_type.type+'
    ';\r\n }\r\n\r\n $chtml +='' +\r\n '
    ' +\r\n '
    '+\r\n ' ' +\r\n ' ';\r\n if($v.type == 'one_time'){\r\n $chtml+= '' +\r\n //' ' +\r\n //' ' +\r\n //' ' +\r\n //' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ';\r\n if($allTimeDay){\r\n $chtml+= '' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ';\r\n }else{\r\n $chtml+= '' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ';\r\n }\r\n }\r\n if($v.type == 'periodical'){\r\n //$chtml+= '' +\r\n //' ' +\r\n //' ' +\r\n //' ' +\r\n //' ';\r\n if($v.period == 'consecutive'){\r\n $chtml+= '' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ';\r\n if($allTimeDay){\r\n $chtml+= '' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' '+\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ';\r\n }else{\r\n $chtml+= '' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ';\r\n }\r\n }\r\n if($v.period == 'no_consecutive'){\r\n $chtml+= '' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ';\r\n if($allTimeDay){\r\n $chtml+= '' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ';\r\n }else{\r\n $chtml+= '' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ';\r\n }\r\n }\r\n if($v.period == 'weekly'){\r\n $chtml+= '' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ';\r\n if($allTimeDay){\r\n $chtml+= '' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ';\r\n }else{\r\n $chtml+= '' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ';\r\n }\r\n }\r\n if($v.period == 'monthly'){\r\n $chtml+= '' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ';\r\n if($allTimeDay){\r\n $chtml+= '' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ';\r\n }else{\r\n $chtml+= '' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ';\r\n }\r\n }\r\n }\r\n $chtml+= '' +\r\n ' '+\r\n '
    Event TypeOne time event
    Event Day'+$fromDay+'
    ScheduleAll Day
    Schedule'+$fromHour+' to '+$toHour+'
    Event TypePeriodical
    PeriodConsecutive
    Duration'+$fromDay+' to '+$toDay+'
    ScheduleAll Day
    Duration'+$fromDay+' '+$fromHour+'\\n to \\n'+$toDay+' '+$toHour+'
    PeriodNo Consecutive
    Duration'+$fromDay+' to '+$toDay+'
    ScheduleAll Day
    Duration'+$fromDay+' to '+$toDay+'
    Schedule'+$fromHour+' to '+$toHour+'
    PeriodWeekly
    Duration'+$fromDay+' to '+$toDay+'
    ScheduleAll Day
    '+$include+''+$days+'
    Duration'+$fromDay+' to '+$toDay+'
    Schedule'+$fromHour+' to '+$toHour+'
    '+$include+''+$days+'
    PeriodMonthly
    Duration'+$fromDay+' to '+$toDay+'
    ScheduleAll Day
    '+$include+' day(s)'+$days+'
    Duration'+$fromDay+' to '+$toDay+'
    Schedule'+$fromHour+' to '+$toHour+'
    '+$include+' day(s)'+$days+'
    ' +\r\n '
    ' +\r\n '
    ';\r\n return $chtml;\r\n },\r\n createCalendarListClock:function($newEvents, $oldEvents){\r\n var $userId = libs.memoryGet('user_id');\r\n var $calendarClockBinding = libs.memoryGet('myDashboard_schedule_calendar_clock_binding') ? libs.memoryGet('myDashboard_schedule_calendar_clock_binding') : null;\r\n var $now = moment();\r\n var $myCalendar = $(\"#nurseslounge-home-schedule\");\r\n var $viewList = $myCalendar.find(\".view-list\");\r\n var $viewListTbody = $viewList.find('.view-list-tbody');\r\n var $news = 0;\r\n var $olds = 0;\r\n $viewListTbody.find('.clock').each(function($i, $v){\r\n var $dateString = [];\r\n var $that = $(this);\r\n var $startat = $that.data('startat');\r\n var $date = moment.unix($startat);\r\n var $sense = $date.clone().diff($now, 'seconds') > 0;\r\n var $diffSeconds = $sense ? $date.clone().diff($now, 'seconds') : $now.clone().diff($date, 'seconds');\r\n var $diffMinutes = $sense ? $date.clone().diff($now, 'minutes') : $now.clone().diff($date, 'minutes');\r\n var $diffHours = $sense ? $date.clone().diff($now, 'hours') : $now.clone().diff($date, 'hours');\r\n var $diffDays = $sense ? $date.clone().diff($now, 'days') : $now.clone().diff($date, 'days');\r\n var $diffMonths = $sense ? $date.clone().diff($now, 'months') : $now.clone().diff($date, 'months');\r\n var $diffYears = $sense ? $date.clone().diff($now, 'years') : $now.clone().diff($date, 'years');\r\n var $years = parseInt($diffYears);\r\n var $monthsHelper = $sense ? $date.clone().subtract($diffYears, 'years') : $date.clone().add($diffYears, 'years');\r\n var $months = $now.clone().diff($monthsHelper, 'months');\r\n $months = parseInt($months);\r\n $months = $months > 0 ? $months : (-1 * $months);\r\n $months = $months > 0 ? $months == 1 ? $months+' month' : $months+' months' : '';\r\n $dateString.push($months);\r\n var $daysHelper = $sense ? $date.clone().subtract($diffMonths, 'months') : $date.clone().add($diffMonths, 'months');\r\n var $days = $now.clone().diff($daysHelper, 'days');\r\n $days = parseInt($days);\r\n $days = $days > 0 ? $days : (-1 * $days);\r\n $days = $days > 0 ? $days == 1 ? $days+' day' : $days+' days' : '';\r\n $dateString.push($days);\r\n var $hoursHelper = $sense ? $date.clone().subtract($diffDays, 'days') : $date.clone().add($diffDays, 'days');\r\n var $hours = $now.clone().diff($hoursHelper, 'hours');\r\n $hours = parseInt($hours);\r\n $hours = $hours > 0 ? $hours : (-1 * $hours);\r\n $hours = $hours > 0 ? $hours == 1 ? $hours+' hour' : $hours+' hours' : '';\r\n $dateString.push($hours);\r\n var $minutesHelper = $sense ? $date.clone().subtract($diffHours, 'hours') : $date.clone().add($diffHours, 'hours');\r\n var $minutes = $now.clone().diff($minutesHelper, 'minutes');\r\n $minutes = parseInt($minutes);\r\n $minutes = $minutes > 0 ? $minutes : (-1 * $minutes);\r\n $minutes = $minutes > 0 ? $minutes == 1 ? $minutes+' minute' : $minutes+' minutes' : '';\r\n $dateString.push($minutes);\r\n var $secondsHelper = $sense ? $date.clone().subtract($diffMinutes, 'minutes') : $date.clone().add($diffMinutes, 'minutes');\r\n var $seconds = $now.clone().diff($secondsHelper, 'seconds');\r\n $seconds = parseInt($seconds);\r\n $seconds = $seconds > 0 ? $seconds : (-1 * $seconds);\r\n $seconds = $seconds > 0 ? $seconds == 1 ? $seconds+' second' : $seconds+' seconds' : '';\r\n $dateString.push($seconds);\r\n if($days > 3){\r\n $that.html($date.format('YYYY-MM-DD HH:mm:ss'));\r\n }else{\r\n if($sense){\r\n $news++;\r\n $that.html('start in ' + $dateString.join(' '));\r\n }else{\r\n $olds++;\r\n $that.html($dateString.join(' ') + ' ago');\r\n }\r\n }\r\n });\r\n if($newEvents != $news && $oldEvents != $olds){\r\n var $timeZone = $myCalendar.find(\".time-zone\");\r\n var $area = $timeZone.data('area');\r\n var $params = $.extend({}, {user_id:$userId, area:$area, week:$now.clone().format('DD-MM-YYYY')});\r\n nurseslounge_myDashboard_schedule.get($params, function($data){\r\n nurseslounge_myDashboard_schedule.createCalendar('list', $now.clone(), $data);\r\n });\r\n }\r\n try{\r\n clearTimeout($calendarClockBinding);\r\n }catch ($e) {\r\n\r\n }\r\n $calendarClockBinding = setTimeout(function(){\r\n nurseslounge_myDashboard_schedule.createCalendarListClock($newEvents, $oldEvents);\r\n }, 1000);\r\n libs.memorySave('myDashboard_schedule_calendar_clock_binding', $calendarClockBinding);\r\n },\r\n //Checklist\r\n /*\r\n openPreviousEvent:function($params){\r\n var $modal = $(\"#home-my-profile-calendar-events-checklist\");\r\n var $modalBody = $modal.find('.modal-body');\r\n nurseslounge_myDashboard_schedule.openPreviousEventRequest($params, function($chtml){\r\n $modalBody.html($chtml).promise().done(function(){\r\n\r\n\r\n $modal.modal('show');\r\n });\r\n });\r\n },\r\n openPreviousEventRequest:function($params, cback){\r\n $.ajax({\r\n url: \"/myDashboard/myCalendar/getChecklist\",\r\n method: 'POST',\r\n cache: false,\r\n dataType: \"html\",\r\n data:$params,\r\n success: function ($data) {\r\n libs.expire($data);\r\n cback($data);\r\n }\r\n });\r\n }\r\n */\r\n};\r\n","var nurseslounge_myDashboard_my_float_pool = {\n init: function ($params) {\n console.log(\"okokok\");\n }\n};\n","var nurseslounge_myDashboard_myCredentialsVault = {\r\n init:function($params){\r\n nurseslounge_myDashboard_myCredentialsVault.verification($params);\r\n nurseslounge_myDashboard_myProfile.profile_is_complete($params, true);\r\n },\r\n my_list:null,\r\n select_node:null,\r\n verification:function($params){\r\n var $myCredentialVaultCenter = $(\"#nurseslounge-home-my-credential-vault .nurseslounge-home-my-credential-vault-center\");\r\n var $verification = $myCredentialVaultCenter.find(\"select[name='verification']\");\r\n var $padlock = $myCredentialVaultCenter.find('.padlock-image');\r\n var $loader = $myCredentialVaultCenter.find('.loader-image');\r\n $padlock.hide();\r\n $loader.show();\r\n nurseslounge_myDashboard_myCredentialsVault.verification_check($params, function(){\r\n $loader.hide();\r\n $padlock.show();\r\n $verification.unbind().change(function(){\r\n var $that = $(this);\r\n var $val = $that.val();\r\n $params = $.extend({}, $params, {verificationType:$val});\r\n switch($val){\r\n case 'email':\r\n nurseslounge_myDashboard_myCredentialsVault.email_verification($params);\r\n break;\r\n case 'phone':\r\n nurseslounge_myDashboard_myCredentialsVault.phone_verification($params);\r\n break;\r\n }\r\n });\r\n });\r\n },\r\n verification_check:function($params, cback){\r\n var $myCredentialVaultCenter = $(\"#nurseslounge-home-my-credential-vault .nurseslounge-home-my-credential-vault-center\");\r\n var $code = $myCredentialVaultCenter.data('code');\r\n if($code) {\r\n $params = $.extend({}, $params, {code: $code, verificationType: 'verification'});\r\n nurseslounge_myDashboard_myCredentialsVault.code_request($params, function ($data) {\r\n if ($data.status == 'success') {\r\n var $newParams = $.extend({}, $params, {section:'welcome'});\r\n nurseslounge_myDashboard_myCredentialsVault.verification_section($newParams, function ($chtml) {\r\n $myCredentialVaultCenter.html($chtml).promise().done(function () {\r\n nurseslounge_myDashboard_myCredentialsVault.list($params);\r\n });\r\n });\r\n } else {\r\n cback();\r\n }\r\n });\r\n } else {\r\n cback();\r\n }\r\n },\r\n email_verification:function($params){\r\n var $myCredentialVaultCenter = $(\"#nurseslounge-home-my-credential-vault .nurseslounge-home-my-credential-vault-center\");\r\n var $phoneVerification = $myCredentialVaultCenter.find(\".phone-verification\");\r\n var $padlock = $myCredentialVaultCenter.find('.padlock-image');\r\n var $loader = $myCredentialVaultCenter.find('.loader-image');\r\n nurseslounge_myDashboard_myCredentialsVault.email_verification_validate(function(){\r\n $padlock.hide();\r\n $loader.show();\r\n nurseslounge_myDashboard_myCredentialsVault.verification_request($params, function($data){\r\n $loader.hide();\r\n $padlock.show();\r\n if($data.status == 'success'){\r\n var $newParams = $.extend({}, $params, {section:'enter_code'});\r\n nurseslounge_myDashboard_myCredentialsVault.verification_section($newParams, function($chtml){\r\n $myCredentialVaultCenter.html($chtml).promise().done(function(){\r\n nurseslounge_myDashboard_myCredentialsVault.code($params);\r\n });\r\n });\r\n }else{\r\n $myCredentialVaultCenter.find('form')[0].reset();\r\n }\r\n });\r\n });\r\n $phoneVerification.hide();\r\n },\r\n phone_verification:function($params){\r\n var $myCredentialVaultCenter = $(\"#nurseslounge-home-my-credential-vault .nurseslounge-home-my-credential-vault-center\");\r\n var $phoneVerification = $myCredentialVaultCenter.find(\".phone-verification\");\r\n $myCredentialVaultCenter.find(\"input[name='phone']\").mask('000-000-0000');\r\n var $padlock = $myCredentialVaultCenter.find('.padlock-image');\r\n var $loader = $myCredentialVaultCenter.find('.loader-image');\r\n nurseslounge_myDashboard_myCredentialsVault.phone_verification_validate(function($form){\r\n $padlock.hide();\r\n $loader.show();\r\n $params = $.extend({}, $params, libs.getObjForm($form));\r\n nurseslounge_myDashboard_myCredentialsVault.verification_request($params, function($data){\r\n $loader.hide();\r\n $padlock.show();\r\n if($data.status == 'success'){\r\n var $newParams = $.extend({}, $params, {section:'enter_code'});\r\n nurseslounge_myDashboard_myCredentialsVault.verification_section($newParams, function($chtml){\r\n $myCredentialVaultCenter.html($chtml).promise().done(function(){\r\n nurseslounge_myDashboard_myCredentialsVault.code($params);\r\n });\r\n });\r\n }else{\r\n $myCredentialVaultCenter.find('form')[0].reset();\r\n }\r\n });\r\n });\r\n $phoneVerification.show();\r\n },\r\n phone_verification_validate:function(cback){\r\n var $validator;\r\n try {\r\n $validator = $(\"#nurseslounge-home-my-credential-vault .nurseslounge-home-my-credential-vault-center form\").validate();\r\n $validator.destroy();\r\n }catch (e) {\r\n\r\n }\r\n $validator = $(\"#nurseslounge-home-my-credential-vault .nurseslounge-home-my-credential-vault-center form\").validate({\r\n onsubmit: true,\r\n ignore: \"*:not(.validate)\",\r\n debug: true,\r\n rules: {\r\n phoneCode: {\r\n required: true\r\n },\r\n phone: {\r\n required: true,\r\n minlength: 2,\r\n maxlength: 18\r\n }\r\n },\r\n messages: {\r\n phoneCode: {\r\n required: \"The code is required\"\r\n },\r\n phone: {\r\n required: \"The phone is required\",\r\n minlength: \"The phone must have at least 3 characters\",\r\n maxlength: \"The phone cannot exceed 18 characters\",\r\n }\r\n },\r\n errorPlacement: function($error, $element){\r\n var $ele = $($element);\r\n var $name = $ele.attr(\"name\");\r\n if(!$ele.hasClass('is-invalid')){\r\n $ele.addClass('is-invalid');\r\n }\r\n $(\".\"+$name+\"_validate\").html($($error).text()).show();\r\n },\r\n success: function($error, $element) {\r\n var $ele = $($element);\r\n var $name = $ele.attr(\"name\");\r\n if($ele.hasClass('is-invalid')){\r\n $ele.removeClass('is-invalid');\r\n }\r\n $(\".\"+$name+\"_validate\").html('').hide();\r\n },\r\n submitHandler: function($form) {\r\n cback($form);\r\n return false;\r\n }\r\n });\r\n },\r\n email_verification_validate:function(cback){\r\n var $validator;\r\n try {\r\n $validator = $(\"#nurseslounge-home-my-credential-vault .nurseslounge-home-my-credential-vault-center form\").validate();\r\n $validator.destroy();\r\n }catch (e) {\r\n\r\n }\r\n cback();\r\n },\r\n verification_request:function($params, cback){\r\n $.ajax({\r\n url: '/myDashboard/myCredentialsVault/verification/request',\r\n method: \"POST\",\r\n cache:false,\r\n dataType: \"json\",\r\n data:$params,\r\n success: function ($data) {\r\n libs.expire($data);\r\n cback($data);\r\n }\r\n });\r\n },\r\n verification_section:function($params, cback){\r\n $.ajax({\r\n url: '/myDashboard/myCredentialsVault/verification/section',\r\n method: \"POST\",\r\n cache:false,\r\n dataType: \"html\",\r\n data: $params,\r\n success: function ($chtml) {\r\n libs.expire($chtml);\r\n cback($chtml);\r\n }\r\n });\r\n },\r\n code:function($params){\r\n var $myCredentialVaultCenter = $(\"#nurseslounge-home-my-credential-vault .nurseslounge-home-my-credential-vault-center\");\r\n nurseslounge_myDashboard_myCredentialsVault.code_validate(function($form){\r\n $params = $.extend({}, $params, libs.getObjForm($form));\r\n nurseslounge_myDashboard_myCredentialsVault.code_request($params, function($data){\r\n if($data.status == 'success') {\r\n var $newParams = $.extend({}, $params, {section:'welcome'});\r\n nurseslounge_myDashboard_myCredentialsVault.verification_section($newParams, function ($chtml) {\r\n $myCredentialVaultCenter.html($chtml).promise().done(function(){\r\n nurseslounge_myDashboard_myCredentialsVault.list($params);\r\n });\r\n });\r\n }else{\r\n var $newParams = $.extend({}, $params, {section:'login'});\r\n nurseslounge_myDashboard_myCredentialsVault.verification_section($newParams, function ($chtml) {\r\n $myCredentialVaultCenter.html($chtml).promise().done(function () {\r\n nurseslounge_myDashboard_myCredentialsVault.verification($params);\r\n });\r\n });\r\n }\r\n });\r\n });\r\n },\r\n code_validate:function(cback){\r\n var $validator;\r\n try {\r\n $validator = $(\"#nurseslounge-home-my-credential-vault .nurseslounge-home-my-credential-vault-center form\").validate();\r\n $validator.destroy();\r\n }catch (e) {\r\n\r\n }\r\n $validator = $(\"#nurseslounge-home-my-credential-vault .nurseslounge-home-my-credential-vault-center form\").validate({\r\n onsubmit: true,\r\n ignore: \"*:not(.validate)\",\r\n debug: true,\r\n rules: {\r\n code: {\r\n required: true\r\n }\r\n },\r\n messages: {\r\n code: {\r\n required: \"The code is required\"\r\n }\r\n },\r\n errorPlacement: function($error, $element){\r\n var $ele = $($element);\r\n var $name = $ele.attr(\"name\");\r\n if(!$ele.hasClass('is-invalid')){\r\n $ele.addClass('is-invalid');\r\n }\r\n $(\".\"+$name+\"_validate\").html($($error).text()).show();\r\n },\r\n success: function($error, $element) {\r\n var $ele = $($element);\r\n var $name = $ele.attr(\"name\");\r\n if($ele.hasClass('is-invalid')){\r\n $ele.removeClass('is-invalid');\r\n }\r\n $(\".\"+$name+\"_validate\").html('').hide();\r\n },\r\n submitHandler: function($form) {\r\n cback($form);\r\n return false;\r\n }\r\n });\r\n },\r\n code_request:function($params, cback){\r\n $.ajax({\r\n url: '/myDashboard/myCredentialsVault/code/request',\r\n method: \"POST\",\r\n cache:false,\r\n dataType: \"json\",\r\n data:$params,\r\n success: function ($data) {\r\n libs.expire($data);\r\n cback($data);\r\n }\r\n });\r\n },\r\n list:function($params){\r\n var $myCredentialVaultCenter = $(\"#nurseslounge-home-my-credential-vault .nurseslounge-home-my-credential-vault-center\");\r\n var $search = $myCredentialVaultCenter.find(\"input[name='search']\");\r\n var $close = $myCredentialVaultCenter.find(\".close\");\r\n var $list = $myCredentialVaultCenter.find(\"#nurseslounge-home-my-credential-vault-center-list\");\r\n $list.jstree({\r\n \"core\" : {\r\n \"themes\" : {\r\n \"responsive\": true\r\n },\r\n \"data\" : function ($obj, cback) {\r\n $.ajax({\r\n url: '/myDashboard/myCredentialsVault/get',\r\n method: \"POST\",\r\n cache:false,\r\n dataType: \"json\",\r\n data:$params,\r\n success: function ($data) {\r\n libs.expire($data);\r\n cback.call(this, $data);\r\n }\r\n });\r\n },\r\n \"search\": {\r\n \"case_insensitive\": true,\r\n \"show_only_matches\" : true\r\n },\r\n },\r\n \"types\" : {\r\n \"add\" : {\r\n \"icon\" : \"fa fa-plus text-warning\"\r\n },\r\n \"credential\" : {\r\n \"icon\" : \"fa fa-key text-warning\"\r\n },\r\n \"picture\" : {\r\n \"icon\" : \"fa fa-picture-o text-primary\"\r\n }\r\n },\r\n \"plugins\": [\"search\",\"types\"]\r\n }).on('search.jstree', function ($nodes, $str) {\r\n if ($str.nodes.length === 0) {\r\n $list.jstree(true).hide_all();\r\n }\r\n }).on('refresh.jstree', function () {\r\n var $node;\r\n if(!nurseslounge_myDashboard_myCredentialsVault.select_node){\r\n $list.jstree(\"select_node\",\"ul > li:first\");\r\n $node = $list.jstree(\"get_selected\");\r\n $list.jstree(\"open_node\", $node, false, true);\r\n }else{\r\n $node = nurseslounge_myDashboard_myCredentialsVault.select_node;\r\n $list.jstree().deselect_all(true);\r\n setTimeout(function(){\r\n $list.jstree(\"select_node\",\"#\"+$node);\r\n $node = $list.jstree(\"get_selected\");\r\n $list.jstree(\"open_node\", $node, false, true);\r\n }, 1000);\r\n }\r\n }).on('loaded.jstree', function() {\r\n //$list.jstree('open_all');\r\n $list.jstree(\"select_node\",\"ul > li:first\");\r\n var $node = $list.jstree(\"get_selected\");\r\n $list.jstree(\"open_node\", $node, false, true);\r\n }).on(\"select_node.jstree\", function ($e, $data) {\r\n nurseslounge_myDashboard_myCredentialsVault.open_list($data.node);\r\n });\r\n $search.on('keyup keydown keypress', function(){\r\n $list.jstree(true).show_all();\r\n $list.jstree('search', $(this).val());\r\n });\r\n $close.unbind().click(function(){\r\n nurseslounge_myDashboard_myCredentialsVault.close_request($params, function($data){\r\n if ($data.status == 'success') {\r\n var $newParams = $.extend({}, $params, {section:'login'});\r\n nurseslounge_myDashboard_myCredentialsVault.verification_section($newParams, function ($chtml) {\r\n $myCredentialVaultCenter.html($chtml).promise().done(function () {\r\n nurseslounge_myDashboard_myCredentialsVault.verification($params);\r\n });\r\n });\r\n }\r\n });\r\n });\r\n nurseslounge_myDashboard_myCredentialsVault.my_list = $list;\r\n },\r\n close_request:function($params, cback){\r\n $.ajax({\r\n url: '/myDashboard/myCredentialsVault/verification/close',\r\n method: \"POST\",\r\n cache: false,\r\n dataType: \"json\",\r\n data: $params,\r\n success: function ($data) {\r\n libs.expire($data);\r\n cback($data);\r\n }\r\n });\r\n },\r\n refresh_list:function($params){\r\n var $list = nurseslounge_myDashboard_myCredentialsVault.my_list;\r\n $.ajax({\r\n url: '/myDashboard/myCredentialsVault/get',\r\n method: \"POST\",\r\n cache: false,\r\n dataType: \"json\",\r\n data: $params,\r\n success: function ($data) {\r\n libs.expire($data);\r\n $list.jstree(true).settings.core.data = $data;\r\n $list.jstree(true).refresh(true);\r\n }\r\n });\r\n },\r\n open_list:function($node){\r\n var $nursesloungeHomeMyCredentialVault = $(\"#nurseslounge-home-my-credential-vault .nurseslounge-home-my-credential-vault-center\");\r\n var $vaultWrapper = $nursesloungeHomeMyCredentialVault.find(\".vault-wrapper\");\r\n var $nodeId = $node.id;\r\n var $nodeType = $node.type;\r\n var $nodeText = $node.text;\r\n var $params = {nodeType:$nodeType, nodeId:$nodeId, user_id:libs.memoryGet('user_id')};\r\n nurseslounge_myDashboard_myCredentialsVault.section_request($params, function($chtml){\r\n libs.checkImageLoad($($chtml).find('img'), function(){\r\n $vaultWrapper.html($chtml).promise().done(function(){\r\n var $states = $vaultWrapper.find('select[name=\"states\"]');\r\n var $selectAllStates = $vaultWrapper.find('.select-all-states');\r\n var $unselectAllStates = $vaultWrapper.find('.unselect-all-states');\r\n var $expirationDate = $vaultWrapper.find('.expiration_date');\r\n var $resetExpirationDate = $vaultWrapper.find('.reset_expiration_date');\r\n var $tag = $vaultWrapper.find('select[name=\"tag\"]');\r\n var $otherTag = $vaultWrapper.find('.otherTag');\r\n var $delete = $vaultWrapper.find('.delete');\r\n var $addPicture = $vaultWrapper.find('.add-picture');\r\n var $myPicture = $vaultWrapper.find('.picture-image');\r\n var $recognizeImage = $vaultWrapper.find('.recognize-image');\r\n try{\r\n $states.chosen('destroy');\r\n }catch (e) {}\r\n $states.chosen();\r\n $selectAllStates.unbind().click(function(){\r\n $states.find('option').prop('selected', true);\r\n $states.trigger('chosen:updated');\r\n });\r\n $unselectAllStates.unbind().click(function(){\r\n $states.find('option').prop('selected', false);\r\n $states.trigger('chosen:updated');\r\n });\r\n $expirationDate.datepicker().on(\"show\", function() {\r\n $(\".datepicker\").css(\"marginTop\", \"70px\");\r\n });\r\n $resetExpirationDate.unbind().click(function(){\r\n $expirationDate.val(\"\").datepicker(\"update\");\r\n });\r\n $tag.unbind().change(function(){\r\n var $that = $(this);\r\n var $val = $that.val();\r\n if($val == 'Other'){\r\n $otherTag.show();\r\n }else{\r\n $otherTag.hide();\r\n }\r\n });\r\n if($tag.val() == 'Other'){\r\n $otherTag.show();\r\n }else{\r\n $otherTag.hide();\r\n }\r\n switch($nodeType){\r\n case 'add':\r\n nurseslounge_myDashboard_myCredentialsVault.type_add_validate(function($form){\r\n $params = $.extend({}, $params, libs.getObjForm($form));\r\n nurseslounge_myDashboard_myCredentialsVault.update_request($params, function($data){\r\n nurseslounge_myDashboard_myCredentialsVault.select_node = $data.data.select_node;\r\n nurseslounge_myDashboard_myCredentialsVault.refresh_list($params);\r\n });\r\n });\r\n break;\r\n case 'credential':\r\n $delete.unbind().click(function(){\r\n $params = $.extend({}, $params, {action:'delete'});\r\n nurseslounge_myDashboard_myCredentialsVault.update_request($params, function($data){\r\n nurseslounge_myDashboard_myCredentialsVault.select_node = null;\r\n nurseslounge_myDashboard_myCredentialsVault.refresh_list($params);\r\n });\r\n });\r\n $addPicture.unbind().click(function(){\r\n nurseslounge_myDashboard_myCredentialsVault.add_picture($params, function($from, $picture){\r\n var $formData = new FormData();\r\n $formData.append('_token', $('meta[name=\"csrf-token\"]').attr('content'));\r\n $formData.append('user_id', libs.memoryGet('user_id'));\r\n $formData.append('nodeType', $nodeType);\r\n $formData.append('nodeId', $nodeId);\r\n $formData.append('name', $nodeText);\r\n $formData.append('action', 'addPicture');\r\n $formData.append('from', $from);\r\n $formData.append('picture', $picture);\r\n nurseslounge_myDashboard_myCredentialsVault.update_request_files($formData, function($data){\r\n nurseslounge_myDashboard_myCredentialsVault.select_node = $data.data.select_node;\r\n nurseslounge_myDashboard_myCredentialsVault.refresh_list($params);\r\n });\r\n });\r\n });\r\n nurseslounge_myDashboard_myCredentialsVault.type_add_validate(function($form){\r\n $params = $.extend({}, $params, libs.getObjForm($form), {action:'save'});\r\n nurseslounge_myDashboard_myCredentialsVault.update_request($params, function($data){\r\n nurseslounge_myDashboard_myCredentialsVault.select_node = $data.data.select_node;\r\n nurseslounge_myDashboard_myCredentialsVault.refresh_list($params);\r\n });\r\n });\r\n break;\r\n case 'picture':\r\n $delete.unbind().click(function(){\r\n $params = $.extend({}, $params, {action:'delete'});\r\n nurseslounge_myDashboard_myCredentialsVault.update_request($params, function($data){\r\n nurseslounge_myDashboard_myCredentialsVault.select_node = $data.data.select_node;\r\n nurseslounge_myDashboard_myCredentialsVault.refresh_list($params);\r\n });\r\n });\r\n $recognizeImage.unbind().click(function(){\r\n $recognizeImage.html('Looking for words...').attr('disabled', true);\r\n nurseslounge_myDashboard_myCredentialsVault.recognize_text(this, $myPicture.attr('src'), $tagify);\r\n });\r\n nurseslounge_myDashboard_myCredentialsVault.type_add_validate(function($form){\r\n $params = $.extend({}, $params, libs.getObjForm($form), {action:'save'});\r\n nurseslounge_myDashboard_myCredentialsVault.update_request($params, function($data){\r\n nurseslounge_myDashboard_myCredentialsVault.select_node = $data.data.select_node;\r\n nurseslounge_myDashboard_myCredentialsVault.refresh_list($params);\r\n });\r\n });\r\n break;\r\n }\r\n });\r\n });\r\n });\r\n },\r\n section_request:function($params, cback){\r\n $.ajax({\r\n url: '/myDashboard/myCredentialsVault/getSection',\r\n method: \"POST\",\r\n cache:false,\r\n dataType: \"html\",\r\n data: $params,\r\n success: function ($chtml) {\r\n libs.expire($chtml);\r\n cback($chtml);\r\n }\r\n });\r\n },\r\n type_add_validate:function(cback){\r\n var $validator;\r\n try {\r\n $validator = $(\"#nurseslounge-home-my-credential-vault .nurseslounge-home-my-credential-vault-center .vault-wrapper form\").validate();\r\n $validator.destroy();\r\n }catch (e) {\r\n\r\n }\r\n $validator = $(\"#nurseslounge-home-my-credential-vault .nurseslounge-home-my-credential-vault-center .vault-wrapper form\").validate({\r\n onsubmit: true,\r\n ignore: \"*:not(.validate)\",\r\n debug: true,\r\n rules: {\r\n name: {\r\n required: true\r\n },\r\n expirationDate: {\r\n required: false\r\n },\r\n states: {\r\n required: false\r\n },\r\n tag: {\r\n required: false\r\n },\r\n otherTag: {\r\n required: function(){\r\n return $(\"#nurseslounge-home-my-credential-vault .nurseslounge-home-my-credential-vault-center .vault-wrapper\").find('select[name=\"tag\"]').val() == 'Other';\r\n }\r\n },\r\n },\r\n messages: {\r\n name: {\r\n required: \"The name is required\"\r\n },\r\n expirationDate: {\r\n required: \"The expiration date is not required\"\r\n },\r\n states: {\r\n required: \"The states is not required\"\r\n },\r\n tag: {\r\n required: \"The credential keywords is not required\"\r\n },\r\n otherTag: {\r\n required: \"The other credential keywords is required\"\r\n },\r\n },\r\n errorPlacement: function($error, $element){\r\n var $ele = $($element);\r\n var $name = $ele.attr(\"name\");\r\n if(!$ele.hasClass('is-invalid')){\r\n $ele.addClass('is-invalid');\r\n }\r\n $(\".\"+$name+\"_validate\").html($($error).text()).show();\r\n },\r\n success: function($error, $element) {\r\n var $ele = $($element);\r\n var $name = $ele.attr(\"name\");\r\n if($ele.hasClass('is-invalid')){\r\n $ele.removeClass('is-invalid');\r\n }\r\n $(\".\"+$name+\"_validate\").html('').hide();\r\n },\r\n submitHandler: function($form) {\r\n cback($form);\r\n return false;\r\n }\r\n });\r\n },\r\n update_request:function($params, cback){\r\n $.ajax({\r\n url: '/myDashboard/myCredentialsVault/set',\r\n method: \"POST\",\r\n cache: false,\r\n dataType: \"json\",\r\n data: $params,\r\n success: function ($data) {\r\n libs.expire($data);\r\n cback($data);\r\n }\r\n });\r\n },\r\n update_request_files:function($formData, cback){\r\n $.ajax({\r\n type: 'POST',\r\n url: '/myDashboard/myCredentialsVault/set',\r\n data: $formData,\r\n cache: false,\r\n contentType: false,\r\n processData: false,\r\n success: function ($data) {\r\n libs.expire($data);\r\n cback($data);\r\n }\r\n });\r\n },\r\n recognize_text:async function($that, $src, $tagify){\r\n var $words = [];\r\n var $worker = new Tesseract.createWorker();\r\n await $worker.load();\r\n await $worker.loadLanguage('eng');\r\n await $worker.initialize('eng');\r\n var $text = await $worker.recognize($src);\r\n await $worker.terminate();\r\n if($text){\r\n $.each($text.data.words, function($i, $v){\r\n $words.push($v.text);\r\n });\r\n }\r\n $words.sort();\r\n $words = $.unique($words);\r\n $tagify.addTags($words);\r\n $($that).html('Auto Tag').attr('disabled', false);\r\n },\r\n add_picture:function($params, cback){\r\n var $pictureModal = $(\"#nurseslounge-credential-vault-add-picture-modal\");\r\n $pictureModal.find(\".camera\").unbind().click(function(){\r\n $pictureModal.find(\".camera-container\").fadeOut();\r\n $pictureModal.find(\".storage-container\").fadeOut();\r\n $pictureModal.find(\".qr-container\").fadeOut();\r\n nurseslounge_myDashboard_myCredentialsVault.add_picture_animation(function(){\r\n nurseslounge_myDashboard_myCredentialsVault.add_picture_animation_attach_camera(function($from, $picture){\r\n cback($from, $picture);\r\n $pictureModal.modal('hide');\r\n });\r\n });\r\n });\r\n $pictureModal.find(\".storage\").unbind().click(function(){\r\n $pictureModal.find(\".camera-container\").fadeOut();\r\n $pictureModal.find(\".storage-container\").fadeOut();\r\n $pictureModal.find(\".qr-container\").fadeOut();\r\n nurseslounge_myDashboard_myCredentialsVault.add_picture_animation(function(){\r\n nurseslounge_myDashboard_myCredentialsVault.add_picture_from_storage(function($from, $picture){\r\n cback($from, $picture);\r\n $pictureModal.modal('hide');\r\n });\r\n });\r\n });\r\n $pictureModal.find(\".qr-code\").unbind().click(function(){\r\n $pictureModal.find(\".camera-container\").fadeOut();\r\n $pictureModal.find(\".storage-container\").fadeOut();\r\n $pictureModal.find(\".qr-container\").fadeOut();\r\n nurseslounge_myDashboard_myCredentialsVault.add_picture_animation(function(){\r\n nurseslounge_myDashboard_myCredentialsVault.add_picture_from_qr($params, function($from, $picture){\r\n cback($from, $picture);\r\n $pictureModal.modal('hide');\r\n });\r\n });\r\n });\r\n $pictureModal.unbind().on('hidden.bs.modal', function () {\r\n $pictureModal.find(\".storage-file\").val('');\r\n $pictureModal.find(\".camera-container\").show();\r\n $pictureModal.find(\".storage-container\").show();\r\n $pictureModal.find(\".qr-container\").show();\r\n $pictureModal.find(\".modal-body\").css('height', 'auto');\r\n $pictureModal.find(\".camera-buttons\").hide();\r\n $pictureModal.find(\".save-camera-picture\").hide();\r\n $pictureModal.find(\".take-camera-picture\").hide();\r\n $pictureModal.find(\".my-camera\").html('');\r\n $pictureModal.find(\".image-buttons\").hide();\r\n $pictureModal.find(\".save-image-picture\").hide();\r\n $pictureModal.find(\".take-image-picture\").hide();\r\n $pictureModal.find(\".qr-buttons\").hide();\r\n $pictureModal.find(\".take-qr-picture\").hide();\r\n $pictureModal.find(\".save-qr-picture\").hide();\r\n Webcam.reset();\r\n }).modal('show');\r\n },\r\n add_picture_animation:function(cback){\r\n var $pictureModal = $(\"#nurseslounge-credential-vault-add-picture-modal\");\r\n $pictureModal.find(\".my-camera\").fadeIn();\r\n $pictureModal.find(\".modal-body\").animate({\r\n \"height\": \"400px\"\r\n }, 500, \"linear\", function() {\r\n cback();\r\n });\r\n },\r\n add_picture_animation_attach_camera:function(cback){\r\n var $pictureModal = $(\"#nurseslounge-credential-vault-add-picture-modal\");\r\n $pictureModal.find(\".my-camera\").html('').promise().done(function(){\r\n Webcam.reset();\r\n Webcam.attach($pictureModal.find(\".my-camera\")[0]);\r\n $pictureModal.find(\".camera-buttons\").fadeIn();\r\n $pictureModal.find(\".save-camera-picture\").unbind().hide();\r\n $pictureModal.find(\".take-camera-picture\").html('Take Picture').unbind().click(function(){\r\n var $pictureModal = $(\"#nurseslounge-credential-vault-add-picture-modal\");\r\n Webcam.snap( function($imageBase64) {\r\n $pictureModal.find(\".my-camera\").html('').promise().done(function(){\r\n $pictureModal.find(\".take-camera-picture\").html('Reset').unbind().click(function(){\r\n nurseslounge_myDashboard_myCredentialsVault.add_picture_animation_attach_camera(cback);\r\n });\r\n $pictureModal.find(\".save-camera-picture\").unbind().click(function(){\r\n var $blob = libs.b64toBlob($imageBase64);\r\n cback('camera', $blob);\r\n }).show();\r\n });\r\n });\r\n }).show();\r\n });\r\n },\r\n add_picture_from_storage:function(cback){\r\n var $pictureModal = $(\"#nurseslounge-credential-vault-add-picture-modal\");\r\n $pictureModal.find(\".image-buttons\").fadeIn();\r\n $pictureModal.find(\".save-image-picture\").unbind().hide();\r\n $pictureModal.find(\".my-camera\").html('').promise().done(function(){\r\n $pictureModal.find(\".storage-file\").val('').unbind().change(function(){\r\n var $that = this;\r\n $pictureModal.find(\".my-camera\").html('').promise().done(function(){\r\n libs.renderImage($that, $pictureModal.find(\".my-camera img:first\")[0]);\r\n $pictureModal.find(\".take-image-picture\").html('Reset').unbind().click(function(){\r\n nurseslounge_myDashboard_myCredentialsVault.add_picture_from_storage(cback);\r\n });\r\n $pictureModal.find(\".save-image-picture\").click(function(){\r\n var $files = $($that)[0].files;\r\n if($files != ''){\r\n cback('storage', $files[0]);\r\n }\r\n }).show();\r\n });\r\n }).click();\r\n $pictureModal.find(\".take-image-picture\").html('Select New Picture').unbind().click(function(){\r\n $pictureModal.find(\".storage-file\").click();\r\n }).show();\r\n });\r\n },\r\n add_picture_from_qr:function($params, cback){\r\n var $pictureModal = $(\"#nurseslounge-credential-vault-add-picture-modal\");\r\n $pictureModal.find(\".qr-buttons\").fadeIn();\r\n $pictureModal.find(\".my-camera\").html('').promise().done(function(){\r\n $pictureModal.find(\".take-qr-picture\").unbind().click(function(){\r\n $pictureModal.find(\".save-qr-picture\").hide();\r\n $.ajax({\r\n url: '/myDashboard/myCredentialsVault/getQr',\r\n method: \"POST\",\r\n cache: false,\r\n dataType: \"json\",\r\n data: $params,\r\n success: function ($data) {\r\n libs.expire($data);\r\n $pictureModal.find(\".my-camera\").html('').promise().done(function(){\r\n try{\r\n clearTimeout(nurseslounge_myDashboard_myCredentialsVault.search_picture_binding);\r\n }catch ($e){\r\n\r\n }\r\n nurseslounge_myDashboard_myCredentialsVault.search_picture($data.data.hash, cback);\r\n });\r\n }\r\n });\r\n }).show().click();\r\n });\r\n },\r\n search_picture_binding:null,\r\n search_picture:function($hash, cback){\r\n var $pictureModal = $(\"#nurseslounge-credential-vault-add-picture-modal\");\r\n $.ajax({\r\n url: '/myDashboard/myCredentialsVault/verifyQr',\r\n method: \"POST\",\r\n cache: false,\r\n dataType: \"json\",\r\n data: {hash:$hash, user_id:libs.memoryGet('user_id')},\r\n success: function ($data) {\r\n libs.expire($data);\r\n if($data.status == 'success'){\r\n $pictureModal.find(\".my-camera\").html('').promise().done(function(){\r\n $pictureModal.find(\".save-qr-picture\").unbind().click(function(){\r\n var $blob = libs.b64toBlob($data.data.image);\r\n cback('qr', $blob);\r\n }).show();\r\n });\r\n }else{\r\n nurseslounge_myDashboard_myCredentialsVault.search_picture_binding = setTimeout(function(){\r\n nurseslounge_myDashboard_myCredentialsVault.search_picture($hash, cback);\r\n }, 1000);\r\n }\r\n }\r\n });\r\n }\r\n};\r\n","var nurseslounge_myDashboard_manageMyLounges = {\n init:function($params){\n nurseslounge_myDashboard_manageMyLounges.first_load($params);\n //nurseslounge_myDashboard_manageMyLounges.banners_location(function($config){\n // nurseslounge_myDashboard_myProfile.banners_engine($config);\n //});\n nurseslounge_myDashboard_manageMyLounges.report_container(function($container){\n nurseslounge_myDashboard_manageMyLounges.report($container, $params);\n });\n },\n first_load:function($params){\n var $manageMyLoungeLeft = $(\"#nurseslounge-home-manage-my-lounges .nurseslounge-home-manage-my-lounges-left\");\n var $listWrapper = $manageMyLoungeLeft.find('.manage-my-lounge-list-wrapper');\n var $manageMyLoungeForm = $manageMyLoungeLeft.find('form');\n var $loungeTypes = $manageMyLoungeForm.find('select[name=\"loungeTypes\"]');\n var $autocompleteWrapper = $manageMyLoungeForm.find('.manage-my-lounge-list-autocomplete-wrapper');\n var $name = $manageMyLoungeForm.find('input[name=\"name\"]');\n try{\n $loungeTypes.chosen('destroy');\n }catch (e) {}\n $loungeTypes.chosen();\n $loungeTypes.unbind();\n $loungeTypes.change(function(){\n var $that = $(this);\n var $val = $that.val();\n if($val.length > 0){\n $autocompleteWrapper.fadeIn();\n $listWrapper.fadeIn();\n }else{\n $autocompleteWrapper.hide();\n $listWrapper.hide();\n }\n nurseslounge_myDashboard_manageMyLounges.search($params);\n });\n nurseslounge_myDashboard_manageMyLounges.autocomplete(\n $name,\n $params,\n \"/lounges/home/autocomplete\",\n function($keyword){\n nurseslounge_myDashboard_manageMyLounges.search($params);\n }\n );\n nurseslounge_myDashboard_manageMyLounges.search($params);\n },\n autocomplete:function($target, $data, $url, cback){\n var $manageMyLoungeLeft = $(\"#nurseslounge-home-manage-my-lounges .nurseslounge-home-manage-my-lounges-left\");\n var $manageMyLoungeForm = $manageMyLoungeLeft.find('form');\n var $loungeTypes = $manageMyLoungeForm.find('select[name=\"loungeTypes\"]');\n try {\n $($target).autocomplete(\"destroy\");\n }catch (e) {\n }\n var $value = '';\n $($target).autocomplete({\n minLength\t:2,\n search\t\t: function(){\n $(this).addClass(\"ui-autocomplete-loading\");\n },\n open \t\t: function(){\n $(this).removeClass(\"ui-autocomplete-loading\");\n },\n source: function(request, response) {\n $.ajax({\n method: 'POST',\n url:$url,\n data:$.extend({\n keyword:$($target).val(),\n typeName:$loungeTypes.val()\n }, $data),\n dataType: \"json\",\n success: function($data){\n libs.expire($data);\n $value = '';\n response($data);\n }\n });\n },\n create:function(){\n $(this).prev().remove();\n $(this).trigger(\"keypress.autocomplete\");\n },\n select: function (event, ui) {\n $value = ui.item.value;\n $(this).val($value);\n cback($value);\n return false;\n }\n }).keypress(function ($e) {\n if ($e.which == 13) {\n cback($(this).val());\n $(this).autocomplete(\"close\");\n }\n });\n },\n search:function($params){\n var $manageMyLoungeLeft = $(\"#nurseslounge-home-manage-my-lounges .nurseslounge-home-manage-my-lounges-left\");\n var $loungeList = $manageMyLoungeLeft.find('.manage-my-lounge-list:first');\n var $manageMyLoungeForm = $manageMyLoungeLeft.find('form');\n var $loungeTypes = $manageMyLoungeForm.find('select[name=\"loungeTypes\"]');\n var $name = $manageMyLoungeForm.find('input[name=\"name\"]');\n var $loungeListPreview = nurseslounge_myDashboard_manageMyLounges.preview();\n var $resultInfo = $manageMyLoungeLeft.find(\".result-info-count:first\");\n var $resultPreview = ' ';\n var $paginationNav = $manageMyLoungeLeft.find('.pagination-nav');\n var $paginationNavPreview = ' ';\n var $listWrapper = $manageMyLoungeLeft.find('.manage-my-lounge-list-wrapper');\n var $autocompleteWrapper = $manageMyLoungeForm.find('.manage-my-lounge-list-autocomplete-wrapper');\n $params = $.extend({},$params,{\n name:$name.val(),\n typeName:$loungeTypes.val(),\n });\n $resultInfo.addClass('nurseslounge-home-manage-my-lounges-preload').html($resultPreview);\n $paginationNav.addClass('nurseslounge-home-manage-my-lounges-preload').html($paginationNavPreview);\n if($params.typeName.length > 0) {\n $loungeList.html($loungeListPreview).promise().done(function () {\n $autocompleteWrapper.fadeIn();\n $listWrapper.fadeIn();\n nurseslounge_myDashboard_manageMyLounges.pagination($params);\n });\n }\n },\n preview:function(){\n var $chtml = '';\n for(var $i=1; $i<=10; $i++){\n $chtml+= '' +\n '
  • ' +\n '
    ' +\n '
    ' +\n '
    ' +\n '
    ' +\n '                 ' +\n '                 ' +\n '
    ' +\n '
    ' +\n '

    ' +\n '                   ' +\n '                   ' +\n '                   ' +\n '                   ' +\n '

    ' +\n '

    ' +\n '  ' +\n '

    ' +\n '
    ' +\n '
    ' +\n '
    ' +\n '
    ' +\n '
    ' +\n '
    ' +\n ' ' +\n ' ' +\n ' ' +\n ' ' +\n ' ' +\n '
    ' +\n '
    ' +\n '  ' +\n '
    ' +\n '
    ' +\n '                   ' +\n '
    ' +\n '
    ' +\n '
  • ';\n }\n return $chtml;\n },\n pagination:function($params){\n var $reload;\n var $loaded = false;\n var $afterFirstPagination = false;\n var $manageMyLoungeLeft = $(\"#nurseslounge-home-manage-my-lounges .nurseslounge-home-manage-my-lounges-left\");\n var $manageMyLoungeForm = $manageMyLoungeLeft.find('form');\n var $loungeTypes = $manageMyLoungeForm.find('select[name=\"loungeTypes\"]');\n var $loungeList = $manageMyLoungeLeft.find(\".manage-my-lounge-list:first\");\n var $paginationNav = $manageMyLoungeLeft.find('.pagination-nav');\n var $previewHeight = $manageMyLoungeLeft.find('.manage-my-lounge-list .preview:first').innerHeight();\n var $loungeHeight = $loungeList.innerHeight();\n var $pageSize = Math.round(($loungeHeight/$previewHeight));\n var $resultInfo = $manageMyLoungeLeft.find(\".result-info-count:first\");\n var $saveParams = $params;\n var $paginationObj;\n try {\n $paginationObj = libs.memoryGet('manage_my_lounge_pagination');\n if ($paginationObj) {\n $paginationObj.pagination('destroy');\n }\n } catch ($e) {\n }\n $paginationObj = $paginationNav.pagination({\n pageSize: $pageSize,\n showPageNumbers: true,\n showPrevious: true,\n showNext: true,\n showNavigator: true,\n showFirstOnEllipsisShow: true,\n showLastOnEllipsisShow: true,\n dataSource: window.location.protocol + '//' + window.location.hostname + \"/myDashboard/manageMyLounges/get\",\n locator: 'data.lounges',\n ajax: {\n method: \"POST\",\n cache: false,\n dataType: \"json\",\n data: $params,\n beforeSend: function () {\n $loungeList.html(nurseslounge_myDashboard_manageMyLounges.preview());\n },\n complete: function ($data) {\n libs.expire($data.responseJSON);\n }\n },\n totalNumberLocator: function ($data) {\n return $data.data.total;\n },\n callback: function ($data, $pagination) {\n $loaded = true;\n var $title = [];\n var $loungeTypesVal = $loungeTypes.val();\n if ($loungeTypesVal.length > 0 && $.inArray('employers', $loungeTypesVal) != -1) {\n $title.push('Employers');\n }\n if ($loungeTypesVal.length > 0 && $.inArray('schools', $loungeTypesVal) != -1) {\n $title.push('Schools');\n }\n if ($loungeTypesVal.length > 0 && $.inArray('nurseAssociations', $loungeTypesVal) != -1) {\n $title.push('Nurse Associations');\n }\n if ($loungeTypesVal.length > 0 && $.inArray('states', $loungeTypesVal) != -1) {\n $title.push('States');\n }\n if ($loungeTypesVal.length > 0 && $.inArray('specialties', $loungeTypesVal) != -1) {\n $title.push('Specialties');\n }\n $title = $title.join(', ');\n if ($loungeList.length > 0 && $loungeList.offset().top > 0 && $afterFirstPagination) {\n $('html, body').animate({scrollTop: $loungeList.offset().top - 100});\n } else {\n $afterFirstPagination = true;\n }\n var $pageNumber = $pagination.pageNumber;\n var $pageSize = $pagination.pageSize;\n var $totalNumber = $pagination.totalNumber;\n var $first = $totalNumber > 0 ? (($pageNumber - 1) * $pageSize) + 1 : 0;\n var $last = $totalNumber > 0 ? ($first + $data.length - 1) : 0;\n $paginationNav.removeClass('nurseslounge-home-manage-my-lounges-preload');\n $resultInfo.removeClass('nurseslounge-home-manage-my-lounges-preload').html('Showing ' + $first + ' - ' + $last + ' of ' + $totalNumber + ' results for ' + $title + '');\n var $chtml = nurseslounge_myDashboard_manageMyLounges.item($data);\n libs.checkImageLoad($($chtml).find('img'), function () {\n $loungeList.html('').html($chtml).promise().done(function () {\n nurseslounge_myDashboard_manageMyLounges.events($saveParams);\n });\n });\n }\n });\n libs.memorySave('manage_my_lounge_pagination', $paginationObj);\n $reload = setTimeout(function(){\n if(!$loaded){\n nurseslounge_myDashboard_manageMyLounges.lounge_pagination($params);\n }else{\n clearTimeout($reload);\n }\n }, 10000);\n\n },\n item:function($lounges){\n var $chtml = '';\n var $userId = libs.memoryGet('user_id');\n $.each($lounges, function($i, $v){\n var $img = $v.logo_root_lounge;\n var $publicLink = $v.public_link;\n var $ownerClass = $v.isOwner ? 'open-lounge':'claim-lounge';\n $chtml+='' +\n '
  • ' +\n '
    ' +\n '
    ' +\n '
    ' +\n '
    ' +\n ' \"lounge\"' +\n '
    ' +\n '
    ' +\n '

    ' +\n ' '+$v.name+'' +\n '

    ';\n if($v.lounge_type_id != 1 && $v.lounge_type_id != 2){\n $chtml+='' +\n '

    ' +\n $v.followers_count+ ' Followers' +\n '

    ';\n }\n $chtml+='' +\n '
    ' +\n '
    ' +\n '
    ' +\n '
    ';\n if($v.lounge_type_id == 1 || $v.lounge_type_id == 2){\n $chtml+='' +\n '
    ' +\n '
    ' +\n nurseslounge_myDashboard_manageMyLounges.add_stars($v.rating) +\n '
    ' +\n '
    ' +\n $v.rating + ' / 5 ' +\n '
    ' +\n '
    ' +\n ' ' +\n '
    ' +\n '
    ';\n }else{\n $chtml+='' +\n '
    ' +\n '
    ' +\n '     ' +\n '
    ' +\n '
    ' +\n '     ' +\n '
    ' +\n '
    ';\n }\n if($userId != 'guest' && $v.lounge_type_id != 1 && $v.lounge_type_id != 2){\n if($v.my_follow) {\n $chtml +='';\n }else{\n $chtml+='';\n }\n }\n $chtml+='' +\n '
    ' +\n '
    ' +\n '
  • ';\n });\n return $chtml;\n },\n add_stars:function($rating){\n var $chtml = '';\n for(var $i=1; $i<=5; $i++) {\n var $star = $rating - $i;\n var $offsetOn;\n var $offsetOff;\n var $unique = libs.getUniqueId();\n if($star >= 0){\n $offsetOn = 100;\n $offsetOff = 0;\n }else if($star < 0 && $star > -1){\n $star = ($star * -1);\n $offsetOff = ($star * 100);\n $offsetOn = (100 - $offsetOff);\n }else{\n $offsetOn = 0;\n $offsetOff = 100;\n }\n $chtml += '' +\n '' +\n ' ' +\n ' ';\n if($offsetOn > 0) {\n $chtml += '' +\n '';\n }\n if($offsetOff > 0){\n $chtml += '' +\n '';\n }\n $chtml += '' +\n ' ' +\n ' ' +\n ' ' +\n '';\n }\n return $chtml;\n },\n events:function($params){\n var $manageMyLoungeLeft = $(\"#nurseslounge-home-manage-my-lounges .nurseslounge-home-manage-my-lounges-left\");\n var $loungeList = $manageMyLoungeLeft.find('.manage-my-lounge-list:first');\n var $userId = libs.memoryGet('user_id');\n $loungeList.find(\".follow-action\").unbind().click(function($e){\n $e.stopPropagation();\n var $that = $(this);\n var $follow = !$that.hasClass('follow');\n var $item = $that.parents('.item:first');\n var $key = $item.data('key');\n var $params = {user_id:$userId, key:$key, follow:$follow};\n nurseslounge_lounges_home.lounges_home_list_follower_request($params, function($data){\n if($data.status == 'success'){\n var $follow = $data.data.follow;\n var $members = $data.data.members;\n $item.find('.lounge-followers:first').html($members+ ' Followers');\n if($follow){\n $item.find('.follow-action').removeClass('btn-save').removeClass('btnAnimate').addClass('btn-light').addClass('follow').html('Followed');\n }else{\n $item.find('.follow-action').removeClass('btn-light').removeClass('follow').addClass('btn-save').addClass('btnAnimate').html('Follow');\n }\n }\n });\n });\n $loungeList.find(\".claim-lounge\").unbind().click(function(){\n var $key = $(this).parents('.item:first').data('key');\n var $modal = $(\"#nurseslounge-claim-lounges-modal\");\n var $modalTitle = $modal.find(\".modal-title\");\n var $modalBody = $modal.find(\".modal-body\");\n $params = $.extend({}, $params, {key:$key});\n nurseslounge_lounge_overview.claim_lounge_form_request($params, function($chtml){\n $modalTitle.html('Contact us to own this Lounge');\n $modalBody.html($chtml).promise().done(function(){\n nurseslounge_lounge_overview.claim_lounge_validate(function($form){\n $params = $.extend({}, $params, libs.getObjForm($form));\n nurseslounge_lounge_overview.claim_lounge_request($params, function(){\n $modal.modal('hide');\n });\n });\n $modal.find(\"form input[name='phone']\").mask('+(00) 000-000-0000');\n $modal.modal('show');\n });\n });\n });\n $loungeList.find(\".open-lounge\").unbind().click(function(){\n var $key = $(this).parents('.item:first').data('key');\n var $publicLink = $(this).parents('.item:first').data('public_link');\n if($userId == 'guest'){\n window.open($publicLink,'_self');\n }else{\n router.navigate('/lounge/'+$key);\n }\n });\n $loungeList.find(\".select-count\").unbind().click(function($e){\n $e.stopPropagation();\n var $that = $(this);\n var $item = $that.parents('.item:first');\n var $key = $item.data('key');\n var $params = {user_id:$userId, key:$key};\n nurseslounge_myDashboard_manageMyLounges.open_dashboard($params);\n nurseslounge_myDashboard_manageMyLounges.report_container(function($container){\n nurseslounge_myDashboard_manageMyLounges.report($container, $params);\n });\n });\n var $selectCount = $loungeList.find(\".select-count\").length;\n if($selectCount <= 1){\n $loungeList.find(\".select-count\").hide();\n }else{\n $loungeList.find(\".select-count\").show();\n }\n if($selectCount > 0){\n $loungeList.find(\".select-count:first\").click();\n }\n },\n //Banners\n banners_location:function(cback){\n cback({\n 'banners':$(\"#nurseslounge-home-manage-my-lounges .nurseslounge-home-manage-my-lounges-right .banners\")\n });\n },\n //Report\n report_container:function(cback){\n var $container = $(\"#nurseslounge-home-manage-my-lounges .nurseslounge-home-manage-my-lounges-right .report\");\n cback($container);\n },\n report:function($container, $params){\n nurseslounge_myDashboard_manageMyLounges.report_request($params, function($chtml){\n $container.html($chtml).promise().done(function(){\n libs.refreshTooltips();\n });\n });\n },\n report_request:function($params, cback){\n $.ajax({\n type: 'POST',\n url: '/myDashboard/manageMyLounges/report/get',\n data:$params,\n method: \"POST\",\n cache:false,\n dataType: \"html\",\n success: function ($data) {\n libs.expire($data);\n cback($data);\n }\n });\n },\n //Dashboard\n open_dashboard:function($params){\n var $statisticWrapper = $(\"#nurseslounge-home-manage-my-lounges .nurseslounge-home-manage-my-lounges-left .manage-my-lounge-statistics-wrapper\");\n nurseslounge_myDashboard_manageMyLounges.open_dashboard_request($params, function($chtml){\n $statisticWrapper.html($chtml).promise().done(function(){\n nurseslounge_myDashboard_manageMyLounges.open_dashboard_events();\n });\n });\n },\n open_dashboard_request:function($params, cback){\n $.ajax({\n type: 'POST',\n url: '/myDashboard/manageMyLounges/dashboard/get',\n data:$params,\n method: \"POST\",\n cache:false,\n dataType: \"html\",\n success: function ($data) {\n libs.expire($data);\n cback($data);\n }\n });\n },\n open_dashboard_events:function(){\n libs.refreshTooltips();\n var $statisticWrapper = $(\"#nurseslounge-home-manage-my-lounges .nurseslounge-home-manage-my-lounges-left .manage-my-lounge-statistics-wrapper\");\n var $days = $statisticWrapper.find('select[name=\"days\"]');\n var $userId = libs.memoryGet('user_id');\n $days.unbind().change(function(){\n var $that = $(this);\n var $key = $that.data('key');\n var $days = $that.val();\n var $params = {user_id:$userId, key:$key, days:$days};\n nurseslounge_myDashboard_manageMyLounges.open_dashboard($params);\n });\n },\n};\n","var nurseslounge_myDashboard_myInbox = {\r\n open_my_inbox:function($params){\r\n $params = $.extend({}, $params, {user_id:libs.memoryGet('user_id')});\r\n nurseslounge_myDashboard_accountSettings.init($params);\r\n nurseslounge_myDashboard_camera.init($params);\r\n nurseslounge_myDashboard.submenu($params, function(){\r\n setTimeout(function(){\r\n nurseslounge_myDashboard_myInbox.inbox_open_chat({\r\n user_id:libs.memoryGet('user_id'),\r\n room_id:atob($params.notification_type_key),\r\n my_room_id:$params.my_room_id,\r\n limit:30\r\n });\r\n }, 1000);\r\n });\r\n },\r\n init: function ($params) {\r\n nurseslounge_myDashboard_myInbox.inbox_pagination($params);\r\n nurseslounge_myDashboard_myInbox.inbox_groups_pagination($params);\r\n var $inbox = $(\"#nurseslounge-home-my-inbox\");\r\n var $inboxLeft = $inbox.find('.nurseslounge-home-my-inbox-left');\r\n var $search = $inboxLeft.find('input[name=\"search\"]');\r\n var $addNewChat = $inboxLeft.find(\".add-new-chat\");\r\n var $groupMenu = $inboxLeft.find(\".group-menu\");\r\n var $keypressBind;\r\n $('a[data-toggle=\"tab\"]').on('shown.bs.tab', function ($e) {\r\n var $target = $($e.target);\r\n if($target.attr('href') == '#myInbox_groups_tab'){\r\n var $inboxList = $(\"#nurseslounge-home-my-inbox .nurseslounge-home-my-inbox-left\");\r\n var $colleaguesList = $inboxList.find(\".groups-list\");\r\n var $colleaguesListHeight = $colleaguesList.height() + 10;\r\n $inboxList.find(\".groups-list-wrapper\").height($colleaguesListHeight);\r\n $groupMenu.show();\r\n }else{\r\n var $inboxList = $(\"#nurseslounge-home-my-inbox .nurseslounge-home-my-inbox-left\");\r\n var $colleaguesList = $inboxList.find(\".colleagues-list\");\r\n var $colleaguesListHeight = $colleaguesList.height() + 10;\r\n $inboxList.find(\".colleagues-list-wrapper\").height($colleaguesListHeight);\r\n $groupMenu.hide();\r\n }\r\n });\r\n $search.unbind().on('keypress keyup keydown', function(){\r\n var $that = $(this);\r\n $params = $.extend({}, $params, {\r\n search:$that.val()\r\n });\r\n try{\r\n clearTimeout($keypressBind);\r\n }catch($e){\r\n\r\n }\r\n $keypressBind = setTimeout(function(){\r\n nurseslounge_myDashboard_myInbox.inbox_pagination($params);\r\n nurseslounge_myDashboard_myInbox.inbox_groups_pagination($params);\r\n }, 800);\r\n });\r\n $addNewChat.unbind().click(function(){\r\n nurseslounge_myDashboard_myInbox.add_new_chat($params);\r\n });\r\n },\r\n inbox_refresh_list_answers:function($obj){\r\n var $myInbox = $(\"#nurseslounge-home-my-inbox\");\r\n var $myInboxRight = $myInbox.find('.nurseslounge-home-my-inbox-right');\r\n var $roomId = $myInboxRight.find('.heading-name-meta:first').data('room_id');\r\n var $heading = $myInboxRight.find('.heading');\r\n var $chatWrapper = $myInboxRight.find('.colleagues-chat-wrapper');\r\n var $reply = $myInboxRight.find('.reply');\r\n if($roomId == $obj.room_id && $obj.delete){\r\n $heading.html('');\r\n $chatWrapper.html('' +\r\n '
    ' +\r\n '

    Select or search for colleagues on the left to start a conversation.

    ' +\r\n '
    ');\r\n $reply.html('');\r\n }\r\n nurseslounge_myDashboard_myInbox.inbox_pagination({\r\n user_id:libs.memoryGet('user_id')\r\n });\r\n nurseslounge_myDashboard_myInbox.inbox_groups_pagination({\r\n user_id:libs.memoryGet('user_id')\r\n });\r\n },\r\n add_new_chat:function($params){\r\n var $myInbox = $(\"#nurseslounge-home-myinbox-create-group\");\r\n var $usersList = $myInbox.find(\".users-list\");\r\n var $newUser = $myInbox.find(\"input[name='newUser']\");\r\n var $groupName = $myInbox.find(\"input[name='groupName']\");\r\n $myInbox.on('show.bs.modal', function () {\r\n $newUser.val('');\r\n $groupName.val('');\r\n });\r\n var $btnCreate = $myInbox.find(\".btn-create\");\r\n var $chtml = '';\r\n var $ids = [];\r\n $params = $.extend({}, $params, {\r\n pageSize: 10,\r\n pageNumber: 1,\r\n show:\"my-colleagues\"\r\n });\r\n nurseslounge_myDashboard_myInbox.add_new_chat_autocomplete(\r\n $newUser,\r\n $params,\r\n '/myDashboard/myInbox/colleagues/get',\r\n function($userId){\r\n var $params = {\r\n add_user_id:$userId,\r\n user_id:libs.memoryGet('user_id')\r\n };\r\n $chtml = '' +\r\n '
    ' +\r\n '
    ' +\r\n ' ' +\r\n '

    Loading

    '+\r\n '
    ' +\r\n '
    ';\r\n if($usersList.find('.item').length == 0){\r\n $usersList.html($chtml).promise().done(function(){\r\n libs.checkImageLoad($usersList.find('img'), function(){\r\n nurseslounge_myDashboard_myInbox.add_new_user_request($params, function($data){\r\n var $user = $data.data.user;\r\n $newUser.val('');\r\n $chtml = '' +\r\n '
  • ' +\r\n '
    ' +\r\n ' ' +\r\n '
    ' +\r\n '
    ' +\r\n '
    ' +\r\n '
    ' +\r\n ' \"profile\"' +\r\n '
    ' +\r\n '
    ' +\r\n '
    '+$user.long_name+'
    ' +\r\n '

    '+$user.profile.profile+'

    ' +\r\n '
    ' +\r\n '
    ' +\r\n '
    ' +\r\n '
  • ';\r\n $usersList.html($chtml).promise().done(function(){\r\n nurseslounge_myDashboard_myInbox.new_item_events();\r\n });\r\n });\r\n });\r\n });\r\n }else{\r\n var $savedHtml = $usersList.html();\r\n $usersList.html($chtml).promise().done(function(){\r\n libs.checkImageLoad($usersList.find('img'), function() {\r\n nurseslounge_myDashboard_myInbox.add_new_user_request($params, function ($data) {\r\n var $user = $data.data.user;\r\n $newUser.val('');\r\n $chtml = '' +\r\n '
  • ' +\r\n '
    ' +\r\n ' ' +\r\n '
    ' +\r\n '
    ' +\r\n '
    ' +\r\n '
    ' +\r\n ' \"profile\"' +\r\n '
    ' +\r\n '
    ' +\r\n '
    ' + $user.long_name + '
    ' +\r\n '

    ' + $user.profile.profile + '

    ' +\r\n '
    ' +\r\n '
    ' +\r\n '
    ' +\r\n '
  • ';\r\n $usersList.html($savedHtml + $chtml).promise().done(function () {\r\n nurseslounge_myDashboard_myInbox.new_item_events();\r\n });\r\n });\r\n });\r\n });\r\n }\r\n }\r\n );\r\n $btnCreate.unbind().click(function(){\r\n var $groupNameVal = $groupName.val();\r\n if($groupNameVal != ''){\r\n $usersList.find('.item').each(function($i, $v){\r\n $ids.push($($v).data('id'));\r\n });\r\n nurseslounge_myDashboard_myInbox.create_new_chat_request({\r\n user_id:libs.memoryGet('user_id'),\r\n group_name:$groupNameVal,\r\n ids:$ids\r\n }, function($data){\r\n $groupName.val('');\r\n $usersList.html('');\r\n $myInbox.modal('hide');\r\n $(\"a[href='#myInbox_groups_tab']\").click();\r\n setTimeout(function(){\r\n socketFunctions.inbox_refresh_list({\r\n room_id:$data.data.room_id,\r\n delete:false\r\n });\r\n nurseslounge_myDashboard_myInbox.inbox_open_chat({\r\n user_id:libs.memoryGet('user_id'),\r\n my_room_id:libs.memoryGet('my_room_id'),\r\n room_id:$data.data.room_id,\r\n limit:30\r\n });\r\n }, 1000);\r\n });\r\n }else{\r\n alert(\"You have to chose a name for the group\");\r\n }\r\n });\r\n $myInbox.modal('show');\r\n },\r\n //Popup\r\n add_new_chat_autocomplete:function($target, $data, $url, cback){\r\n try {\r\n $($target).autocomplete(\"destroy\");\r\n }catch (e) {\r\n }\r\n var $arrId = [];\r\n var $arrData = [];\r\n var $value = '';\r\n $($target).autocomplete({\r\n minLength\t:2,\r\n search\t\t: function(){\r\n $(this).addClass(\"ui-autocomplete-loading\");\r\n },\r\n open \t\t: function(){\r\n $(this).removeClass(\"ui-autocomplete-loading\");\r\n },\r\n source: function(request, response) {\r\n $.ajax({\r\n method: 'POST',\r\n url:$url,\r\n data:$.extend({},{\r\n keyword:$($target).val()\r\n }, $data),\r\n dataType: \"json\",\r\n success: function($data){\r\n libs.expire($data);\r\n $arrId.length = 0;\r\n $arrData.length = 0;\r\n $value = '';\r\n $.each($data,function($i,$v){\r\n $arrData.push('\"'+$v.value+'\"');\r\n $arrId.push([$v.id, $v.value]);\r\n });\r\n response(JSON.parse(\"[\"+$arrData.join(\",\")+\"]\"));\r\n }\r\n });\r\n },\r\n create:function(){\r\n $(this).prev().remove();\r\n $(this).trigger(\"keypress.autocomplete\");\r\n },\r\n select: function (event, ui) {\r\n $value = ui.item.value;\r\n $(this).val($value).blur();\r\n $.each($arrId, function($i, $v){\r\n if($v[1] == $value){\r\n cback($v[0]);\r\n }\r\n });\r\n }\r\n }).keypress(function ($e) {\r\n if ($e.which == 13) {\r\n cback($(this).val());\r\n $(this).autocomplete(\"close\");\r\n }\r\n });\r\n },\r\n add_new_user_request:function($params, cback){\r\n $.ajax({\r\n method: 'POST',\r\n url: '/myDashboard/myInbox/group/userAdd',\r\n data: $params,\r\n dataType: \"json\",\r\n success: function ($data) {\r\n libs.expire($data);\r\n if ($data.status == 'success') {\r\n cback($data);\r\n }\r\n }\r\n });\r\n },\r\n new_item_events:function(){\r\n var $myInbox = $(\"#nurseslounge-home-myinbox-create-group\");\r\n var $usersList = $myInbox.find(\".users-list\");\r\n var $item = $usersList.find('.item');\r\n $item.unbind().click(function(){\r\n var $that = $(this);\r\n $that.remove();\r\n });\r\n },\r\n create_new_chat_request:function($params, cback){\r\n $.ajax({\r\n method: 'POST',\r\n url: '/myDashboard/myInbox/chat/create',\r\n data: $params,\r\n dataType: \"json\",\r\n success: function ($data) {\r\n libs.expire($data);\r\n cback($data);\r\n }\r\n });\r\n },\r\n //Pagination\r\n inbox_pagination:function($params){\r\n var $reload;\r\n var $loaded = false;\r\n var $afterFirstPagination = false;\r\n var $inboxList = $(\"#nurseslounge-home-my-inbox .nurseslounge-home-my-inbox-left\");\r\n var $colleaguesList = $inboxList.find(\".colleagues-list\");\r\n var $paginationNav = $inboxList.find('.pagination-nav:eq(0)');\r\n var $resultInfo = $inboxList.find(\".result-info-count:eq(0)\");\r\n var $paginationObj;\r\n try{\r\n $paginationObj = libs.memoryGet('inbox_pagination');\r\n if($paginationObj){\r\n $paginationObj.pagination('destroy');\r\n }\r\n }catch ($e) {\r\n }\r\n try{\r\n $paginationObj = $paginationNav.pagination({\r\n pageSize:4,\r\n showPageNumbers: true,\r\n showPrevious: true,\r\n showNext: true,\r\n showNavigator: true,\r\n showFirstOnEllipsisShow: true,\r\n showLastOnEllipsisShow: true,\r\n dataSource:window.location.protocol +'//'+ window.location.hostname + \"/myDashboard/myInbox/rooms/users/get\",\r\n locator: 'data.chat_room_users',\r\n ajax:{\r\n method: \"POST\",\r\n cache:false,\r\n dataType: \"json\",\r\n data:$params,\r\n beforeSend: function() {\r\n $colleaguesList.html(nurseslounge_myDashboard_myInbox.inbox_chat_room_users_preview());\r\n },\r\n complete:function($data){\r\n libs.expire($data.responseJSON);\r\n }\r\n },\r\n totalNumberLocator: function($data) {\r\n return $data.data.total;\r\n },\r\n callback: function($data, $pagination) {\r\n $loaded = true;\r\n if($colleaguesList.length > 0 && $colleaguesList.offset().top > 0 && $afterFirstPagination){\r\n $('html, body').animate({scrollTop:$colleaguesList.offset().top - 100});\r\n }else{\r\n $afterFirstPagination = true;\r\n }\r\n var $pageNumber = $pagination.pageNumber;\r\n var $pageSize = $pagination.pageSize;\r\n var $totalNumber = $pagination.totalNumber;\r\n var $first = $totalNumber > 0 ? (($pageNumber-1) * $pageSize) + 1 : 0;\r\n var $last = $totalNumber > 0 ? ($first + $data.length - 1) : 0;\r\n $paginationNav.removeClass('loading');\r\n $resultInfo.removeClass('loading').html('Showing ' + $first + ' - ' + $last + ' of ' + $totalNumber + ' results for Colleagues');\r\n var $chtml = nurseslounge_myDashboard_myInbox.inbox_chat_room_users_html($data);\r\n if($chtml != ''){\r\n $paginationNav.show();\r\n $resultInfo.show();\r\n $colleaguesList.show();\r\n libs.checkImageLoad($($chtml).find('img'), function () {\r\n $colleaguesList.html('').html($chtml).promise().done(function () {\r\n var $colleaguesListHeight = $colleaguesList.height() + 10;\r\n $inboxList.find(\".colleagues-list-wrapper\").height($colleaguesListHeight);\r\n nurseslounge_myDashboard_myInbox.inbox_chat_room_users_events();\r\n });\r\n });\r\n }else{\r\n $paginationNav.hide();\r\n $resultInfo.hide();\r\n $colleaguesList.hide();\r\n }\r\n }\r\n });\r\n libs.memorySave('inbox_pagination', $paginationObj);\r\n $reload = setTimeout(function(){\r\n if(!$loaded){\r\n nurseslounge_myDashboard_myInbox.inbox_pagination($params);\r\n }else{\r\n clearTimeout($reload);\r\n }\r\n }, 10000);\r\n }catch ($e){\r\n\r\n }\r\n },\r\n inbox_groups_pagination:function($params){\r\n var $reload;\r\n var $loaded = false;\r\n var $afterFirstPagination = false;\r\n var $inboxList = $(\"#nurseslounge-home-my-inbox .nurseslounge-home-my-inbox-left\");\r\n var $colleaguesList = $inboxList.find(\".groups-list\");\r\n var $paginationNav = $inboxList.find('.pagination-nav:eq(1)');\r\n var $resultInfo = $inboxList.find(\".result-info-count:eq(1)\");\r\n var $paginationObj;\r\n try{\r\n $paginationObj = libs.memoryGet('inbox_groups_pagination');\r\n if($paginationObj){\r\n $paginationObj.pagination('destroy');\r\n }\r\n }catch ($e) {\r\n }\r\n try{\r\n $paginationObj = $paginationNav.pagination({\r\n pageSize:4,\r\n showPageNumbers: true,\r\n showPrevious: true,\r\n showNext: true,\r\n showNavigator: true,\r\n showFirstOnEllipsisShow: true,\r\n showLastOnEllipsisShow: true,\r\n dataSource:window.location.protocol +'//'+ window.location.hostname + \"/myDashboard/myInbox/rooms/groups/get\",\r\n locator: 'data.chat_room_groups',\r\n ajax:{\r\n method: \"POST\",\r\n cache:false,\r\n dataType: \"json\",\r\n data:$params,\r\n beforeSend: function() {\r\n $colleaguesList.html(nurseslounge_myDashboard_myInbox.inbox_chat_room_users_preview());\r\n },\r\n complete:function($data){\r\n libs.expire($data.responseJSON);\r\n }\r\n },\r\n totalNumberLocator: function($data) {\r\n return $data.data.total;\r\n },\r\n callback: function($data, $pagination) {\r\n $loaded = true;\r\n if($colleaguesList.length > 0 && $colleaguesList.offset().top > 0 && $afterFirstPagination){\r\n $('html, body').animate({scrollTop:$colleaguesList.offset().top - 100});\r\n }else{\r\n $afterFirstPagination = true;\r\n }\r\n var $pageNumber = $pagination.pageNumber;\r\n var $pageSize = $pagination.pageSize;\r\n var $totalNumber = $pagination.totalNumber;\r\n var $first = $totalNumber > 0 ? (($pageNumber-1) * $pageSize) + 1 : 0;\r\n var $last = $totalNumber > 0 ? ($first + $data.length - 1) : 0;\r\n $paginationNav.removeClass('loading');\r\n $resultInfo.removeClass('loading').html('Showing ' + $first + ' - ' + $last + ' of ' + $totalNumber + ' results for Groups');\r\n var $chtml = nurseslounge_myDashboard_myInbox.inbox_chat_room_users_html($data);\r\n if($chtml != ''){\r\n $paginationNav.show();\r\n $resultInfo.show();\r\n $colleaguesList.show();\r\n libs.checkImageLoad($($chtml).find('img'), function () {\r\n $colleaguesList.html('').html($chtml).promise().done(function () {\r\n var $colleaguesListHeight = $colleaguesList.height() + 10;\r\n $inboxList.find(\".groups-list-wrapper\").height($colleaguesListHeight);\r\n nurseslounge_myDashboard_myInbox.inbox_chat_group_users_events();\r\n });\r\n });\r\n }else{\r\n $paginationNav.hide();\r\n $resultInfo.hide();\r\n $colleaguesList.hide();\r\n }\r\n }\r\n });\r\n libs.memorySave('inbox_groups_pagination', $paginationObj);\r\n $reload = setTimeout(function(){\r\n if(!$loaded){\r\n nurseslounge_myDashboard_myInbox.inbox_groups_pagination($params);\r\n }else{\r\n clearTimeout($reload);\r\n }\r\n }, 10000);\r\n }catch ($e){\r\n\r\n }\r\n },\r\n inbox_chat_room_users_preview:function(){\r\n var $chtml = '';\r\n for(var $i=1; $i<=1; $i++){\r\n $chtml+= '' +\r\n '
  • ' +\r\n '
    ' +\r\n '
    ' +\r\n '
    ' +\r\n '
    ' +\r\n '        ' +\r\n '        ' +\r\n '        ' +\r\n '        ' +\r\n '
    ' +\r\n '
    ' +\r\n '
    ' +\r\n '        ' +\r\n '        ' +\r\n '
    ' +\r\n '

    ' +\r\n '        ' +\r\n '        ' +\r\n '

    ' +\r\n '
    ' +\r\n '
    ' +\r\n '
    ' +\r\n '
    ' +\r\n '
  • ' +\r\n '';\r\n }\r\n return $chtml;\r\n },\r\n inbox_chat_room_users_html:function($chat_room_users){\r\n var $chtml = '';\r\n $.each($chat_room_users, function($i, $v){\r\n var $img = $v.chat_rooms.chat_image_root_wall;\r\n var $name = $v.chat_rooms.name;\r\n $chtml += '' +\r\n '
  • ' +\r\n '
    ' +\r\n '
    ' +\r\n '
    ' +\r\n '
    ';\r\n if($v.chat_rooms.user_id){\r\n $chtml += '\"profile\"';\r\n }\r\n $chtml += '' +\r\n '
    ' +\r\n '
    ';\r\n if($name.length > 30){\r\n $name = $name.substr(0, 30);\r\n }\r\n $chtml += '
    ' + $name + '
    ';\r\n if($v.chat_rooms.user_profile.profile){\r\n $chtml += '' +\r\n '

    ' +\r\n $v.chat_rooms.user_profile.profile +\r\n '

    ';\r\n }\r\n $chtml += '' +\r\n '
    ';\r\n if($v.inbox_messages > 0){\r\n $chtml += '' +\r\n ' ' +\r\n $v.inbox_messages +\r\n ' ';\r\n }\r\n $chtml += '' +\r\n '
    ' +\r\n '
    ' +\r\n '
    ' +\r\n '
  • ' +\r\n '';\r\n });\r\n return $chtml;\r\n },\r\n //Events\r\n inbox_chat_room_users_events:function(){\r\n var $inbox = $(\"#nurseslounge-home-my-inbox\");\r\n var $inboxLeft = $inbox.find('.nurseslounge-home-my-inbox-left');\r\n var $colleaguesList = $inboxLeft.find('.colleagues-list');\r\n var $openChat = $colleaguesList.find('.open-chat');\r\n $openChat.unbind().click(function(){\r\n var $that = $(this);\r\n var $roomId = $that.data('room_id');\r\n nurseslounge_myDashboard_myInbox.inbox_open_chat({\r\n user_id:libs.memoryGet('user_id'),\r\n my_room_id:libs.memoryGet('my_room_id'),\r\n room_id:$roomId,\r\n limit:30\r\n });\r\n });\r\n },\r\n inbox_chat_group_users_events:function(){\r\n var $inbox = $(\"#nurseslounge-home-my-inbox\");\r\n var $inboxLeft = $inbox.find('.nurseslounge-home-my-inbox-left');\r\n var $colleaguesList = $inboxLeft.find('.groups-list');\r\n var $openChat = $colleaguesList.find('.open-chat');\r\n $openChat.unbind().click(function(){\r\n var $that = $(this);\r\n var $roomId = $that.data('room_id');\r\n var $myRoomId = $that.data('my_room_id');\r\n nurseslounge_myDashboard_myInbox.inbox_open_chat({\r\n user_id:libs.memoryGet('user_id'),\r\n my_room_id:libs.memoryGet('my_room_id'),\r\n room_id:$roomId,\r\n limit:30\r\n });\r\n });\r\n },\r\n inbox_open_chat:function($params){\r\n socketFunctions.inbox_open_chat_room_by_id($params);\r\n },\r\n inbox_open_chat_room_by_id_answer:function($data){\r\n var $usersIds = $data.users_ids;\r\n var $room = $data.room;\r\n var $chat = $room.chat;\r\n var $messages = $room.messages;\r\n var $isOwner = $room.is_owner;\r\n var $inbox = $(\"#nurseslounge-home-my-inbox\");\r\n var $inboxRight = $inbox.find('.nurseslounge-home-my-inbox-right');\r\n var $chatWrapper = $inboxRight.find('.colleagues-chat-wrapper');\r\n var $userId = libs.memoryGet('user_id');\r\n var $chtml = '';\r\n var $image = $chat && $chat.chat_image_root ? $chat.chat_image_root : 'bimg/NursesLounge/friend-avatar.png';\r\n var $chatName = $chat && $chat.name ? $chat.name : '';\r\n var $chatId = $chat && $chat.id ? $chat.id : '';\r\n var $chatUserId = $chat && $chat.user_id ? $chat.user_id : null;\r\n if($.inArray($userId, $usersIds) > -1) {\r\n if($chatUserId){\r\n $chtml += '' +\r\n '
    ' +\r\n '
    ' +\r\n ' ' +\r\n '
    ' +\r\n '
    ';\r\n }else{\r\n $chtml += '' +\r\n '
    ';\r\n }\r\n if($chatName.length > 30){\r\n $chatName = $chatName.substr(0, 30);\r\n }\r\n $chtml += '' +\r\n '
    ' +\r\n ' '+$chatName+'' +\r\n '
    ' +\r\n '
    ' +\r\n '
    ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n '
    ' +\r\n ' Chat room details' +\r\n ' Delete Messages';\r\n if(!$chatUserId){\r\n $chtml += ' Delete Chat';\r\n }\r\n $chtml += '' +\r\n '
    ' +\r\n '
    ' +\r\n '
    ';\r\n }\r\n var $heading = $inboxRight.find('.heading');\r\n $heading.html($chtml).promise().done(function(){\r\n var $reply = $inboxRight.find('.reply');\r\n $chtml = '';\r\n if($.inArray($userId, $usersIds) > -1) {\r\n $chtml += '' +\r\n '
    ' +\r\n '    ' +\r\n //' ' +\r\n '
    ' +\r\n '
    ' +\r\n ' ' +\r\n '
    ' +\r\n '
    ' +\r\n '    ' +\r\n //' ' +\r\n '
    ' +\r\n '
    ' +\r\n ' ' +\r\n ' ' +\r\n '
    ';\r\n }\r\n $reply.html($chtml).promise().done(function(){\r\n $chtml = '';\r\n $.each($messages, function($i, $v){\r\n if($userId == $v.user_id){\r\n $chtml += '' +\r\n '
    ' +\r\n '
    ' +\r\n '
    ' +\r\n ' ' +\r\n $v.created +\r\n ' ' +\r\n '
    ' +\r\n $v.message +\r\n '
    ' +\r\n '
    ' +\r\n '
    ' +\r\n '
    ';\r\n }else{\r\n $chtml += '' +\r\n '
    ' +\r\n '
    ' +\r\n '
    ' +\r\n ' ' +\r\n $v.created +\r\n ' ' +\r\n '
    ' +\r\n $v.long_name +\r\n '
    ' +\r\n '
    ' +\r\n $v.message +\r\n '
    ' +\r\n '
    ' +\r\n '
    ' +\r\n '
    ';\r\n }\r\n });\r\n $chatWrapper.html('').html($chtml).promise().done(function(){\r\n var $scrollHeight = $chatWrapper[0].scrollHeight;\r\n var $offsetHeight = $chatWrapper[0].offsetHeight;\r\n var $scrollTop = $scrollHeight - $offsetHeight;\r\n $chatWrapper.scrollTop($scrollTop);\r\n $chatWrapper.unbind().scroll(function(){\r\n var $that = $(this);\r\n var $scrollHeight = $that[0].scrollHeight;\r\n var $offsetHeight = $that[0].offsetHeight;\r\n var $scrollTop = $scrollHeight - $offsetHeight;\r\n if($scrollTop > 20 && $that.scrollTop() < 20){\r\n var $inbox = $(\"#nurseslounge-home-my-inbox\");\r\n var $inboxRight = $inbox.find('.nurseslounge-home-my-inbox-right');\r\n var $chatWrapper = $inboxRight.find('.colleagues-chat-wrapper');\r\n var $messageDivs = $chatWrapper.find('.message');\r\n socketFunctions.inbox_refresh_top_room({\r\n user_id: $userId,\r\n room_id:$chat.id,\r\n offset:$messageDivs.length,\r\n limit:30\r\n });\r\n }\r\n });\r\n nurseslounge_myDashboard_myInbox.inbox_open_chat_room_by_id_answer_events($data);\r\n });\r\n });\r\n });\r\n nurseslounge_myDashboard_myInbox.inbox_pagination({user_id:libs.memoryGet('user_id')});\r\n nurseslounge_myDashboard_myInbox.inbox_groups_pagination({user_id:libs.memoryGet('user_id')});\r\n },\r\n inbox_open_chat_room_by_id_answer_events:function($data){\r\n var $myRoomId = libs.memoryGet('my_room_id');\r\n var $userId = libs.memoryGet('user_id');\r\n var $room = $data.room;\r\n var $chat = $room.chat;\r\n var $inbox = $(\"#nurseslounge-home-my-inbox\");\r\n var $inboxRight = $inbox.find('.nurseslounge-home-my-inbox-right');\r\n var $comment = $inboxRight.find('textarea[name=\"comment\"]');\r\n var $replySend = $inboxRight.find('.reply-send');\r\n var $message = '';\r\n var $params = {};\r\n var $heading = $inboxRight.find('.heading');\r\n var $option = $heading.find('.option');\r\n var $headingNameMeta = $heading.find('.heading-name-meta');\r\n $comment.unbind().on('keypress',function($e) {\r\n if($e.which == 13) {\r\n $message = $comment.val();\r\n $params = {\r\n user_id: $userId,\r\n room_id:$chat.id,\r\n my_room_id:$myRoomId,\r\n message: $message\r\n };\r\n $comment.val('');\r\n nurseslounge_myDashboard_myInbox.inbox_write_message_request($params, function(){\r\n socketFunctions.inbox_refresh_room({\r\n user_id: $userId,\r\n room_id:$chat.id,\r\n my_room_id:$myRoomId,\r\n limit:30\r\n });\r\n });\r\n }\r\n });\r\n $replySend.unbind().click(function () {\r\n $message = $comment.val();\r\n $params = {\r\n user_id: $userId,\r\n room_id:$chat.id,\r\n my_room_id:$myRoomId,\r\n message: $message\r\n };\r\n $comment.val('');\r\n nurseslounge_myDashboard_myInbox.inbox_write_message_request($params, function(){\r\n socketFunctions.inbox_refresh_room({\r\n user_id: $userId,\r\n room_id:$chat.id,\r\n my_room_id:$myRoomId,\r\n limit:30\r\n });\r\n });\r\n });\r\n $option.unbind().click(function(){\r\n var $modal = $(\"#nurseslounge-home-myinbox-group-manager\");\r\n var $usersList = $modal.find('.users-list');\r\n var $groupImage = $modal.find('.group_image');\r\n var $groupName = $modal.find('.group_name');\r\n var $that = $(this);\r\n var $option = $that.data('option');\r\n var $roomId = $headingNameMeta.data('room_id');\r\n var $chtml = '';\r\n var $params = {\r\n user_id:libs.memoryGet('user_id'),\r\n room_id:$roomId,\r\n my_room_id:$myRoomId\r\n };\r\n switch($option){\r\n case 'detail':\r\n nurseslounge_myDashboard_myInbox.inbox_information_request($params, function($data){\r\n var $chatRoom = $data.data.chat_rooms;\r\n var $chatRoomUsers = $data.data.chat_room_users;\r\n var $canEdit = $data.data.is_owner == 1;\r\n var $groupChatRoom = $data.data.group_chat_room;\r\n var $image = '';\r\n if($chatRoom.chat_image_root){\r\n $image = '/images/' + $chatRoom.chat_image_root;\r\n }else{\r\n $image = '/bimg/NursesLounge/friend-avatar.png?resize=80';\r\n }\r\n $chtml = '';\r\n $chtml += '' +\r\n '
    '+\r\n ' \"camera\"';\r\n if($groupChatRoom) {\r\n $chtml += '' +\r\n '
    ' +\r\n ' ' +\r\n ' ' +\r\n ' \"camera\"' +\r\n ' ' +\r\n '
    ' +\r\n ' Camera' +\r\n ' Storage' +\r\n ' Delete' +\r\n '
    ' +\r\n '
    '+\r\n '
    ';\r\n }\r\n $chtml += '' +\r\n '
    '+\r\n '
    ' +\r\n ' ' +\r\n '
    ' +\r\n '
    ' +\r\n ' ' +\r\n ' ' +\r\n '
    ' +\r\n '
    ';\r\n $groupImage.html($chtml).promise().done(function(){\r\n $groupImage = $modal.find('.group_image');\r\n var $chatImageDropdownMenu = $groupImage.find('.chat-image-dropdown-menu .option');\r\n $chatImageDropdownMenu.unbind().click(function(){\r\n var $that = $(this);\r\n var $option = $that.data('option');\r\n $params = $.extend({}, $params, {\r\n option:$option\r\n });\r\n switch($option){\r\n case 'camera':\r\n nurseslounge_myDashboard_myInbox.inbox_open_camera_request($params);\r\n break;\r\n case 'storage':\r\n nurseslounge_myDashboard_myInbox.inbox_open_storage_request($params);\r\n break;\r\n case 'delete':\r\n nurseslounge_myDashboard_myInbox.inbox_delete_image_request($params, function(){\r\n nurseslounge_myDashboard_myInbox.inbox_open_chat({\r\n user_id:libs.memoryGet('user_id'),\r\n room_id:$chat.id,\r\n my_room_id:$myRoomId,\r\n limit:30\r\n });\r\n });\r\n break;\r\n }\r\n });\r\n $chtml = '';\r\n $chtml += '' +\r\n '
    '+\r\n '
    ';\r\n if($groupChatRoom){\r\n $chtml += '' +\r\n '
    ' +\r\n '' +\r\n '
    ';\r\n }\r\n $chtml += '' +\r\n '
    ' +\r\n $chatRoom.name +\r\n '
    ';\r\n if($groupChatRoom){\r\n $chtml += '' +\r\n '
    ' +\r\n ' ' +\r\n '
    ';\r\n }\r\n $chtml += '' +\r\n '
    ' +\r\n '
    ';\r\n $groupName.html($chtml).promise().done(function () {\r\n $groupName = $modal.find('.group_name');\r\n var $btnEdit = $groupName.find('.btn-edit');\r\n var $chatRoomNameImput = $groupName.find('.chatroom-name-input');\r\n var $chatRoomName = $groupName.find('.chatroom-name');\r\n var $groupNameInput = $groupName.find('input[name=\"group_name\"]');\r\n var $edit = 0;\r\n $btnEdit.unbind().click(function(){\r\n if($edit == 0){\r\n $chatRoomName.hide();\r\n $chatRoomNameImput.show();\r\n $btnEdit.html('');\r\n var $groupNameVal = $groupNameInput.val();\r\n $params = $.extend({}, $params, {\r\n group_name:$groupNameInput.val()\r\n });\r\n $btnEdit.unbind().click(function(){\r\n nurseslounge_myDashboard_myInbox.inbox_edit_information_request($params, function($data){\r\n $chatRoomName.html($groupNameVal).promise().done(function(){\r\n $chatRoomName.show();\r\n $chatRoomNameImput.hide();\r\n $btnEdit.html('');\r\n $edit = 0;\r\n });\r\n });\r\n });\r\n $edit = 1;\r\n }else{\r\n $chatRoomName.show();\r\n $chatRoomNameImput.hide();\r\n $btnEdit.html('');\r\n $edit = 0;\r\n }\r\n });\r\n\r\n $chtml = '';\r\n $.each($chatRoomUsers, function($i, $v){\r\n var $isOwner = $v.is_owner == 1;\r\n var $user = $v.user;\r\n $chtml += '' +\r\n '
  • ';\r\n if($canEdit && !$isOwner){\r\n $chtml += '' +\r\n '
    ' +\r\n ' ' +\r\n '
    ';\r\n }\r\n $chtml += '' +\r\n '
    ' +\r\n '
    ' +\r\n '
    ' +\r\n ' \"profile\"' +\r\n '
    ' +\r\n '
    ' +\r\n '
    '+$user.long_name+'
    ' +\r\n '

    '+$user.profile.profile+'

    ' +\r\n '
    ';\r\n if($isOwner) {\r\n $chtml += '' +\r\n '
    ' +\r\n ' Chat Room Admin' +\r\n '
    ';\r\n }\r\n $chtml += '' +\r\n '
    ' +\r\n '
    ' +\r\n '
  • ';\r\n });\r\n $usersList.html($chtml).promise().done(function(){\r\n nurseslounge_myDashboard_myInbox.inbox_delete_user($params);\r\n });\r\n $modal.modal('show');\r\n });\r\n });\r\n });\r\n break;\r\n case 'delete_messages':\r\n nurseslounge_myDashboard_myInbox.inbox_delete_messages_request($params, function(){\r\n nurseslounge_myDashboard_myInbox.inbox_open_chat({\r\n user_id:libs.memoryGet('user_id'),\r\n room_id:$roomId,\r\n my_room_id:$myRoomId,\r\n limit:30\r\n });\r\n });\r\n break;\r\n case 'delete_chat':\r\n socketFunctions.inbox_refresh_list({\r\n room_id:$roomId,\r\n delete:true\r\n });\r\n nurseslounge_myDashboard_myInbox.inbox_delete_group_request($params, function(){\r\n nurseslounge_myDashboard_myInbox.inbox_groups_pagination({\r\n user_id:libs.memoryGet('user_id')\r\n });\r\n });\r\n break;\r\n }\r\n });\r\n },\r\n //Camera\r\n inbox_open_camera_request:function($params){\r\n var $modal = $(\"#nurseslounge-home-myinbox-group-manager\");\r\n var $groupImage = $modal.find('.group_image');\r\n var $groupName = $modal.find('.group_name');\r\n var $myRoomCamera = $modal.find('.my-room-camera');\r\n var $cameraButtons = $modal.find('.camera-buttons');\r\n var $takeCameraPicture = $cameraButtons.find('.take-camera-picture');\r\n var $saveCameraPicture = $cameraButtons.find('.save-camera-picture');\r\n var $backCameraButtons = $modal.find('.back-camera-picture');\r\n var $profileImg = $groupImage.find('.profile-img');\r\n var $profileImgImg = $profileImg.find('img:first');\r\n $profileImg.hide();\r\n $groupName.hide();\r\n $myRoomCamera.show();\r\n $cameraButtons.show();\r\n $backCameraButtons.show();\r\n Webcam.attach('.my-room-camera');\r\n $backCameraButtons.unbind().click(function(){\r\n $profileImg.show();\r\n $groupName.show();\r\n $myRoomCamera.hide();\r\n $cameraButtons.hide();\r\n $backCameraButtons.hide();\r\n Webcam.reset();\r\n });\r\n $backCameraButtons.css('marginTop', -20);\r\n $cameraButtons.css('top', 0);\r\n $saveCameraPicture.removeClass('active');\r\n $takeCameraPicture.html('Take Picture').unbind().click(function(){\r\n Webcam.snap( function($imageBase64) {\r\n $myRoomCamera.html('').promise().done(function(){\r\n var $image = $(\"#my-room-camera-previous-image\").cropme({\r\n \"container\": {\r\n \"width\": $myRoomCamera.width(),\r\n \"height\": $myRoomCamera.height()\r\n },\r\n \"viewport\": {\r\n \"width\": ($myRoomCamera.width() - 140),\r\n \"height\": ($myRoomCamera.width() - 140),\r\n \"type\": \"circle\",\r\n \"border\": {\r\n \"width\": 5,\r\n \"enable\": true,\r\n \"color\": \"#ffffff\"\r\n }\r\n },\r\n \"zoom\": {\r\n \"enable\": true,\r\n \"mouseWheel\": true,\r\n \"slider\": true\r\n },\r\n \"rotation\": {\r\n \"slider\": false,\r\n \"enable\": false,\r\n \"position\": \"left\"\r\n },\r\n \"transformOrigin\": \"viewport\"\r\n });\r\n $saveCameraPicture.unbind().click(function(){\r\n $image.cropme('crop', {\r\n type: 'base64'\r\n }).then(function($imageBase64) {\r\n $params = $.extend({}, $params, {\r\n image:$imageBase64\r\n });\r\n nurseslounge_myDashboard_myInbox.inbox_save_chat_room_request($params, function($data){\r\n $profileImg.show();\r\n $groupName.show();\r\n $myRoomCamera.hide();\r\n $backCameraButtons.hide();\r\n $cameraButtons.hide();\r\n $profileImgImg.attr('src', $imageBase64);\r\n nurseslounge_myDashboard_myInbox.inbox_open_chat({\r\n user_id:libs.memoryGet('user_id'),\r\n room_id:$params.room_id,\r\n my_room_id:$params.my_room_id,\r\n limit:30\r\n });\r\n });\r\n });\r\n }).addClass('active');\r\n $takeCameraPicture.html('Reset').unbind().click(function(){\r\n nurseslounge_myDashboard_myInbox.inbox_open_camera_request($params);\r\n });\r\n $backCameraButtons.css('marginTop', 0);\r\n $cameraButtons.css('top', 15);\r\n });\r\n });\r\n });\r\n },\r\n inbox_open_storage_request:function($params){\r\n var $modal = $(\"#nurseslounge-home-myinbox-group-manager\");\r\n var $groupImage = $modal.find('.group_image');\r\n var $groupName = $modal.find('.group_name');\r\n var $myRoomCamera = $modal.find('.my-room-camera');\r\n var $cameraButtons = $modal.find('.camera-buttons');\r\n var $takeCameraPicture = $cameraButtons.find('.take-camera-picture');\r\n var $saveCameraPicture = $cameraButtons.find('.save-camera-picture');\r\n var $backCameraButtons = $modal.find('.back-camera-picture');\r\n var $profileImg = $groupImage.find('.profile-img');\r\n var $profileImgImg = $profileImg.find('img:first');\r\n $myRoomCamera.parent().find('input[name=\"file\"]').remove();\r\n $myRoomCamera.after('');\r\n $groupImage = $modal.find('.group_image');\r\n var $file = $groupImage.find('input[name=\"file\"]');\r\n $file.unbind().change(function(){\r\n var $that = this;\r\n $myRoomCamera.html('').promise().done(function(){\r\n libs.renderImage($that, '#my-room-camera-previous-image');\r\n var $image = $(\"#my-room-camera-previous-image\").cropme({\r\n \"container\": {\r\n \"width\": $myRoomCamera.width(),\r\n \"height\": $myRoomCamera.height()\r\n },\r\n \"viewport\": {\r\n \"width\": ($myRoomCamera.width() - 140),\r\n \"height\": ($myRoomCamera.width() - 140),\r\n \"type\": \"circle\",\r\n \"border\": {\r\n \"width\": 5,\r\n \"enable\": true,\r\n \"color\": \"#ffffff\"\r\n }\r\n },\r\n \"zoom\": {\r\n \"enable\": true,\r\n \"mouseWheel\": true,\r\n \"slider\": true\r\n },\r\n \"rotation\": {\r\n \"slider\": false,\r\n \"enable\": false,\r\n \"position\": \"left\"\r\n },\r\n \"transformOrigin\": \"viewport\"\r\n });\r\n $profileImg.hide();\r\n $groupName.hide();\r\n $cameraButtons.show();\r\n $myRoomCamera.show();\r\n $backCameraButtons.show();\r\n $backCameraButtons.unbind().click(function(){\r\n $profileImg.show();\r\n $groupName.show();\r\n $myRoomCamera.hide();\r\n $backCameraButtons.hide();\r\n $backCameraButtons.css('marginTop', -30);\r\n });\r\n $saveCameraPicture.unbind().click(function () {\r\n $image.cropme('crop', {\r\n type: 'base64'\r\n }).then(function($imageBase64) {\r\n $params = $.extend({}, $params, {\r\n image:$imageBase64\r\n });\r\n nurseslounge_myDashboard_myInbox.inbox_save_chat_room_request($params, function($data){\r\n $profileImg.show();\r\n $groupName.show();\r\n $myRoomCamera.hide();\r\n $backCameraButtons.hide();\r\n $cameraButtons.hide();\r\n $profileImgImg.attr('src', $imageBase64);\r\n nurseslounge_myDashboard_myInbox.inbox_open_chat({\r\n user_id:libs.memoryGet('user_id'),\r\n room_id:$params.room_id,\r\n my_room_id:$params.my_room_id,\r\n limit:30\r\n });\r\n });\r\n });\r\n }).addClass('active');\r\n });\r\n }).click();\r\n $takeCameraPicture.html('Select Picture').unbind().click(function(){\r\n $file.click();\r\n });\r\n },\r\n inbox_save_chat_room_request:function($params, cback){\r\n var $image = libs.b64toBlob($params.image);\r\n var $formData = new FormData();\r\n $formData.append('_token', $('meta[name=\"csrf-token\"]').attr('content'));\r\n $formData.append('image', $image);\r\n $formData.append('room_id', $params.room_id);\r\n $formData.append('user_id', libs.memoryGet('user_id'));\r\n $.ajax({\r\n type: 'POST',\r\n url: '/myDashboard/myInbox/chat/saveImage',\r\n data: $formData,\r\n cache: false,\r\n contentType: false,\r\n processData: false,\r\n success: function ($data) {\r\n libs.expire($data);\r\n cback($data);\r\n }\r\n });\r\n },\r\n inbox_delete_image_request:function($params, cback){\r\n $.ajax({\r\n method: 'POST',\r\n url: '/myDashboard/myInbox/chat/deleteImage',\r\n data: $params,\r\n dataType: \"json\",\r\n success: function ($data) {\r\n libs.expire($data);\r\n cback($data);\r\n }\r\n });\r\n },\r\n //Delete Users\r\n inbox_delete_user:function($params){\r\n var $modal = $(\"#nurseslounge-home-myinbox-group-manager\");\r\n var $userList = $modal.find('.users-list');\r\n var $btnDelete = $userList.find('.btn-delete');\r\n $btnDelete.unbind().click(function(){\r\n var $that = $(this);\r\n var $item = $that.parents('.item:first');\r\n var $id = $item.data('id');\r\n $params = $.extend({}, $params, {id:$id});\r\n nurseslounge_myDashboard_myInbox.inbox_delete_user_request($params, function(){\r\n $item.remove();\r\n nurseslounge_myDashboard_myInbox.inbox_open_chat({\r\n user_id:libs.memoryGet('user_id'),\r\n room_id:$params.room_id,\r\n my_room_id:$params.my_room_id,\r\n limit:30\r\n });\r\n });\r\n });\r\n },\r\n inbox_delete_user_request:function($params, cback){\r\n $.ajax({\r\n method: 'POST',\r\n url: '/myDashboard/myInbox/chat/deleteUser',\r\n data: $params,\r\n dataType: \"json\",\r\n success: function ($data) {\r\n libs.expire($data);\r\n cback($data);\r\n }\r\n });\r\n },\r\n //Information\r\n inbox_edit_information_request:function($params, cback){\r\n $.ajax({\r\n method: 'POST',\r\n url: '/myDashboard/myInbox/chat/edit',\r\n data: $params,\r\n dataType: \"json\",\r\n success: function ($data) {\r\n libs.expire($data);\r\n cback($data);\r\n }\r\n });\r\n },\r\n inbox_information_request:function($params, cback){\r\n $.ajax({\r\n method: 'POST',\r\n url: '/myDashboard/myInbox/chat/list',\r\n data: $params,\r\n dataType: \"json\",\r\n success: function ($data) {\r\n libs.expire($data);\r\n cback($data);\r\n }\r\n });\r\n },\r\n inbox_delete_messages_request:function($params, cback){\r\n $.ajax({\r\n method: 'POST',\r\n url: '/myDashboard/myInbox/chat/delete',\r\n data: $params,\r\n dataType: \"json\",\r\n success: function ($data) {\r\n libs.expire($data);\r\n cback($data);\r\n }\r\n });\r\n },\r\n inbox_delete_group_request:function($params, cback){\r\n $.ajax({\r\n method: 'POST',\r\n url: '/myDashboard/myInbox/chat/deleteGroup',\r\n data: $params,\r\n dataType: \"json\",\r\n success: function ($data) {\r\n libs.expire($data);\r\n cback($data);\r\n }\r\n });\r\n },\r\n inbox_write_message_request:function($params, cback){\r\n $.ajax({\r\n method: 'POST',\r\n url: '/myDashboard/myInbox/message/set',\r\n data: $params,\r\n dataType: \"json\",\r\n success: function ($data) {\r\n libs.expire($data);\r\n if ($data.status == 'success') {\r\n cback($data);\r\n }\r\n }\r\n });\r\n },\r\n //Socket Answer\r\n inbox_refresh_room_answer:function(){\r\n var $inbox = $(\"#nurseslounge-home-my-inbox\");\r\n var $inboxRight = $inbox.find('.nurseslounge-home-my-inbox-right');\r\n var $roomId = $inboxRight.find('.heading-name-meta:first').data('room_id');\r\n if($roomId){\r\n socketFunctions.inbox_update_room(\r\n {\r\n user_id:libs.memoryGet('user_id'),\r\n room_id:$roomId,\r\n limit:30\r\n }\r\n );\r\n }\r\n },\r\n inbox_update_room_answer:function($data){\r\n var $room = $data.room;\r\n var $chat = $room.chat;\r\n var $messages = $room.messages;\r\n var $inbox = $(\"#nurseslounge-home-my-inbox\");\r\n var $inboxRight = $inbox.find('.nurseslounge-home-my-inbox-right');\r\n var $roomId = $inboxRight.find('.heading-name-meta:first').data('room_id');\r\n var $chatWrapper = $inboxRight.find('.colleagues-chat-wrapper');\r\n var $userId = libs.memoryGet('user_id');\r\n var $messageDivs = $chatWrapper.find('.message');\r\n var $ids = [];\r\n $messageDivs.each(function(){\r\n var $that = $(this);\r\n var $id = $that.data('id');\r\n $ids.push($id);\r\n });\r\n var $newMessages = [];\r\n $.each($messages, function($i, $v) {\r\n if($.inArray($v.id, $ids) == -1){\r\n $newMessages.push($v);\r\n }\r\n });\r\n var $firstMessageDivId = $messageDivs.first().data('id');\r\n var $lastMessageDivId = $messageDivs.last().data('id');\r\n var $chtml;\r\n if($roomId == $chat.id || $roomId == $room.my_room_id){\r\n $.each($newMessages, function($i, $v){\r\n if($userId == $v.user_id){\r\n $chtml = '' +\r\n '
    ' +\r\n '
    ' +\r\n '
    ' +\r\n ' ' +\r\n $v.created +\r\n ' ' +\r\n '
    ' +\r\n $v.message +\r\n '
    ' +\r\n '
    ' +\r\n '
    ' +\r\n '
    ';\r\n }else{\r\n $chtml = '' +\r\n '
    ' +\r\n '
    ' +\r\n '
    ' +\r\n ' ' +\r\n $v.created +\r\n ' ' +\r\n '
    ' +\r\n $v.long_name +\r\n '
    ' +\r\n '
    ' +\r\n $v.message +\r\n '
    ' +\r\n '
    ' +\r\n '
    ' +\r\n '
    ';\r\n }\r\n var $currentId = $($chtml).data('id');\r\n if($messageDivs.length == 0){\r\n $chatWrapper.html($chtml);\r\n }\r\n if($lastMessageDivId < $currentId){\r\n $messageDivs.last().after($chtml).ready(function(){\r\n var $inbox = $(\"#nurseslounge-home-my-inbox\");\r\n var $inboxRight = $inbox.find('.nurseslounge-home-my-inbox-right');\r\n var $chatWrapper = $inboxRight.find('.colleagues-chat-wrapper');\r\n var $scrollHeight = $chatWrapper[0].scrollHeight;\r\n var $offsetHeight = $chatWrapper[0].offsetHeight;\r\n var $scrollTop = $scrollHeight - $offsetHeight;\r\n $chatWrapper.scrollTop($scrollTop);\r\n });\r\n }\r\n if($firstMessageDivId > $currentId){\r\n $messageDivs.first().before($chtml);\r\n }\r\n });\r\n }\r\n }\r\n};\r\n","var nurseslounge_myDashboard_accountSettings = {\n init:function($params){\n $('.offcanvas-collapse').removeClass('open');\n $(\"footer\").show();\n var $userId = libs.memoryGet('user_id');\n $params = $.extend({}, $params, {user_id:$userId});\n if($userId != 'guest') {\n nurseslounge_myDashboard_accountSettings.menu($params);\n nurseslounge_myDashboard_accountSettings.coins($params);\n nurseslounge_myDashboard_accountSettings.shop($params);\n }\n nurseslounge_myDashboard_thoughtLeadersForm.init($params);\n nurseslounge_myDashboard_manageMyCompany.init($params);\n nurseslounge_myDashboard_accountSettings.mobile();\n },\n menu:function($params){\n var $topNav = $(\"#topNav\");\n var $deleteMyAccountModal = $(\"#nurseslounge-home-delete-my-account-modal\");\n var $accountSettingModal = $(\"#nurseslounge-home-configuration-modal\");\n var $password = $accountSettingModal.find('input[name=\"password\"]');\n var $rePassword = $accountSettingModal.find('input[name=\"re_password\"]');\n var $accountSettings = $topNav.find('.account-settings:first');\n var $dashboardSettings = $topNav.find('.dashboard-settings:first');\n var $deleteMyAccount = $topNav.find('.delete-my-account:first');\n var $logoutSettings = $topNav.find('.logout-settings:first');\n var $administratorSettings = $topNav.find('.administrator-settings:first');\n $administratorSettings.unbind().click(function(){\n window.location = '/administrator';\n });\n $logoutSettings.unbind().click(function(){\n window.location = '/logout';\n });\n $dashboardSettings.unbind().click(function(){\n nurseslounge_myDashboard_myProfile.profile_is_complete($params, true, function(){\n nurseslounge_myDashboard_myProfile.user_profile_fill($params, true);\n });\n });\n $accountSettings.unbind().click(function () {\n nurseslounge_myDashboard_accountSettings.configuration_dashboard_getSet($params, function ($data) {\n //var $switchTalentPool = $data.data.switch.talent_pool;\n var $emailNotifications = $data.data.switch.unsubscribe_email_notifications == 0 ? 'On' : 'Off';\n var $notificationsWindow = $data.data.switch.disable_notifications_window == 0 ? 'On' : 'Off';\n var $notificationsSound = $data.data.switch.disable_notifications_sound == 0 ? 'On' : 'Off';\n var $disableDismissList = $data.data.switch.disable_dismiss_list == 0 ? 'Off' : 'On';\n var $digestEmail = $data.data.switch.digest_email == 0 ? 'Off' : 'On';\n //var $talentPool = $data.data.talent_pool;\n var $values = $data.data.values;\n var $catalogsLength = Object.keys($data.data.catalogs).length;\n var $index = 0;\n $.each($data.data.catalogs, function ($i, $v) {\n $index++;\n var $name = libs.snakeToCamel($i);\n var $chtml = '';\n $.each($v, function ($sI, $sV) {\n if ($data.data.selected[$i] == $sI) {\n $chtml += '';\n } else {\n $chtml += '';\n }\n });\n if ($catalogsLength > $index) {\n $accountSettingModal.find('form select[name=\"' + $name + '\"]').html($chtml);\n } else {\n $accountSettingModal.find('form select[name=\"' + $name + '\"]').html($chtml).promise().done(function () {\n $accountSettingModal.find('form input[name=\"email\"]').val($values.email);\n //$accountSettingModal.find('form input[name=\"talentPoolEnable\"]').prop('checked', $switchTalentPool != 0);\n $accountSettingModal.find('#emailNotificationsEnable' + $emailNotifications).prop(\"checked\", true);\n $accountSettingModal.find('#notificationsWindow' + $notificationsWindow).prop('checked', true);\n $accountSettingModal.find('#notificationsSound' + $notificationsSound).prop('checked', true);\n $accountSettingModal.find('#disableDismissList' + $disableDismissList).prop('checked', true);\n $accountSettingModal.find('#digestEmail' + $digestEmail).prop('checked', true);\n var $digestEmailInput = $accountSettingModal.find('input[name=\"digestEmail\"]');\n var $digestEmailSchedulesWrapper = $accountSettingModal.find(\".digest-email-schedules-wrapper\");\n var $digestEmailSchedules = $accountSettingModal.find('select[name=\"digestEmailSchedules\"]');\n var $digestEmailScheduleDaysWrapper = $accountSettingModal.find(\".digest-email-schedule-days-wrapper\");\n var $digestEmailScheduleStartAtWrapper = $accountSettingModal.find(\".digest-email-schedule-start-at-wrapper\");\n var $digestEmailScheduleTimeZone = $accountSettingModal.find('select[name=\"digestEmailScheduleTimeZone\"]');\n var $digestEmailScheduleTimeZoneWrapper = $accountSettingModal.find(\".digest-email-schedule-time-zone-wrapper\");\n var $digestEmailScheduleWeeklyWrapper = $accountSettingModal.find(\".digest-email-schedule-weekly-wrapper\");\n var $digestEmailScheduleWeeklyInput = $digestEmailScheduleWeeklyWrapper.find('input[name=\"digestEmailScheduleWeekly\"]');\n var $weeklyDays = $digestEmailScheduleWeeklyWrapper.find('.weekly_days');\n var $timeZoneChtml = '' +\n '
    ' +\n '
    ' +\n ' ' +\n '
    ' +\n '
    ' +\n ' ' +\n '
    ' +\n '
    ' +\n '
    ' +\n '
    ';\n\n\n var $digestEmailSchedulesVal = $digestEmailSchedules.val();\n $digestEmailInput.unbind().change(function(){\n var $that = $(this);\n $digestEmailSchedulesWrapper.hide();\n $digestEmailScheduleDaysWrapper.hide();\n $digestEmailScheduleWeeklyWrapper.hide();\n $digestEmailScheduleTimeZoneWrapper.hide();\n $digestEmailScheduleStartAtWrapper.hide();\n if($that.val() == 'on'){\n switch($digestEmailSchedulesVal){\n case 'daily':\n $digestEmailSchedulesWrapper.show();\n $digestEmailScheduleDaysWrapper.hide();\n $digestEmailScheduleWeeklyWrapper.hide();\n $digestEmailScheduleTimeZoneWrapper.show();\n $digestEmailScheduleStartAtWrapper.show();\n break;\n case 'weekly':\n $digestEmailSchedulesWrapper.show();\n $digestEmailScheduleDaysWrapper.hide();\n $digestEmailScheduleWeeklyWrapper.show();\n $digestEmailScheduleTimeZoneWrapper.show();\n $digestEmailScheduleStartAtWrapper.show();\n break;\n case 'every_2_weeks':\n $digestEmailSchedulesWrapper.show();\n $digestEmailScheduleDaysWrapper.hide();\n $digestEmailScheduleWeeklyWrapper.show();\n $digestEmailScheduleTimeZoneWrapper.show();\n $digestEmailScheduleStartAtWrapper.show();\n break;\n case 'every_3_weeks':\n $digestEmailSchedulesWrapper.show();\n $digestEmailScheduleDaysWrapper.hide();\n $digestEmailScheduleWeeklyWrapper.show();\n $digestEmailScheduleTimeZoneWrapper.show();\n $digestEmailScheduleStartAtWrapper.show();\n break;\n case 'every_4_weeks':\n $digestEmailSchedulesWrapper.show();\n $digestEmailScheduleDaysWrapper.hide();\n $digestEmailScheduleWeeklyWrapper.show();\n $digestEmailScheduleTimeZoneWrapper.show();\n $digestEmailScheduleStartAtWrapper.show();\n break;\n }\n }\n });\n\n\n $digestEmailSchedules.unbind().change(function(){\n var $that = $(this);\n $digestEmailSchedulesWrapper.hide();\n $digestEmailScheduleDaysWrapper.hide();\n $digestEmailScheduleWeeklyWrapper.hide();\n $digestEmailScheduleTimeZoneWrapper.hide();\n $digestEmailScheduleStartAtWrapper.hide();\n switch($that.val()){\n case 'daily':\n $digestEmailSchedulesWrapper.show();\n $digestEmailScheduleDaysWrapper.hide();\n $digestEmailScheduleWeeklyWrapper.hide();\n $digestEmailScheduleTimeZoneWrapper.show();\n $digestEmailScheduleStartAtWrapper.show();\n break;\n case 'weekly':\n $digestEmailSchedulesWrapper.show();\n $digestEmailScheduleDaysWrapper.hide();\n $digestEmailScheduleWeeklyWrapper.show();\n $digestEmailScheduleTimeZoneWrapper.show();\n $digestEmailScheduleStartAtWrapper.show();\n break;\n case 'every_2_weeks':\n $digestEmailSchedulesWrapper.show();\n $digestEmailScheduleDaysWrapper.hide();\n $digestEmailScheduleWeeklyWrapper.show();\n $digestEmailScheduleTimeZoneWrapper.show();\n $digestEmailScheduleStartAtWrapper.show();\n break;\n case 'every_3_weeks':\n $digestEmailSchedulesWrapper.show();\n $digestEmailScheduleDaysWrapper.hide();\n $digestEmailScheduleWeeklyWrapper.show();\n $digestEmailScheduleTimeZoneWrapper.show();\n $digestEmailScheduleStartAtWrapper.show();\n break;\n case 'every_4_weeks':\n $digestEmailSchedulesWrapper.show();\n $digestEmailScheduleDaysWrapper.hide();\n $digestEmailScheduleWeeklyWrapper.show();\n $digestEmailScheduleTimeZoneWrapper.show();\n $digestEmailScheduleStartAtWrapper.show();\n break;\n }\n }).change();\n\n\n var $digestEmailScheduleDays = $values.digest_email_schedule_days ? $values.digest_email_schedule_days : [];\n if($digestEmailScheduleDays){\n $weeklyDays.prop('checked', false);\n $.each($digestEmailScheduleDays, function($i, $v){\n $digestEmailScheduleWeeklyWrapper.find(\".weekly_days[data-value='\"+$v+\"']\").prop('checked', true);\n });\n }else{\n $weeklyDays.prop('checked', false);\n }\n $weeklyDays.unbind().change(function(){\n var $weeklySelectedDays = [];\n $weeklyDays.each(function(){\n var $that = $(this);\n var $val = $that.data('value');\n if($that.prop('checked')){\n $weeklySelectedDays.push($val);\n }\n });\n $digestEmailScheduleWeeklyInput.val($weeklySelectedDays.join(','));\n }).change();\n\n $digestEmailScheduleTimeZone.unbind().change(function(){\n var $that = $(this);\n var $val = $that.val();\n var $now = moment().tz($val);\n $digestEmailScheduleStartAtWrapper.html($timeZoneChtml).promise().done(function(){\n $(\"#digest-email-schedule-start-at-wrapper\").datetimepicker({\n defaultDate: $now,\n format: 'LT',\n });\n });\n });\n var $digestEmailScheduleStartAt = $values.digest_email_schedule_start_at ? $values.digest_email_schedule_start_at : null;\n var $now = $digestEmailScheduleStartAt == null ? moment() : moment($digestEmailScheduleStartAt, 'H:mm A');\n $digestEmailScheduleStartAtWrapper.html($timeZoneChtml).promise().done(function(){\n $(\"#digest-email-schedule-start-at-wrapper\").datetimepicker({\n defaultDate: $now,\n format: 'LT',\n });\n });\n\n if($digestEmail == 'On'){\n switch($digestEmailSchedulesVal){\n case 'daily':\n $digestEmailSchedulesWrapper.show();\n $digestEmailScheduleDaysWrapper.hide();\n $digestEmailScheduleWeeklyWrapper.hide();\n $digestEmailScheduleTimeZoneWrapper.show();\n $digestEmailScheduleStartAtWrapper.show();\n break;\n case 'weekly':\n $digestEmailSchedulesWrapper.show();\n $digestEmailScheduleDaysWrapper.hide();\n $digestEmailScheduleWeeklyWrapper.show();\n $digestEmailScheduleTimeZoneWrapper.show();\n $digestEmailScheduleStartAtWrapper.show();\n break;\n case 'every_2_weeks':\n $digestEmailSchedulesWrapper.show();\n $digestEmailScheduleDaysWrapper.hide();\n $digestEmailScheduleWeeklyWrapper.show();\n $digestEmailScheduleTimeZoneWrapper.show();\n $digestEmailScheduleStartAtWrapper.show();\n break;\n case 'every_3_weeks':\n $digestEmailSchedulesWrapper.show();\n $digestEmailScheduleDaysWrapper.hide();\n $digestEmailScheduleWeeklyWrapper.show();\n $digestEmailScheduleTimeZoneWrapper.show();\n $digestEmailScheduleStartAtWrapper.show();\n break;\n case 'every_4_weeks':\n $digestEmailSchedulesWrapper.show();\n $digestEmailScheduleDaysWrapper.hide();\n $digestEmailScheduleWeeklyWrapper.show();\n $digestEmailScheduleTimeZoneWrapper.show();\n $digestEmailScheduleStartAtWrapper.show();\n break;\n }\n }else{\n $digestEmailSchedulesWrapper.hide();\n $digestEmailScheduleDaysWrapper.hide();\n $digestEmailScheduleWeeklyWrapper.hide();\n $digestEmailScheduleTimeZoneWrapper.hide();\n $digestEmailScheduleStartAtWrapper.hide();\n }\n //$accountSettingModal.find(\"form input[name='talentPoolPhoneNumber']\").val($talentPool.phone_number);\n //$accountSettingModal.find('form input[name=\"talentPoolZipCode\"]').val($talentPool.zip_code);\n nurseslounge_myDashboard_accountSettings.configuration_dashboard_validate(function ($form) {\n var $params = libs.getObjForm($form);\n $params = $.extend({},\n {action: 'update'},\n {user_id: libs.memoryGet('user_id')},\n $params,\n //{talentPoolEnable:$(\"#nurseslounge-home-configuration-modal form input[name='talentPoolEnable']\").prop('checked')},\n {emailNotificationsEnable: $(\"#emailNotificationsEnableOn\").prop('checked')},\n {notificationsWindow: $(\"#notificationsWindowOn\").prop('checked')},\n {notificationsSound: $(\"#notificationsSoundOn\").prop('checked')},\n {disableDismissList: $(\"#disableDismissListOn\").prop('checked')},\n {digestEmail: $(\"#digestEmailOn\").prop('checked')},\n {password:$password.val()}\n );\n if($password.val() != ''){\n if($password.val() == $rePassword.val()) {\n $params = $.extend({}, $params,\n {password:$password.val()}\n );\n }else{\n alert(\"The passwords not match\");\n return false;\n }\n }\n nurseslounge_myDashboard_accountSettings.configuration_dashboard_getSet($params, function () {\n $accountSettingModal.modal('hide');\n });\n });\n });\n $(\"#nurseslounge-home-configuration-modal form .cancel\").unbind().click(function () {\n $accountSettingModal.modal('hide');\n });\n $(\"#nurseslounge-home-configuration-modal select[name='followMe']\").unbind().change(function () {\n if ($(this).val() == 'all') {\n $(\"#nurseslounge-home-configuration-modal .followMe-txt\").show();\n } else {\n $(\"#nurseslounge-home-configuration-modal .followMe-txt\").hide();\n }\n });\n if ($(\"#nurseslounge-home-configuration-modal select[name='followMe']\").val() == 'all') {\n $(\"#nurseslounge-home-configuration-modal .followMe-txt\").show();\n } else {\n $(\"#nurseslounge-home-configuration-modal .followMe-txt\").hide();\n }\n $(\"#notificationsWindowOn\").unbind().click(function () {\n if ($(this).prop('checked') && \"Notification\" in window) {\n Notification.requestPermission();\n }\n });\n if ($(\"#notificationsWindowOn\").prop('checked') && \"Notification\" in window) {\n Notification.requestPermission();\n }\n $accountSettingModal.modal('show');\n }\n });\n });\n });\n $deleteMyAccount.unbind().click(function (){\n nurseslounge_myDashboard_accountSettings.configuration_delete_my_account_validate(function ($form) {\n var $params = libs.getObjForm($form);\n $params = $.extend({}, $params, {target:'password', user_id: libs.memoryGet('user_id')});\n nurseslounge_myDashboard_accountSettings.configuration_delete_my_account_request($params, function($data){\n var $validator = $(\"#nurseslounge-home-delete-my-account-modal form\").validate();\n var $errors;\n if($data.data.answer == 1){\n if(confirm(\"Changes cannot be reversed if this account is deleted\")) {\n $params = $.extend({}, $params, {target:'erase'});\n nurseslounge_myDashboard_accountSettings.configuration_delete_my_account_request($params, function($data){\n window.location = '/logout';\n });\n }\n } else {\n $errors = {\"password\": \"Invalid Password\"};\n }\n if($errors){\n $validator.showErrors($errors);\n }\n });\n });\n $deleteMyAccountModal.modal('show');\n });\n },\n configuration_dashboard_getSet:function($params, cback){\n $.ajax({\n url: \"/myDashboard/header/configuration/getSet\",\n method: \"POST\",\n cache:false,\n dataType: \"json\",\n data:$params,\n success: function ($data) {\n libs.expire($data);\n if(window.location.pathname == '/myDashboard/myProfile') {\n nurseslounge_myDashboard_myProfile.task_list_container(function($container){\n nurseslounge_myDashboard_myProfile.task_list($container, {user_id:libs.memoryGet('user_id')});\n });\n }\n if(window.location.pathname == '/myDashboard/activity') {\n nurseslounge_myDashboard_activity.task_list_container(function($container){\n nurseslounge_myDashboard_myProfile.task_list($container, {user_id:libs.memoryGet('user_id')});\n });\n }\n if(window.location.pathname == '/myDashboard/colleagues') {\n nurseslounge_myDashboard_colleagues.task_list_container(function($container){\n nurseslounge_myDashboard_myProfile.task_list($container, {user_id:libs.memoryGet('user_id')});\n });\n }\n cback($data);\n }\n });\n },\n configuration_dashboard_validate:function(cback){\n var $validator;\n try {\n $validator = $(\"#nurseslounge-home-configuration-modal form\").validate();\n $validator.destroy();\n }catch (e) {\n\n }\n $validator = $(\"#nurseslounge-home-configuration-modal form\").validate({\n onsubmit: true,\n ignore: \"*:not(.validate)\",\n debug: true,\n rules: {\n followMe: {\n required: true\n },\n myColleagues: {\n required: true\n },\n emailNotificationsEnable: {\n required: true\n },\n groupNotifications: {\n required: true\n },\n colleaguesNotifications: {\n required: true\n },\n publisherNotifications: {\n required: true\n },\n jobNotifications: {\n required: true\n },\n degreeProgramNotifications: {\n required: true\n },\n notificationsWindow: {\n required: true\n },\n notificationsSound:{\n required: true\n }\n },\n messages: {\n followMe: {\n required: \"The option selected is invalid\"\n },\n myColleagues: {\n required: \"The option selected is invalid\"\n },\n emailNotificationsEnable: {\n required: \"The email notification is required\"\n },\n groupNotifications: {\n required: \"The option selected is invalid\"\n },\n colleaguesNotifications: {\n required: \"The option selected is invalid\"\n },\n publisherNotifications: {\n required: \"The option selected is invalid\"\n },\n jobNotifications: {\n required: \"The option selected is invalid\"\n },\n degreeProgramNotifications: {\n required: \"The option selected is invalid\"\n },\n notificationsWindow: {\n required: \"The desktop notification is required\"\n },\n notificationsSound:{\n required: \"The sound notification is required\"\n }\n },\n submitHandler: function($form) {\n cback($form);\n return false;\n }\n });\n },\n configuration_delete_my_account_validate:function(cback){\n var $validator;\n try {\n $validator = $(\"#nurseslounge-home-delete-my-account-modal form\").validate();\n $validator.destroy();\n }catch (e) {\n\n }\n $validator = $(\"#nurseslounge-home-delete-my-account-modal form\").validate({\n onsubmit: true,\n ignore: \"*:not(.validate)\",\n debug: true,\n rules: {\n password: {\n required: true\n }\n },\n messages: {\n password: {\n required: \"The password is required\"\n },\n },\n errorPlacement: function($error, $element){\n var $ele = $($element);\n var $name = $ele.attr(\"name\");\n if(!$ele.hasClass('is-invalid')){\n $ele.addClass('is-invalid');\n }\n $(\".\"+$name+\"_validate\").html($($error).text()).show();\n },\n success: function($error, $element) {\n var $ele = $($element);\n var $name = $ele.attr(\"name\");\n if($ele.hasClass('is-invalid')){\n $ele.removeClass('is-invalid');\n }\n $(\".\"+$name+\"_validate\").html('').hide();\n },\n submitHandler: function($form) {\n cback($form);\n return false;\n }\n });\n },\n configuration_delete_my_account_request:function($params, cback){\n $.ajax({\n url: \"/myDashboard/header/delete/account\",\n method: \"POST\",\n cache:false,\n dataType: \"json\",\n data:$params,\n success: function ($data) {\n libs.expire($data);\n cback($data);\n }\n });\n },\n //Notifications\n notificationUpdate:function($notification){\n var $params = {category:'notifications', user_id:libs.memoryGet('user_id')};\n var $notifications = $(\"#topNav .notifications-menu .notifications:first\");\n var $notificationBell = $notifications.find(\".notifications-bell:first\");\n var $notificationIcon = $notificationBell.find(\".notifications-icon:first\");\n if($notification.listen != $notification.viewed){\n $notificationBell.find(\".notifications-alert\").remove();\n $notificationIcon.after(''+($notification.listen-$notification.viewed)+'').ready(function(){\n nurseslounge_myDashboard_accountSettings.notificationTopNavEvents($params);\n });\n }else{\n $notificationBell.find(\".notifications-alert\").remove();\n nurseslounge_myDashboard_accountSettings.notificationTopNavEvents($params);\n }\n },\n inboxNotificationUpdate:function($notification){\n var $params = {category:'inboxNotifications', user_id:libs.memoryGet('user_id')};\n var $notifications = $(\"#topNav .notifications-menu .inbox-notifications:first\");\n var $inboxNotificationBell = $notifications.find(\".inbox-notifications-bell:first\");\n var $inboxNotificationIcon = $inboxNotificationBell.find(\".inbox-notification-icon:first\");\n if($notification.listen != $notification.viewed){\n $inboxNotificationBell.find(\".notifications-alert\").remove();\n $inboxNotificationIcon.after(''+($notification.listen-$notification.viewed)+'').ready(function(){\n nurseslounge_myDashboard_accountSettings.inboxNotificationTopNavEvents($params);\n });\n }else{\n $inboxNotificationBell.find(\".notifications-alert\").remove();\n nurseslounge_myDashboard_accountSettings.inboxNotificationTopNavEvents($params);\n }\n if(window.location.pathname == '/myDashboard/myInbox'){\n nurseslounge_myDashboard_myInbox.inbox_pagination({user_id:libs.memoryGet('user_id')});\n nurseslounge_myDashboard_myInbox.inbox_groups_pagination({user_id:libs.memoryGet('user_id')});\n }\n },\n\n notificationTopNavEvents:function($params){\n var $notifications = $(\"#topNav .notifications-menu .notifications:first\");\n var $notificationBell = $notifications.find(\".notifications-bell:first\");\n var $notificationsContainer = $notifications.find(\".notifications-container:first .scroller-height:first\");\n $notificationBell.unbind().click(function(){\n if(!$notifications.hasClass('show') && $notificationsContainer.length == 1){\n $notificationsContainer.scrollTop(0);\n }\n libs.memorySave('needToView', -1);\n $notificationBell.find(\".notifications-alert\").remove();\n nurseslounge_myDashboard_accountSettings.notificationTopNavRequest($params);\n }).tooltip();\n nurseslounge_myDashboard_accountSettings.notificationLoad($params, true);\n },\n inboxNotificationTopNavEvents:function($params){\n var $notifications = $(\"#topNav .notifications-menu .inbox-notifications:first\");\n var $inboxNotificationBell = $notifications.find(\".inbox-notifications-bell:first\");\n var $inboxNotificationsContainer = $notifications.find(\".inbox-notifications-container:first .scroller-height:first\");\n $inboxNotificationBell.unbind().click(function(){\n if(!$notifications.hasClass('show') && $inboxNotificationsContainer.length == 1){\n $inboxNotificationsContainer.scrollTop(0);\n }\n libs.memorySave('needToViewInboxNotifications', -1);\n $inboxNotificationBell.find(\".notifications-alert\").remove();\n nurseslounge_myDashboard_accountSettings.notificationTopNavRequest($params);\n }).tooltip();\n nurseslounge_myDashboard_accountSettings.inboxNotificationLoad($params, true);\n },\n //For Both\n notificationTopNavRequest:function($params){\n $.ajax({\n url: \"/notifications/topNav/set\",\n method: \"POST\",\n cache:false,\n dataType: \"json\",\n data:$params,\n success: function ($data) {\n libs.expire($data);\n }\n });\n },\n notificationLoad:function($params, $withSound){\n var $notificationCookies = nurseslounge_myDashboard_accountSettings.readCookie('notificationCookies');\n $notificationCookies = $notificationCookies ? $notificationCookies.split(',') : [];\n var $notifications = $(\"#topNav .notifications-menu .notifications:first\");\n var $notificationBell = $notifications.find(\".notifications-bell:first\");\n var $notificationsContainer = $notifications.find(\".notifications-container:first\");\n var $scrollerHeight = $notificationsContainer.find(\".scroller-height:first\");\n var $chtml = '';\n nurseslounge_myDashboard_accountSettings.notificationLoadMoreRequest($params, function($data){\n if($notificationsContainer.find('.notification').length == 0){\n var $dropdown = nurseslounge_myDashboard_accountSettings.notificationDropdown($data);\n $notificationBell.after($dropdown).ready(function(){\n var $numberOfNotifications = $($dropdown).find('.notification').length;\n var $firstNotification = $($dropdown).find('.notification:first');\n var $notificationId = $firstNotification.data('id');\n if($withSound && $notificationId != undefined && $numberOfNotifications == 1){\n if($.inArray($notificationId, $notificationCookies) == -1){\n nurseslounge_myDashboard_accountSettings.pushNotificationWithSound($data, $firstNotification[0].outerHTML);\n $notificationCookies.push($notificationId);\n nurseslounge_myDashboard_accountSettings.createCookie('notificationCookies',$notificationCookies.join(','),1);\n }\n }\n nurseslounge_myDashboard_accountSettings.notificationOpen($params);\n });\n }else{\n if($data.data.new_notifications.length > 0){\n var $newNotificationListenArr = [];\n var $newNotificationListenObj = {};\n var $newNotificationTag = $scrollerHeight.find(\".new-tag:first\");\n for(var $i in $data.data.new_notifications){\n $newNotificationListenArr.push($($data.data.new_notifications[$i]).data('id'));\n $newNotificationListenObj[$($data.data.new_notifications[$i]).data('id')] = $data.data.new_notifications[$i];\n }\n if($newNotificationTag.length == 0){\n $chtml = '

    New

    ';\n $scrollerHeight.prepend($chtml);\n $newNotificationTag = $scrollerHeight.find(\".new-tag:first\");\n }\n if($newNotificationTag.nextAll(\".notification\") != undefined) {\n $newNotificationTag.nextAll(\".notification\").each(function () {\n var $id = $(this).data('id');\n var $exist = $.inArray($id, $newNotificationListenArr) != -1;\n if ($exist) {\n delete $newNotificationListenObj[$id];\n }\n });\n }\n nurseslounge_myDashboard_accountSettings.notificationOrder($newNotificationListenObj, \".new-tag:first\", $withSound, $data,function(){\n nurseslounge_myDashboard_accountSettings.notificationOpen($params);\n });\n }\n if($data.data.old_notifications.length > 0){\n var $oldNotificationListenArr = [];\n var $oldNotificationListenObj = {};\n var $oldNotificationTag = $scrollerHeight.find(\".old-tag:first\");\n for(var $i in $data.data.old_notifications){\n $oldNotificationListenArr.push($($data.data.old_notifications[$i]).data('id'));\n $oldNotificationListenObj[$($data.data.old_notifications[$i]).data('id')] = $data.data.old_notifications[$i];\n }\n if($oldNotificationTag.length == 0){\n $chtml = '

    Old

    ';\n $scrollerHeight.append($chtml);\n $oldNotificationTag = $scrollerHeight.find(\".old:first\");\n }\n if($oldNotificationTag.nextAll(\".notification\") != undefined) {\n $oldNotificationTag.nextAll(\".notification\").each(function () {\n var $id = $(this).data('id');\n var $exist = $.inArray($id, $oldNotificationListenArr) != -1;\n if ($exist) {\n delete $oldNotificationListenObj[$id];\n }\n });\n }\n nurseslounge_myDashboard_accountSettings.notificationOrder($oldNotificationListenObj, \".old-tag:first\", false, $data,function(){\n nurseslounge_myDashboard_accountSettings.notificationOpen($params);\n });\n }\n }\n });\n },\n inboxNotificationLoad:function($params, $withSound){\n var $inboxNotificationCookies = nurseslounge_myDashboard_accountSettings.readCookie('inboxNotificationCookies');\n $inboxNotificationCookies = $inboxNotificationCookies ? $inboxNotificationCookies.split(',') : [];\n var $notifications = $(\"#topNav .notifications-menu .inbox-notifications:first\");\n var $inboxNotificationBell = $notifications.find(\".inbox-notifications-bell:first\");\n var $inboxNotificationsContainer = $notifications.find(\".inbox-notifications-container:first .scroller-height:first\");\n var $scrollerHeight = $inboxNotificationsContainer.find(\".scroller-height:first\");\n var $chtml = '';\n nurseslounge_myDashboard_accountSettings.notificationLoadMoreRequest($params, function($data){\n if($inboxNotificationsContainer.find('.notification').length == 0){\n var $dropdown = nurseslounge_myDashboard_accountSettings.inboxNotificationDropdown($data);\n $inboxNotificationBell.after($dropdown).ready(function(){\n var $numberOfNotifications = $($dropdown).find('.notification').length;\n var $firstNotification = $($dropdown).find('.notification:first');\n var $notificationId = $firstNotification.data('id');\n if($withSound && $notificationId != undefined && $numberOfNotifications == 1){\n if($.inArray($notificationId, $inboxNotificationCookies) == -1){\n nurseslounge_myDashboard_accountSettings.pushNotificationWithSound($data, $firstNotification[0].outerHTML);\n $inboxNotificationCookies.push($notificationId);\n nurseslounge_myDashboard_accountSettings.createCookie('inboxNotificationCookies',$inboxNotificationCookies.join(','),1);\n }\n }\n nurseslounge_myDashboard_accountSettings.inboxNotificationOpen($params);\n });\n }else{\n if($data.data.new_notifications.length > 0){\n var $newNotificationListenArr = [];\n var $newNotificationListenObj = {};\n var $newNotificationTag = $scrollerHeight.find(\".new-tag:first\");\n for(var $i in $data.data.new_notifications){\n $newNotificationListenArr.push($($data.data.new_notifications[$i]).data('id'));\n $newNotificationListenObj[$($data.data.new_notifications[$i]).data('id')] = $data.data.new_notifications[$i];\n }\n if($newNotificationTag.length == 0){\n $chtml = '

    New

    ';\n $scrollerHeight.prepend($chtml);\n $newNotificationTag = $scrollerHeight.find(\".new-tag:first\");\n }\n if($newNotificationTag.nextAll(\".notification\") != undefined) {\n $newNotificationTag.nextAll(\".notification\").each(function () {\n var $id = $(this).data('id');\n var $exist = $.inArray($id, $newNotificationListenArr) != -1;\n if ($exist) {\n delete $newNotificationListenObj[$id];\n }\n });\n }\n nurseslounge_myDashboard_accountSettings.inboxNotificationOrder($newNotificationListenObj, \".new-tag:first\", $withSound, $data, function(){\n nurseslounge_myDashboard_accountSettings.inboxNotificationOpen($params);\n });\n }\n if($data.data.old_notifications.length > 0){\n var $oldNotificationListenArr = [];\n var $oldNotificationListenObj = {};\n var $oldNotificationTag = $scrollerHeight.find(\".old-tag:first\");\n for(var $i in $data.data.old_notifications){\n $oldNotificationListenArr.push($($data.data.old_notifications[$i]).data('id'));\n $oldNotificationListenObj[$($data.data.old_notifications[$i]).data('id')] = $data.data.old_notifications[$i];\n }\n if($oldNotificationTag.length == 0){\n $chtml = '

    Old

    ';\n $scrollerHeight.append($chtml);\n $oldNotificationTag = $scrollerHeight.find(\".old:first\");\n }\n if($oldNotificationTag.nextAll(\".notification\") != undefined) {\n $oldNotificationTag.nextAll(\".notification\").each(function () {\n var $id = $(this).data('id');\n var $exist = $.inArray($id, $oldNotificationListenArr) != -1;\n if ($exist) {\n delete $oldNotificationListenObj[$id];\n }\n });\n }\n nurseslounge_myDashboard_accountSettings.inboxNotificationOrder($oldNotificationListenObj, \".old-tag:first\", false, $data,function(){\n nurseslounge_myDashboard_accountSettings.inboxNotificationOpen($params);\n });\n }\n }\n });\n },\n\n notificationOrder:function($obj, $notification, $withSound, $data, cback){\n var $notificationCookies = nurseslounge_myDashboard_accountSettings.readCookie('notificationCookies');\n $notificationCookies = $notificationCookies ? $notificationCookies.split(',') : [];\n for (var $i in $obj) {\n var $notifications = $(\"#topNav .notifications-menu .notifications:first\");\n var $notificationTag = $notifications.find(\".notifications-container:first .scroller-height:first\").find($notification);\n var $existingNotifications = [];\n $notifications.find('.notification').each(function(){\n var $that = $(this);\n $existingNotifications.push($that.data('id'));\n });\n if($notificationTag.next(\".notification\").data('id') == undefined){\n $notificationTag.after($obj[$i]);\n delete $obj[$i];\n }else{\n $notificationTag.nextAll(\".notification\").each(function() {\n if(\n $i > $(this).data('id')\n ){\n $(this).before($obj[$i]);\n var $notificationId = $($obj[$i]).data('id');\n if(\n $withSound && $notificationId != undefined &&\n $.inArray($notificationId, $existingNotifications) == -1 &&\n $.inArray($notificationId, $notificationCookies) == -1\n ){\n nurseslounge_myDashboard_accountSettings.pushNotificationWithSound($data, $obj[$i]);\n $notificationCookies.push($notificationId);\n nurseslounge_myDashboard_accountSettings.createCookie('notificationCookies',$notificationCookies.join(','),1);\n }\n delete $obj[$i];\n }else{\n if(\n $i < $(this).data('id') &&\n $i > $(this).next(\".notification\").data('id') ||\n $i < $(this).data('id') &&\n $(this).next(\".notification\").data('id') == undefined\n ){\n $(this).after($obj[$i]);\n delete $obj[$i];\n }\n }\n });\n }\n }\n if(cback != undefined){\n cback();\n }\n },\n inboxNotificationOrder:function($obj, $notification, $withSound, $data, cback){\n var $inboxNotificationCookies = nurseslounge_myDashboard_accountSettings.readCookie('inboxNotificationCookies');\n $inboxNotificationCookies = $inboxNotificationCookies ? $inboxNotificationCookies.split(',') : [];\n for (var $i in $obj) {\n var $notifications = $(\"#topNav .notifications-menu .inbox-notifications:first\");\n var $notificationTag = $notifications.find(\".inbox-notifications-container:first .scroller-height:first\").find($notification);\n var $existingNotifications = [];\n $notifications.find('.notification').each(function(){\n var $that = $(this);\n $existingNotifications.push($that.data('id'));\n });\n if($notificationTag.next(\".notification\").data('id') == undefined){\n $notificationTag.after($obj[$i]);\n delete $obj[$i];\n }else{\n $notificationTag.nextAll(\".notification\").each(function() {\n if(\n $i > $(this).data('id')\n ){\n $(this).before($obj[$i]);\n var $notificationId = $($obj[$i]).data('id');\n if(\n $withSound && $notificationId != undefined &&\n $.inArray($notificationId, $existingNotifications) == -1 &&\n $.inArray($notificationId, $inboxNotificationCookies) == -1\n ){\n nurseslounge_myDashboard_accountSettings.pushNotificationWithSound($data, $obj[$i]);\n $inboxNotificationCookies.push($notificationId);\n nurseslounge_myDashboard_accountSettings.createCookie('inboxNotificationCookies',$inboxNotificationCookies.join(','),1);\n }\n delete $obj[$i];\n }else{\n if(\n $i < $(this).data('id') &&\n $i > $(this).next(\".notification\").data('id') ||\n $i < $(this).data('id') &&\n $(this).next(\".notification\").data('id') == undefined\n ){\n $(this).after($obj[$i]);\n delete $obj[$i];\n }\n }\n });\n }\n }\n if(cback != undefined){\n cback();\n }\n },\n\n //For Both\n notificationLoadMoreRequest:function($params, cback){\n $params = $.extend({}, $params, {user_id:libs.memoryGet('user_id')});\n $.ajax({\n url: \"/notifications/get\",\n method: \"POST\",\n cache:false,\n dataType: \"json\",\n data:$params,\n success: function ($data) {\n libs.expire($data);\n cback($data);\n }\n });\n },\n\n notificationDropdown:function($data){\n var $chtml = '';\n $chtml+='' +\n '
    ' +\n '

    Notifications

    '+\n '
    ';\n if($data.data.new_notifications.length > 0){\n $chtml+='' +\n '

    New

    ' + $data.data.new_notifications.join('');\n }\n if($data.data.old_notifications.length > 0){\n $chtml+='' +\n '

    Old

    ' + $data.data.old_notifications.join('');\n }\n $chtml+='' +\n '
    ' +\n '
    ';\n return $chtml;\n },\n inboxNotificationDropdown:function($data){\n var $chtml = '';\n $chtml+='' +\n '
    ' +\n '

    Messages

    '+\n '
    ';\n if($data.data.new_notifications.length > 0){\n $chtml+='' +\n '

    New

    ' + $data.data.new_notifications.join('');\n }\n if($data.data.old_notifications.length > 0){\n $chtml+='' +\n '

    Old

    ' + $data.data.old_notifications.join('');\n }\n $chtml+='' +\n '
    ' +\n '
    ';\n return $chtml;\n },\n createCookie:function($name,$value,$days) {\n var $expires;\n if ($days) {\n var $date = new Date();\n $date.setTime($date.getTime()+($days*24*60*60*1000));\n $expires = \"; expires=\"+$date.toGMTString();\n }else{\n $expires = \"\";\n }\n document.cookie = $name+\"=\"+$value+$expires+\"; path=/\";\n },\n readCookie:function($name) {\n var $nameEQ = $name + \"=\";\n var $ca = document.cookie.split(';');\n for(var $i=0;$i < $ca.length;$i++) {\n var $c = $ca[$i];\n while ($c.charAt(0)==' '){\n $c = $c.substring(1,$c.length);\n if ($c.indexOf($nameEQ) == 0){\n return $c.substring($nameEQ.length,$c.length);\n }\n }\n }\n return null;\n },\n pushNotificationWithSound:function($data, $pushNotification){\n if($pushNotification) {\n if (!$data.data.windows_disable && Notification.permission === \"granted\") {\n var $title = $($pushNotification).attr('title');\n var $text = $($pushNotification).find('.notify-txt:first').text();\n var $imgSrc = $($pushNotification).find('img:first').attr('src');\n var $url = $($pushNotification).data('url');\n var $notification = new Notification(\n $title,\n {\n body: $text,\n icon: $imgSrc,\n silent: true\n }\n );\n $notification.onclick = function () {\n router.navigate($url,true);\n };\n if(!$data.data.sounds_disable){\n var $audio = new Audio('/sounds/notification.mp3');\n $audio.play();\n }\n }\n }\n },\n\n notificationOpen:function($params){\n var $notifications = $(\"#topNav .notifications-menu .notifications:first\");\n var $notification = $notifications.find(\".notifications-container:first .scroller-height:first .notification\");\n $notification.unbind().click(function(){\n var $that = $(this);\n var $notificationId = $that.data('id');\n var $notificationUrl = $that.data('url');\n $params = $.extend({}, $params, {notification_id:$notificationId});\n nurseslounge_myDashboard_accountSettings.notificationSet($params, function(){\n $that.find('.new-notification').remove();\n $that.addClass('opened');\n //router.navigate($notificationUrl,true);\n window.location = $notificationUrl;\n });\n });\n nurseslounge_myDashboard_accountSettings.notificationRealTime();\n nurseslounge_myDashboard_accountSettings.notificationScroll($params);\n },\n inboxNotificationOpen:function($params){\n var $notifications = $(\"#topNav .notifications-menu .inbox-notifications:first\");\n var $notification = $notifications.find(\".inbox-notifications-container:first .scroller-height:first .notification\");\n $notification.unbind().click(function(){\n var $that = $(this);\n var $notificationId = $that.data('id');\n var $notificationUrl = $that.data('url');\n if(\n window.location.pathname != '/myDashboard/myInbox'\n ) {\n $params = $.extend({}, $params, {notification_id:$notificationId});\n nurseslounge_myDashboard_accountSettings.notificationSet($params, function(){\n $that.find('.new-notification').remove();\n $that.addClass('opened');\n router.navigate($notificationUrl,true);\n });\n }\n });\n nurseslounge_myDashboard_accountSettings.inboxNotificationRealTime();\n nurseslounge_myDashboard_accountSettings.inboxNotificationScroll($params);\n },\n\n notificationRealTime:function(){\n var $notifications = $(\"#topNav .notifications-menu .notifications:first\");\n var $notificationsContainer = $notifications.find(\".notifications-container:first\");\n var $notificationsIds = [];\n $notificationsContainer.find(\".timestamp\").each(function(){\n var $that = $(this);\n $notificationsIds.push($that.data('id'));\n });\n nurseslounge_myDashboard_accountSettings.setNotificationsDates($notificationsIds);\n nurseslounge_myDashboard_accountSettings.notificationsDate();\n },\n inboxNotificationRealTime:function(){\n var $notifications = $(\"#topNav .notifications-menu .inbox-notifications:first\");\n var $notificationsContainer = $notifications.find(\".inbox-notifications-container:first\");\n var $notificationsIds = [];\n $notificationsContainer.find(\".timestamp\").each(function(){\n var $that = $(this);\n $notificationsIds.push($that.data('id'));\n });\n nurseslounge_myDashboard_accountSettings.setInboxNotificationsDates($notificationsIds);\n nurseslounge_myDashboard_accountSettings.notificationsDate();\n },\n\n notifications_dates:[],\n inbox_notifications_dates:[],\n server_date_helper:null,\n server_date:null,\n notification_dates_binding:null,\n setInboxNotificationsDates:function($notificationsIds){\n this.inbox_notifications_dates = $notificationsIds;\n },\n getInboxNotificationsDates:function(){\n return this.inbox_notifications_dates;\n },\n setNotificationsDates:function($notificationsIds){\n this.notifications_dates = $notificationsIds;\n },\n getNotificationsDates:function(){\n return this.notifications_dates;\n },\n setServerDate:function($serverDate){\n this.server_date_helper = new Date();\n this.server_date = new Date($serverDate);\n },\n getServerDate:function(){\n var $now = new Date().getTime();\n var $diff = $now - this.server_date_helper.getTime();\n var $date = this.server_date.getTime() + $diff;\n return new Date($date);\n },\n notificationsDate:function(){\n $.ajax({\n url:window.location.protocol +'//'+ window.location.hostname + \"/\",\n method: \"GET\",\n cache:false,\n dataType: \"html\",\n success: function ($data, $status, $response) {\n var $dateString = $response.getResponseHeader('date');\n if ($dateString.indexOf('GMT')) {\n $dateString = $dateString.replace('GMT','');\n }\n nurseslounge_myDashboard_accountSettings.setServerDate($dateString);\n nurseslounge_myDashboard_accountSettings.notificationDateUpdate();\n }\n });\n },\n notificationDateUpdate:function(){\n var $refreshEverySeconds = 1;\n //Notifications\n var $now = nurseslounge_myDashboard_accountSettings.getServerDate().getTime();\n var $notificationDates = nurseslounge_myDashboard_accountSettings.getNotificationsDates();\n var $notifications = $(\"#topNav .notifications-menu .notifications:first\");\n var $notificationsContainer = $notifications.find(\".notifications-container:first\");\n for(var $i in $notificationDates){\n var $key = $notificationDates[$i];\n var $ele = $notificationsContainer.find('.timestamp[data-id=\"'+$key+'\"]');\n var $val = $ele.data('notificationdate');\n if($ele.length > 0 && $val){\n var $newDate = $val.split(' ');\n var $yearMonthDay = $newDate[0];\n $yearMonthDay = $yearMonthDay.split('-');\n var $HourMinuteSecond = $newDate[1];\n $HourMinuteSecond = $HourMinuteSecond.split(':');\n var $date = new Date($yearMonthDay[0], $yearMonthDay[1] - 1, $yearMonthDay[2], $HourMinuteSecond[0], $HourMinuteSecond[1], $HourMinuteSecond[2]);\n var $second = $date.getSeconds();\n $second = $second <= 9 ? '0' + $second : $second;\n var $minute = $date.getMinutes();\n $minute = $minute <= 9 ? '0' + $minute : $minute;\n var $hour = $date.getHours();\n $hour = $hour <= 9 ? '0' + $hour : $hour;\n var $day = $date.getDate();\n $day = $day <= 9 ? '0' + $day : $day;\n var $month = $date.getMonth() + 1;\n $month = $month <= 9 ? '0' + $month : $month;\n var $year = $date.getFullYear();\n var $_notificationDate = $year + '-' + $month + '-' + $day + ' ' + $hour + ':'+ $minute + ':' + $second;\n $date = $date.getTime();\n var $diffSeconds = Math.floor(($now - $date)/1000);\n var $diffMinutes = Math.floor($diffSeconds/60);\n var $diffHours = Math.floor($diffMinutes/60);\n var $diffDays = Math.floor($diffHours/24);\n var $chtml = '';\n if($diffDays == 0 && $diffHours == 0 && $diffMinutes == 0){\n $chtml = $diffSeconds == 1 ? $diffSeconds + ' second ago' : $diffSeconds + ' seconds ago';\n }else\n if ($diffDays == 0 && $diffHours == 0){\n $chtml = $diffMinutes == 1 ? $diffMinutes + ' minute ago' : $diffMinutes + ' minutes ago';\n }else\n if ($diffDays == 0){\n $chtml = $diffHours == 1 ? $diffHours + ' hour ago' : $diffHours + ' hours ago';\n }else\n if($diffDays < 4){\n $chtml = $diffDays == 1 ? $diffDays + ' day ago' : $diffDays + ' days ago';\n }else{\n $date = $notificationsContainer.find('.timestamp[data-id=\"'+$key+'\"]').data('notificationdate');\n $chtml = moment.utc($date, 'YYYY-MM-DD HH:mm:ss').local().format('MMMM, DD YYYY hh:mm A');\n }\n if($ele.html() != $chtml){\n $ele.data('notificationdate', $_notificationDate).html($chtml);\n }\n }\n }\n nurseslounge_myDashboard_accountSettings.inboxNotificationDateUpdate($now);\n try{\n clearTimeout(this.notification_dates_binding);\n }catch($e){}\n this.notification_dates_binding = setTimeout(function(){\n nurseslounge_myDashboard_accountSettings.notificationDateUpdate();\n }, ($refreshEverySeconds * 1000));\n },\n inboxNotificationDateUpdate:function($now){\n //Inbox Notifications\n var $inboxNotificationDates = nurseslounge_myDashboard_accountSettings.getInboxNotificationsDates();\n var $inboxNotifications = $(\"#topNav .notifications-menu .inbox-notifications:first\");\n var $inboxNotificationsContainer = $inboxNotifications.find(\".inbox-notifications-container:first\");\n for(var $i in $inboxNotificationDates){\n var $key = $inboxNotificationDates[$i];\n var $ele = $inboxNotificationsContainer.find('.timestamp[data-id=\"'+$key+'\"]');\n var $val = $ele.data('notificationdate');\n if($ele.length > 0 && $val){\n var $newDate = $val.split(' ');\n var $yearMonthDay = $newDate[0];\n $yearMonthDay = $yearMonthDay.split('-');\n var $HourMinuteSecond = $newDate[1];\n $HourMinuteSecond = $HourMinuteSecond.split(':');\n var $date = new Date($yearMonthDay[0], $yearMonthDay[1] - 1, $yearMonthDay[2], $HourMinuteSecond[0], $HourMinuteSecond[1], $HourMinuteSecond[2]);\n var $second = $date.getSeconds();\n $second = $second <= 9 ? '0' + $second : $second;\n var $minute = $date.getMinutes();\n $minute = $minute <= 9 ? '0' + $minute : $minute;\n var $hour = $date.getHours();\n $hour = $hour <= 9 ? '0' + $hour : $hour;\n var $day = $date.getDate();\n $day = $day <= 9 ? '0' + $day : $day;\n var $month = $date.getMonth() + 1;\n $month = $month <= 9 ? '0' + $month : $month;\n var $year = $date.getFullYear();\n var $_notificationDate = $year + '-' + $month + '-' + $day + ' ' + $hour + ':'+ $minute + ':' + $second;\n $date = $date.getTime();\n var $diffSeconds = Math.floor(($now - $date)/1000);\n var $diffMinutes = Math.floor($diffSeconds/60);\n var $diffHours = Math.floor($diffMinutes/60);\n var $diffDays = Math.floor($diffHours/24);\n var $chtml = '';\n if($diffDays == 0 && $diffHours == 0 && $diffMinutes == 0){\n $chtml = $diffSeconds == 1 ? $diffSeconds + ' second ago' : $diffSeconds + ' seconds ago';\n }else\n if ($diffDays == 0 && $diffHours == 0){\n $chtml = $diffMinutes == 1 ? $diffMinutes + ' minute ago' : $diffMinutes + ' minutes ago';\n }else\n if ($diffDays == 0){\n $chtml = $diffHours == 1 ? $diffHours + ' hour ago' : $diffHours + ' hours ago';\n }else\n if($diffDays < 4){\n $chtml = $diffDays == 1 ? $diffDays + ' day ago' : $diffDays + ' days ago';\n }else{\n $date = $inboxNotificationsContainer.find('.timestamp[data-id=\"'+$key+'\"]').data('notificationdate');\n $chtml = moment.utc($date, 'YYYY-MM-DD HH:mm:ss').local().format('MMMM, DD YYYY hh:mm A');\n }\n if($ele.html() != $chtml){\n $ele.data('notificationdate', $_notificationDate).html($chtml);\n }\n }\n }\n },\n //For Both\n notificationSet:function($params, cback){\n $.ajax({\n url: \"/notifications/set\",\n method: \"POST\",\n cache:false,\n dataType: \"json\",\n data:$params,\n success: function ($data) {\n libs.expire($data);\n cback($data);\n }\n });\n },\n\n notificationScroll:function($params){\n var $notifications = $(\"#topNav .notifications-menu .notifications:first\");\n var $notificationsContainer = $notifications.find(\".notifications-container:first\");\n var $scrollerHeight = $notificationsContainer.find(\".scroller-height:first\");\n var $loadMoreAfterPercent = 25;\n var $scrollBinding;\n $scrollerHeight.unbind().scroll(function() {\n var $maxScrollTop = $scrollerHeight[0].scrollHeight - $scrollerHeight.height();\n var $actualScroll = $scrollerHeight.scrollTop();\n var $triggerPercent = ($actualScroll * 100) / $maxScrollTop > $loadMoreAfterPercent;\n if ($triggerPercent) {\n try {\n clearTimeout($scrollBinding);\n }catch (e) {\n }\n $scrollBinding = setTimeout(function(){\n $notifications = $(\"#topNav .notifications-menu .notifications:first\");\n $notificationsContainer = $notifications.find(\".notifications-container:first\");\n $scrollerHeight = $notificationsContainer.find(\".scroller-height:first\");\n var $offset = $scrollerHeight.find(\".notification\").length;\n $params = $.extend({}, $params, {offset:$offset});\n nurseslounge_myDashboard_accountSettings.notificationLoad($params, false);\n }, 800);\n }\n });\n },\n inboxNotificationScroll:function($params){\n var $notifications = $(\"#topNav .notifications-menu .inbox-notifications:first\");\n var $inboxNotificationsContainer = $notifications.find(\".inbox-notifications-container:first\");\n var $scrollerHeight = $inboxNotificationsContainer.find(\".scroller-height:first\");\n var $loadMoreAfterPercent = 25;\n var $scrollBinding;\n $scrollerHeight.unbind().scroll(function() {\n var $maxScrollTop = $scrollerHeight[0].scrollHeight - $scrollerHeight.height();\n var $actualScroll = $scrollerHeight.scrollTop();\n var $triggerPercent = ($actualScroll * 100) / $maxScrollTop > $loadMoreAfterPercent;\n if ($triggerPercent) {\n try {\n clearTimeout($scrollBinding);\n }catch (e) {\n }\n $scrollBinding = setTimeout(function(){\n $notifications = $(\"#topNav .notifications-menu .inbox-notifications\");\n $inboxNotificationsContainer = $notifications.find(\".inbox-notifications-container:first\");\n $scrollerHeight = $inboxNotificationsContainer.find(\".scroller-height:first\");\n var $offset = $scrollerHeight.find(\".notification\").length;\n $params = $.extend({}, $params, {offset:$offset});\n nurseslounge_myDashboard_accountSettings.inboxNotificationLoad($params, false);\n }, 800);\n }\n });\n },\n //Coins\n coins:function($params){\n var $savedCoins = nurseslounge_myDashboard_accountSettings.readCookie('COINS');\n nurseslounge_myDashboard_accountSettings.coins_request($params, function($data){\n var $coinsTotal = $data.data.coins_total;\n if($savedCoins != null){\n if($savedCoins != $coinsTotal){\n var $audio = new Audio('/sounds/coins.mp3');\n $audio.play();\n }\n $(\".target-coins\").html($coinsTotal).promise().done(function(){\n nurseslounge_myDashboard_accountSettings.createCookie('COINS', $coinsTotal,100);\n });\n }\n });\n },\n coins_request:function($params, cback){\n $.ajax({\n url: \"/myDashboard/header/coins/get\",\n method: \"POST\",\n cache:false,\n dataType: \"json\",\n data:$params,\n success: function ($data) {\n libs.expire($data);\n cback($data);\n }\n });\n },\n //Shop\n shop:function(){\n var $topNav = $(\"#topNav\");\n var $coinsBasket = $topNav.find('.coins-basket');\n var $modal = $(\"#nurseslounge-shop-modal\");\n $coinsBasket.unbind().click(function(){\n var $allowTabs = {\n 'theShop': true,\n 'dailyQuests': false,\n 'dailyLoginRewards': false,\n };\n var $allowTabsFiltered = $allowTabs;\n $allowTabs = {};\n $.each($allowTabsFiltered, function($k, $v) {var $newObj = {};$newObj[$k]=$v;if($v){$.extend($allowTabs, $newObj);}});\n var $tab = null;\n $.each($allowTabs, function($i, $v){\n if($v){\n $tab = $i;\n return false;\n }\n });\n nurseslounge_myDashboard_accountSettings.select_tab($tab, $allowTabs, function(){\n $modal.scrollTop(0);\n $modal.modal('show');\n });\n });\n },\n select_tab_events:function($tab, $allowTabs, cback){\n //Disable All\n $('#nurseslounge-shop-modal .nav-pills .nav-link').addClass('disabled').removeClass('active');\n $('#nurseslounge-shop-modal .shop-container .tab-pane .container').html('');\n //Events\n $('#nurseslounge-shop-modal .nav-pills a[data-toggle=\"tab\"]').unbind().on('shown.bs.tab', function ($e) {\n var $selectedTab = $e.currentTarget.dataset.target.replace('#','');\n if($.inArray($selectedTab, Object.keys($allowTabs)) > -1){\n nurseslounge_myDashboard_accountSettings.select_tab($selectedTab, $allowTabs, function(){\n $(\"#nurseslounge-shop-modal\").scrollTop(0);\n });\n }\n });\n //Enable selected\n $.each($allowTabs, function ($i, $v) {\n $(\"#\"+$v).removeClass('active').removeClass('show');\n $('#nurseslounge-shop-modal .nav-pills .nav-link[data-target=\"#'+$i+'\"]').removeClass('disabled');\n });\n $('#nurseslounge-shop-modal .nav-pills .nav-link[data-target=\"#'+$tab+'\"]').addClass('active');\n $(\"#\"+$tab).addClass('active').addClass('show');\n if(cback != undefined){\n cback();\n }\n },\n select_tab:function($selectedTab, $allowTabs, cback){\n nurseslounge_myDashboard_accountSettings.select_tab_events($selectedTab, $allowTabs, function(){\n nurseslounge_myDashboard_accountSettings.load_tab($selectedTab,function() {\n switch ($selectedTab) {\n case 'theShop':\n nurseslounge_myDashboard_accountSettings.the_shop(cback);\n break;\n }\n });\n });\n },\n load_tab:function($selectedTab, cback){\n nurseslounge_myDashboard_accountSettings.get_tab($selectedTab, function($chtml){\n var $images = $($chtml).find('img');\n libs.checkImageLoad($images, function(){\n $(\"#\"+$selectedTab+\" .container\").html($chtml).promise().done(function(){\n if(cback != undefined){\n cback();\n }\n });\n });\n });\n },\n get_tab:function($selectedTab, cback){\n var $userId = libs.memoryGet('user_id');\n $.ajax({\n type: 'POST',\n url: '/myDashboard/header/shop',\n data: {user_id:$userId,tab:$selectedTab},\n method: \"POST\",\n cache:false,\n dataType: \"html\",\n success: function ($data) {\n libs.expire($data);\n cback($data);\n }\n });\n },\n the_shop:function(cback){\n var $cards = $(\"#theShop .container .nurseslounge-item-cards\");\n var $chtml = nurseslounge_myDashboard_accountSettings.the_shop_items_preview();\n $cards.html($chtml).promise().done(function(){\n nurseslounge_myDashboard_accountSettings.the_shop_items_request(function($data){\n var $chtml = nurseslounge_myDashboard_accountSettings.the_shop_items_html($data);\n libs.checkImageLoad($($chtml).find('img'), function(){\n $cards.html($chtml).promise().done(function(){\n $cards.find('.carousel').hide();\n nurseslounge_myDashboard_accountSettings.the_shop_events(function(){\n cback();\n });\n });\n });\n });\n });\n },\n the_shop_items_preview:function(){\n var $chtml = '';\n for(var $i=0; $i<2; $i++){\n $chtml += '' +\n '
    ' +\n '
    ' +\n '
    ' +\n '       ' +\n '
    ' +\n '
    ' +\n '       ' +\n '
    ' +\n ' ' +\n '
    ' +\n '
    ';\n }\n return $chtml;\n },\n the_shop_items_request:function(cback){\n var $userId = libs.memoryGet('user_id');\n $.ajax({\n url: \"/myDashboard/header/shop/items\",\n method: \"POST\",\n cache:false,\n dataType: \"json\",\n data: {user_id:$userId},\n success: function ($data) {\n libs.expire($data);\n if($data.status == 'success'){\n cback($data);\n }\n }\n });\n },\n the_shop_items_html:function($data){\n var $chtml = '
    ';\n $.each($data.data.items, function($i, $v){\n var $id = $v.id;\n var $title = $v.title;\n var $description = $v.description;\n var $itemImageRoot = $v.item_image_root;\n var $cost = $v.cost;\n $chtml += '' +\n '
    ' +\n '
    ' +\n '
    ' +\n ' \"article' +\n '
    ' +\n '
    ' +\n '

    '+$title+'

    ' +\n '

    '+$description+'

    ' +\n '
    ' +\n ' ' +\n '
    ' +\n '
    ';\n });\n $chtml += '
    ';\n return $chtml;\n },\n the_shop_events:function(cback){\n var $carousels = $(\"#theShop .container .nurseslounge-item-cards .carousel\");\n $carousels.unbind();\n $carousels.slick({\n speed: 300,\n slidesToShow: 2,\n slidesToScroll: 1,\n arrows: true,\n responsive: [\n {\n breakpoint: 1024,\n settings: {\n slidesToShow: 2,\n slidesToScroll: 1,\n }\n },\n {\n breakpoint: 600,\n settings: {\n slidesToShow: 1,\n slidesToScroll: 1\n }\n },\n {\n breakpoint: 480,\n settings: {\n slidesToShow: 1,\n slidesToScroll: 1\n }\n }\n ]\n });\n setTimeout(function(){\n $carousels.slick('refresh');\n $carousels.find('.item').click(function(){\n var $that = $(this);\n var $id = $that.data('id');\n nurseslounge_myDashboard_accountSettings.the_shop_open_item($id);\n });\n $carousels.fadeIn();\n }, 600);\n cback();\n },\n the_shop_open_item:function($id){\n var $userId = libs.memoryGet('user_id');\n var $params = $.extend({}, {id:$id, user_id:$userId});\n var $cards = $(\"#theShop .container .nurseslounge-item-cards\");\n var $purchaseCards = $(\"#theShop .container .nurseslounge-item-purchase-cards\");\n nurseslounge_myDashboard_accountSettings.the_shop_open_item_purchase_request($params, function($chtml){\n libs.checkImageLoad($($chtml).find('img'), function(){\n $cards.hide();\n $purchaseCards.html($chtml).promise().done(function(){\n $purchaseCards = $(\"#theShop .container .nurseslounge-item-purchase-cards\");\n var $back = $purchaseCards.find('.back');\n $back.unbind().click(function(){\n $purchaseCards.html('');\n $cards.fadeIn();\n });\n var $buy = $purchaseCards.find('.buy');\n $buy.unbind().click(function(){\n nurseslounge_myDashboard_accountSettings.the_shop_open_item_purchase_set_request($params, function($data){\n $params = $.extend({}, $params, {code:$data.data.code});\n nurseslounge_myDashboard_accountSettings.coins({user_id:$userId});\n nurseslounge_myDashboard_accountSettings.the_shop_open_item_purchase_complete_request($params, function($chtml){\n $purchaseCards.html($chtml).promise().done(function(){\n $purchaseCards = $(\"#theShop .container .nurseslounge-item-purchase-cards\");\n var $continue = $purchaseCards.find('.continue');\n $continue.unbind().click(function(){\n $purchaseCards.html('');\n nurseslounge_myDashboard_accountSettings.the_shop(function(){\n $cards.fadeIn();\n });\n });\n });\n });\n });\n });\n });\n });\n });\n },\n the_shop_open_item_purchase_request:function($params, cback){\n $.ajax({\n type: 'POST',\n url: '/myDashboard/header/shop/items/purchase',\n data: $params,\n method: \"POST\",\n cache:false,\n dataType: \"html\",\n success: function ($data) {\n libs.expire($data);\n cback($data);\n }\n });\n },\n the_shop_open_item_purchase_set_request:function($params, cback){\n $.ajax({\n url: \"/myDashboard/header/shop/items/purchase/set\",\n method: \"POST\",\n cache:false,\n dataType: \"json\",\n data: $params,\n success: function ($data) {\n libs.expire($data);\n if($data.status == 'success'){\n cback($data);\n }\n }\n });\n },\n the_shop_open_item_purchase_complete_request:function($params, cback){\n $.ajax({\n type: 'POST',\n url: '/myDashboard/header/shop/items/purchase/complete',\n data: $params,\n method: \"POST\",\n cache:false,\n dataType: \"html\",\n success: function ($data) {\n libs.expire($data);\n cback($data);\n }\n });\n },\n //Mobile\n mobile:function(){\n if(libs.isAndroid()){\n var $modal = $(\"#nurseslounge-android-mobile-modal\");\n $modal.modal('show');\n }\n }\n};\n","var nurseslounge_myDashboard_recommendations = {\r\n init:function($params){\r\n var $userId = libs.memoryGet('user_id');\r\n if($userId != 'guest'){\r\n $params = $.extend({}, $params, {user_id:$userId});\r\n nurseslounge_myDashboard_recommendations.recommendations($params);\r\n }\r\n },\r\n recommendations:function($params){\r\n nurseslounge_myDashboard_recommendations.get_recommendations($params, function($data){\r\n nurseslounge_myDashboard_recommendations.recommendation_section('lounges', $data);\r\n });\r\n },\r\n get_recommendations:function($params, cback){\r\n $.ajax({\r\n url: \"/recommendations/get\",\r\n method: \"POST\",\r\n cache:false,\r\n dataType: \"json\",\r\n data:$params,\r\n success: function ($data) {\r\n libs.expire($data);\r\n cback($data);\r\n }\r\n });\r\n },\r\n recommendation_section:function($section, $data){\r\n var $modal = $(\"#nurseslounge-recommended-lounges-modal\");\r\n var $modalBody = $modal.find(\".modal-body\");\r\n var $modalTitle = $modal.find(\".modal-title\");\r\n var $chtml = '';\r\n switch ($section){\r\n case 'lounges':\r\n $modalTitle.html('Lounge Recommendations');\r\n $chtml += '' +\r\n '
      ' + nurseslounge_myDashboard_recommendations.lounge_item_html($data.data.lounges) + '
    ' +\r\n '
    ' +\r\n '
    ' +\r\n ' ' +\r\n '
    ' +\r\n '
    ' +\r\n ' ' +\r\n '
    ' +\r\n '
    ';\r\n break;\r\n case 'degrees':\r\n $modalTitle.html('Degrees Recommendations');\r\n $chtml += '' +\r\n '
      ' + nurseslounge_myDashboard_recommendations.degree_item_html($data.data.lounge_degrees) + '
    ' +\r\n '
    ' +\r\n '
    ' +\r\n ' ' +\r\n '
    ' +\r\n '
    ';\r\n break;\r\n case 'jobs':\r\n $modalTitle.html('Jobs Recommendations');\r\n $chtml += '' +\r\n '
      ' + nurseslounge_myDashboard_recommendations.job_item_html($data.data.jobs) + '
    ' +\r\n '
    ' +\r\n '
    ' +\r\n ' ' +\r\n '
    ' +\r\n '
    ';\r\n break;\r\n }\r\n libs.checkImageLoad($($chtml).find('img'), function(){\r\n $modalBody.html($chtml).promise().done(function() {\r\n switch ($section) {\r\n case 'lounges':\r\n if($data.data.lounges.length > 0){\r\n nurseslounge_myDashboard_recommendations.lounge_recommendations_events(function() {\r\n nurseslounge_myDashboard_recommendations.recommendation_section('degrees', $data);\r\n });\r\n if(!$modal.is(':visible')){\r\n $modal.modal('show');\r\n }\r\n }else{\r\n nurseslounge_myDashboard_recommendations.recommendation_section('degrees', $data);\r\n }\r\n break;\r\n case 'degrees':\r\n if($data.data.lounge_degrees.length > 0){\r\n nurseslounge_myDashboard_recommendations.degree_recommendations_events(function() {\r\n nurseslounge_myDashboard_recommendations.recommendation_section('jobs', $data);\r\n });\r\n if(!$modal.is(':visible')){\r\n $modal.modal('show');\r\n }\r\n }else{\r\n nurseslounge_myDashboard_recommendations.recommendation_section('jobs', $data);\r\n }\r\n break;\r\n case 'jobs':\r\n if($data.data.jobs.length > 0){\r\n nurseslounge_myDashboard_recommendations.job_recommendations_events();\r\n if(!$modal.is(':visible')){\r\n $modal.modal('show');\r\n }\r\n }else{\r\n $modal.modal('hide');\r\n }\r\n break;\r\n }\r\n });\r\n });\r\n },\r\n lounge_item_html:function($lounges){\r\n var $chtml = '';\r\n $.each($lounges, function($i, $v){\r\n var $img = $v.logo_root_lounge;\r\n $chtml+='' +\r\n '
  • ' +\r\n '
    ' +\r\n '
    ' +\r\n '
    ' +\r\n '
    ' +\r\n ' \"lounge\"' +\r\n '
    ' +\r\n '
    ' +\r\n '

    ' +\r\n ' '+$v.name+'' +\r\n '

    ';\r\n if($v.lounge_type_id != 1 && $v.lounge_type_id != 2) {\r\n $chtml += '' +\r\n '

    ' +\r\n $v.followers_count + ' Followers' +\r\n '

    ';\r\n }\r\n $chtml+='' +\r\n '
    ' +\r\n '
    ' +\r\n '
    ' +\r\n '
    ';\r\n if($v.lounge_type_id == 1 || $v.lounge_type_id == 2){\r\n $chtml+='' +\r\n '
    ' +\r\n '
    ' +\r\n nurseslounge_lounges_home.add_stars($v.rating) +\r\n '
    ' +\r\n '
    ' +\r\n $v.rating + ' / 5 ' +\r\n '
    ' +\r\n '
    ';\r\n }else{\r\n $chtml+='' +\r\n '
    ' +\r\n '
    ' +\r\n '     ' +\r\n '
    ' +\r\n '
    ' +\r\n '     ' +\r\n '
    ' +\r\n '
    ';\r\n }\r\n if($v.lounge_type_id != 1 && $v.lounge_type_id != 2){\r\n if($v.my_follow) {\r\n $chtml +='';\r\n }else{\r\n $chtml+='';\r\n }\r\n }\r\n $chtml+='' +\r\n '
    ' +\r\n '
    ' +\r\n '
  • ';\r\n });\r\n return $chtml;\r\n },\r\n lounge_recommendations_events:function(next){\r\n var $modal = $(\"#nurseslounge-recommended-lounges-modal\");\r\n var $loungeList = $modal.find(\".lounge-list:first\");\r\n var $skip = $modal.find(\".skip:first\");\r\n var $followAll = $modal.find(\".follow-all:first\");\r\n var $userId = libs.memoryGet('user_id');\r\n $loungeList.find(\".follow-action\").unbind().click(function($e){\r\n $e.stopPropagation();\r\n var $that = $(this);\r\n var $follow = !$that.hasClass('follow');\r\n var $item = $that.parents('.item:first');\r\n var $key = $item.data('key');\r\n var $params = {user_id:$userId, key:$key, follow:$follow};\r\n nurseslounge_lounges_home.lounges_home_list_follower_request($params, function($data){\r\n if($data.status == 'success'){\r\n var $follow = $data.data.follow;\r\n var $members = $data.data.members;\r\n $item.find('.lounge-followers:first').html($members+ ' Followers');\r\n if($follow){\r\n $item.find('.follow-action').removeClass('btn-save').removeClass('btnAnimate').addClass('btn-light').addClass('follow').html('Followed');\r\n }else{\r\n $item.find('.follow-action').removeClass('btn-light').removeClass('follow').addClass('btn-save').addClass('btnAnimate').html('Follow');\r\n }\r\n }\r\n });\r\n });\r\n $loungeList.find(\".open-lounge\").unbind().click(function(){\r\n var $key = $(this).parents('.item:first').data('key');\r\n window.open(window.location.origin+'/lounge/'+$key,'_blank');\r\n });\r\n $followAll.unbind().click(function(){\r\n $loungeList.find(\".follow-action\").each(function(){\r\n var $that = $(this);\r\n $that.click();\r\n });\r\n $loungeList.hide();\r\n next();\r\n });\r\n $skip.unbind().click(function(){\r\n $loungeList.hide();\r\n next();\r\n });\r\n },\r\n degree_item_html:function($loungeDegrees){\r\n var $userId = libs.memoryGet('user_id');\r\n var $chtml = '';\r\n $.each($loungeDegrees, function($i, $v){\r\n var $img = $v.lounge.logo_root_lounge;\r\n $chtml+='' +\r\n '
  • ';\r\n $chtml +='';\r\n if($v.sponsored == 1) {\r\n $chtml += '';\r\n }\r\n $chtml += '';\r\n $chtml +='' +\r\n '
    ' +\r\n '
    ' +\r\n '
    ' +\r\n '
    ' +\r\n ' \"hospital\"' +\r\n '
    ' +\r\n '
    ' +\r\n '

    ' +\r\n ' '+$v.title+'' +\r\n '

    ' +\r\n '

    '+$v.lounge.small_name+'

    ' +\r\n '

    ';\r\n if($v.lounge.location.address_city) {\r\n $chtml+='' +\r\n $v.lounge.location.address_city + ', ';\r\n }\r\n if($v.lounge.location.address_state) {\r\n $chtml+='' +\r\n $v.lounge.location.address_state;\r\n }\r\n $chtml+='' +\r\n '

    ' +\r\n '
    ' +\r\n '
    ' +\r\n '
    ' +\r\n '
    ' +\r\n '
    ' +\r\n '
    ' +\r\n nurseslounge_degrees_home.add_stars($v.rating) +\r\n '
    ' +\r\n '
    ' +\r\n $v.rating + ' / 5' +\r\n '
    ' +\r\n '
    ';\r\n if($userId != 'guest'){\r\n $chtml += '';\r\n }\r\n $chtml += '' +\r\n '
    ' +\r\n '
    ' +\r\n '
  • ';\r\n });\r\n return $chtml;\r\n },\r\n degree_recommendations_events:function(next){\r\n var $modal = $(\"#nurseslounge-recommended-lounges-modal\");\r\n var $skip = $modal.find(\".skip:first\");\r\n var $degreeList = $modal.find(\".degree-list:first\");\r\n $degreeList.find(\".open-degree\").unbind().click(function(){\r\n var $link = $(this).parents('.item:first').data('link');\r\n window.open($link,'_blank');\r\n });\r\n $skip.unbind().click(function(){\r\n $degreeList.hide();\r\n next();\r\n });\r\n },\r\n job_item_html:function($jobs){\r\n var $chtml = '';\r\n $.each($jobs, function($i, $v){\r\n $chtml += '' +\r\n '
  • ' +\r\n '
    ' +\r\n '
    ' +\r\n '
    ' +\r\n '
    ' +\r\n ' \"hospital\"' +\r\n '
    ' +\r\n '
    ' +\r\n '

    ' +\r\n ' ' + $v.title +\r\n ' ' +\r\n '

    ' +\r\n '
    ' +\r\n '
    ' +\r\n '
    ' +\r\n '
    ' +\r\n '
  • ';\r\n });\r\n return $chtml;\r\n },\r\n job_recommendations_events:function(){\r\n var $modal = $(\"#nurseslounge-recommended-lounges-modal\");\r\n var $skip = $modal.find(\".skip:first\");\r\n var $jobList = $modal.find(\".job-list:first\");\r\n $jobList.find(\".open-job\").unbind().click(function(){\r\n var $link = $(this).parents('.item:first').data('link');\r\n window.open($link,'_blank');\r\n });\r\n $skip.unbind().click(function(){\r\n $modal.modal('hide');\r\n });\r\n }\r\n};\r\n","var nurseslounge_myDashboard_continuingEducation = {\r\n tab_open:'recommended-education-by-specialty',\r\n init:function($params){\r\n var $tab = nurseslounge_myDashboard_continuingEducation.tab_open;\r\n nurseslounge_myDashboard_continuingEducation.ce_tabs_events($tab, function(){\r\n nurseslounge_myDashboard_continuingEducation.ce_list_pagination($tab);\r\n });\r\n },\r\n ce_tabs_events:function($tab, cback){\r\n var $allowTabs = [\r\n 'recommended-education-by-specialty',\r\n 'recommended-education-by-state',\r\n 'all-education'\r\n ];\r\n var $cEList = $(\"#nurseslounge-home-continuing-education .continuing-education-list\");\r\n var $homeCe = $(\"#nurseslounge-home-continuing-education\");\r\n //Disable All\r\n $cEList.find('.nav-pills .nav-link').addClass('disabled').removeClass('active');\r\n $cEList.find('.tab-pane .continuing-education-content').html('');\r\n //Events\r\n $cEList.find('.nav-pills a[data-toggle=\"tab\"]').unbind().on('shown.bs.tab', function ($e) {\r\n var $selectedTab = $e.currentTarget.dataset.target.replace('#','');\r\n if($.inArray($selectedTab, $allowTabs) > -1){\r\n if($selectedTab == 'all-education'){\r\n\r\n }\r\n nurseslounge_myDashboard_continuingEducation.ce_list_pagination($selectedTab);\r\n //$(\"html, body\").animate({scrollTop:$homeCe.offset().top});\r\n }\r\n });\r\n //Enable selected\r\n $.each($allowTabs, function ($i, $v) {\r\n $(\"#\"+$v).removeClass('active').removeClass('show');\r\n $cEList.find('.nav-pills .nav-link[data-target=\"#'+$v+'\"]').removeClass('disabled');\r\n });\r\n $cEList.find('.nav-pills .nav-link[data-target=\"#'+$tab+'\"]').addClass('active');\r\n $(\"#\"+$tab).addClass('active').addClass('show');\r\n if(cback != undefined){\r\n cback();\r\n }\r\n },\r\n ce_list_preview:function(){\r\n var $chtml = '';\r\n for(var $i=1; $i<=6; $i++){\r\n $chtml += '' +\r\n '';\r\n }\r\n return $chtml;\r\n },\r\n ce_list_pagination:function($tab, $rating, $hours, $states, $specialties, $title){\r\n nurseslounge_myDashboard_continuingEducation.tab_open = $tab;\r\n $rating = $rating == undefined ? '' : $rating;\r\n $hours = $hours == undefined ? '' : $hours;\r\n $states = $states == undefined ? '' : $states;\r\n $specialties = $specialties == undefined ? '' : $specialties;\r\n $title = $title == undefined ? '' : $title;\r\n var $reload;\r\n var $loaded = false;\r\n var $tabDiv = $(\"#\"+$tab);\r\n var $cEContent = $tabDiv.find('.continuing-education-content:first');\r\n var $paginationNav = $tabDiv.find('.pagination-nav:first');\r\n var $resultInfo = $tabDiv.find('.result-info-count:first');\r\n var $paginationObj;\r\n var $data = $.extend({}, {\r\n user_id:libs.memoryGet('user_id'),\r\n tab:$tab,\r\n rating:$rating,\r\n hours:$hours,\r\n states:$states,\r\n specialties:$specialties,\r\n title:$title\r\n });\r\n try{\r\n $paginationObj = libs.memoryGet('continuing_education_list_pagination');\r\n if($paginationObj){\r\n $paginationObj.pagination('destroy');\r\n }\r\n }catch ($e) {\r\n }\r\n $paginationObj = $paginationNav.pagination({\r\n pageSize: 6,\r\n showPageNumbers: true,\r\n showPrevious: true,\r\n showNext: true,\r\n showNavigator: true,\r\n showFirstOnEllipsisShow: true,\r\n showLastOnEllipsisShow: true,\r\n dataSource:window.location.protocol +'//'+ window.location.hostname + \"/myDashboard/continuingEducation/lists\",\r\n locator: 'data.continuing_education',\r\n ajax:{\r\n method: \"POST\",\r\n cache:false,\r\n dataType: \"json\",\r\n data:$data,\r\n beforeSend: function() {\r\n $cEContent.html(nurseslounge_myDashboard_continuingEducation.ce_list_preview());\r\n },\r\n complete:function($data){\r\n libs.expire($data.responseJSON);\r\n }\r\n },\r\n totalNumberLocator: function($data) {\r\n return $data.data.total;\r\n },\r\n callback: function($data, $pagination) {\r\n $loaded = true;\r\n var $pageNumber = $pagination.pageNumber;\r\n var $pageSize = $pagination.pageSize;\r\n var $totalNumber = $pagination.totalNumber;\r\n var $first = $totalNumber > 0 ? (($pageNumber-1) * $pageSize) + 1 : 0;\r\n var $last = $totalNumber > 0 ? ($first + $data.length - 1) : 0;\r\n $paginationNav.removeClass('ce-list-preload');\r\n $resultInfo.removeClass('ce-list-preload').html('Showing '+$first+' - '+$last+' of '+$totalNumber+' results for Continuing Education');\r\n var $chtml = nurseslounge_myDashboard_continuingEducation.item_html($data);\r\n if($chtml != ''){\r\n libs.checkImageLoad($($chtml).find('img'), function () {\r\n $cEContent.html('').html($chtml).promise().done(function () {\r\n nurseslounge_myDashboard_continuingEducation.list_events($tab);\r\n });\r\n });\r\n }else{\r\n var $txt = '';\r\n switch ($tab) {\r\n case 'recommended-education-by-specialty':\r\n $txt = 'No recommended education found';\r\n break;\r\n case 'recommended-education-by-state':\r\n $txt = 'No recommended education found';\r\n break;\r\n case 'all-education':\r\n $txt = 'No education found ';\r\n break;\r\n }\r\n $chtml = '' +\r\n '
    ' +\r\n '
    ' +\r\n $txt +\r\n '
    ' +\r\n '
    ';\r\n $cEContent.html($chtml);\r\n }\r\n }\r\n });\r\n libs.memorySave('continuing_education_list_pagination', $paginationObj);\r\n $reload = setTimeout(function(){\r\n if(!$loaded){\r\n nurseslounge_myDashboard_continuingEducation.ce_list_pagination($tab, $rating, $hours, $states, $specialties, $title);\r\n }else{\r\n clearTimeout($reload);\r\n }\r\n }, 20000);\r\n },\r\n item_html:function($data){\r\n var $chtml = '';\r\n $.each($data, function($i, $v){\r\n var $id = $v.id;\r\n var $title = $v.title;\r\n var $description = $v.description_text;\r\n var $types = [];\r\n $.each($v.specialties, function($i, $sv){\r\n $types.push($sv.specialty.type);\r\n });\r\n var $states = [];\r\n $.each($v.states, function($i, $sv){\r\n $states.push($sv.state.state);\r\n });\r\n var $image = $v.image_root_widget;\r\n //var $link = $v.link;\r\n var $hours = $v.hours ? $v.hours : 0;\r\n var $rating = $v.rating ? $v.rating : 0;\r\n var $question = $v.questions ? $v.questions : 0;\r\n var $ceTags = [];\r\n if($types.length > 0) {\r\n $.each($types, function($i, $v){\r\n $ceTags.push({tag:$v});\r\n });\r\n }\r\n if($states.length > 0) {\r\n $.each($states, function($i, $v){\r\n $ceTags.push({tag:$v});\r\n });\r\n }\r\n if($hours > 0) {\r\n $ceTags.push({tag:'Hours '+$hours});\r\n }\r\n if($rating > 0) {\r\n $ceTags.push({tag:'Rating '+$rating});\r\n }\r\n if($question > 0) {\r\n $ceTags.push({tag:'Question '+$question});\r\n }\r\n $description = $description.length > 500 ? $description.substr(0, 500) + '...' : $description;\r\n $chtml += '' +\r\n '
    ' +\r\n '
    ' +\r\n '
    ' +\r\n ' \"continuing' +\r\n '
    '+\r\n '
    ' +\r\n '

    '+$title+'

    '+\r\n '

    ' + $description + '

    ' +\r\n //' ' +\r\n '
    ' +\r\n '
    ';\r\n $.each($ceTags, function($sI, $sV){\r\n $chtml += '
    ' + $sV.tag + '
    ';\r\n });\r\n $chtml += '' +\r\n '
    ' +\r\n '       ' +\r\n '
    ' +\r\n '
    ' +\r\n '
    ' +\r\n '
    ';\r\n });\r\n return $chtml;\r\n },\r\n list_events:function($tab){\r\n var $cEList = $(\"#nurseslounge-home-continuing-education .continuing-education-list\");\r\n var $cEContent = $cEList.find('.continuing-education-content');\r\n var $item = $cEContent.find('.item');\r\n $item.unbind().click(function(){\r\n var $that = $(this);\r\n var $id = $that.data('id');\r\n nurseslounge_myDashboard_continuingEducation.open_ce({\r\n user_id:libs.memoryGet('user_id'),\r\n id:$id\r\n });\r\n });\r\n //Search Events\r\n var $keyPressBinding;\r\n var $cEAll = $(\"#nurseslounge-home-continuing-education\");\r\n var $ceTab = $cEAll.find('#'+$tab);\r\n var $rating = $ceTab.find('select[name=\"rating\"]');\r\n var $hours = $ceTab.find('select[name=\"hours\"]');\r\n var $states = $ceTab.find('select[name=\"states\"]');\r\n var $specialties = $ceTab.find('select[name=\"specialties\"]');\r\n var $title = $ceTab.find('input[name=\"title\"]');\r\n var $titleWrapper = $ceTab.find('.title-wrapper');\r\n $title.unbind().on('keyup keydown keypress', function(){\r\n var $that = $(this);\r\n var $tab = $that.data('tab');\r\n var $ratingVal = $rating.val();\r\n var $hoursVal = $hours.val();\r\n var $statesVal = $states.val();\r\n var $specialtiesVal = $specialties.val();\r\n var $titleVal = $that.val();\r\n try{\r\n clearTimeout($keyPressBinding);\r\n }catch($e){\r\n\r\n }\r\n $keyPressBinding = setTimeout(function(){\r\n nurseslounge_myDashboard_continuingEducation.ce_list_pagination(\r\n $tab,\r\n $ratingVal,\r\n $hoursVal,\r\n $statesVal,\r\n $specialtiesVal,\r\n $titleVal\r\n );\r\n }, 5000);\r\n });\r\n nurseslounge_myDashboard_continuingEducation.ce_autocomplete(\r\n $title,\r\n {\r\n tab:nurseslounge_myDashboard_continuingEducation.tab_open,\r\n user_id:libs.memoryGet('user_id')\r\n },\r\n \"/myDashboard/continuingEducation/autocomplete\",\r\n function($keyword){\r\n try{\r\n clearTimeout($keyPressBinding);\r\n }catch ($e) {\r\n\r\n }\r\n var $ratingVal = $rating.val();\r\n var $hoursVal = $hours.val();\r\n var $statesVal = $states.val();\r\n var $specialtiesVal = $specialties.val();\r\n nurseslounge_myDashboard_continuingEducation.ce_list_pagination(\r\n nurseslounge_myDashboard_continuingEducation.tab_open,\r\n $ratingVal,\r\n $hoursVal,\r\n $statesVal,\r\n $specialtiesVal,\r\n $keyword\r\n );\r\n }\r\n );\r\n if($title.length > 0){\r\n $titleWrapper.removeClass('d-none');\r\n $titleWrapper.fadeIn();\r\n }\r\n try{\r\n $rating.chosen(\"destroy\");\r\n }catch (e) {}\r\n $rating.chosen();\r\n $rating.unbind().change(function(){\r\n var $that = $(this);\r\n var $tab = $that.data('tab');\r\n var $ratingVal = $that.val();\r\n var $hoursVal = $hours.val();\r\n var $statesVal = $states.val();\r\n var $specialtiesVal = $specialties.val();\r\n var $titleVal = $title.val();\r\n try{\r\n clearTimeout($keyPressBinding);\r\n }catch($e){\r\n\r\n }\r\n $keyPressBinding = setTimeout(function(){\r\n nurseslounge_myDashboard_continuingEducation.ce_list_pagination(\r\n $tab,\r\n $ratingVal,\r\n $hoursVal,\r\n $statesVal,\r\n $specialtiesVal,\r\n $titleVal\r\n );\r\n }, 800);\r\n });\r\n if($rating.length > 0){\r\n $rating.fadeIn();\r\n }\r\n try{\r\n $hours.chosen(\"destroy\");\r\n }catch (e) {}\r\n $hours.chosen();\r\n $hours.unbind().change(function(){\r\n var $that = $(this);\r\n var $tab = $that.data('tab');\r\n var $ratingVal = $rating.val();\r\n var $hoursVal = $that.val();\r\n var $statesVal = $states.val();\r\n var $specialtiesVal = $specialties.val();\r\n var $titleVal = $title.val();\r\n try{\r\n clearTimeout($keyPressBinding);\r\n }catch($e){\r\n\r\n }\r\n $keyPressBinding = setTimeout(function(){\r\n nurseslounge_myDashboard_continuingEducation.ce_list_pagination(\r\n $tab,\r\n $ratingVal,\r\n $hoursVal,\r\n $statesVal,\r\n $specialtiesVal,\r\n $titleVal\r\n );\r\n }, 800);\r\n });\r\n if($hours.length > 0){\r\n $hours.fadeIn();\r\n }\r\n try{\r\n $states.chosen(\"destroy\");\r\n }catch (e) {}\r\n $states.chosen();\r\n $states.unbind().change(function(){\r\n var $that = $(this);\r\n var $tab = $that.data('tab');\r\n var $ratingVal = $rating.val();\r\n var $hoursVal = $hours.val();\r\n var $statesVal = $that.val();\r\n var $specialtiesVal = $specialties.val();\r\n var $titleVal = $title.val();\r\n try{\r\n clearTimeout($keyPressBinding);\r\n }catch($e){\r\n\r\n }\r\n $keyPressBinding = setTimeout(function(){\r\n nurseslounge_myDashboard_continuingEducation.ce_list_pagination(\r\n $tab,\r\n $ratingVal,\r\n $hoursVal,\r\n $statesVal,\r\n $specialtiesVal,\r\n $titleVal\r\n );\r\n }, 800);\r\n });\r\n if($states.length > 0){\r\n $states.fadeIn();\r\n }\r\n try{\r\n $specialties.chosen(\"destroy\");\r\n }catch (e) {}\r\n $specialties.chosen();\r\n $specialties.unbind().change(function(){\r\n var $that = $(this);\r\n var $tab = $that.data('tab');\r\n var $ratingVal = $rating.val();\r\n var $hoursVal = $hours.val();\r\n var $statesVal = $states.val();\r\n var $specialtiesVal = $that.val();\r\n var $titleVal = $title.val();\r\n try{\r\n clearTimeout($keyPressBinding);\r\n }catch($e){\r\n\r\n }\r\n $keyPressBinding = setTimeout(function(){\r\n nurseslounge_myDashboard_continuingEducation.ce_list_pagination(\r\n $tab,\r\n $ratingVal,\r\n $hoursVal,\r\n $statesVal,\r\n $specialtiesVal,\r\n $titleVal\r\n );\r\n }, 800);\r\n });\r\n if($specialties.length > 0){\r\n $specialties.fadeIn();\r\n }\r\n },\r\n ce_autocomplete:function($target, $data, $url, cback){\r\n try {\r\n $($target).autocomplete(\"destroy\");\r\n }catch (e) {\r\n }\r\n var $value = '';\r\n $($target).autocomplete({\r\n minLength\t:2,\r\n search\t\t: function(){\r\n $(this).addClass(\"ui-autocomplete-loading\");\r\n },\r\n open \t\t: function(){\r\n $(this).removeClass(\"ui-autocomplete-loading\");\r\n },\r\n source: function(request, response) {\r\n $.ajax({\r\n method: 'POST',\r\n url:$url,\r\n data:$.extend({},{\r\n keyword:$($target).val()\r\n }, $data),\r\n dataType: \"json\",\r\n success: function($data){\r\n libs.expire($data);\r\n $value = '';\r\n response($data);\r\n }\r\n });\r\n },\r\n create:function(){\r\n $(this).prev().remove();\r\n $(this).trigger(\"keypress.autocomplete\");\r\n },\r\n select: function (event, ui) {\r\n $value = ui.item.value;\r\n $(this).val($value);\r\n cback($value);\r\n return false;\r\n }\r\n }).keypress(function ($e) {\r\n if ($e.which == 13) {\r\n cback($(this).val());\r\n $(this).autocomplete(\"close\");\r\n }\r\n });\r\n },\r\n open_ce:function($data){\r\n $.ajax({\r\n url: \"/myDashboard/myProfile/continuingEducation/visits\",\r\n method: \"POST\",\r\n cache: false,\r\n dataType: \"json\",\r\n data: $data,\r\n success: function ($data) {\r\n if($data.data.continuing_education_link){\r\n window.open($data.data.continuing_education_link+'?utm_source=affiliate&fpr=nurseslounge', '_blank', '');\r\n }\r\n }\r\n });\r\n },\r\n\r\n};\r\n","var nurseslounge_myDashboard_preceptors = {\r\n tab_open:'find-local-clinical',\r\n init:function($params){\r\n var $tab = nurseslounge_myDashboard_preceptors.tab_open;\r\n nurseslounge_myDashboard_preceptors.preceptors_tabs_events($tab, function(){\r\n var $all = $(\"#nurseslounge-home-preceptors\");\r\n var $pTab = $all.find('#'+$tab);\r\n var $miles = $pTab.find('select[name=\"miles\"]');\r\n nurseslounge_myDashboard_preceptors.preceptors_list_pagination($tab, undefined, $miles.val());\r\n });\r\n },\r\n preceptors_tabs_events:function($tab, cback){\r\n var $allowTabs = [\r\n 'find-local-clinical',\r\n 'become-paid-preceptor',\r\n 'all-preceptors'\r\n ];\r\n var $pList = $(\"#nurseslounge-home-preceptors .preceptors-list\");\r\n //Disable All\r\n $pList.find('.nav-pills .nav-link').addClass('disabled').removeClass('active');\r\n $pList.find('.tab-pane .preceptors-content').html('');\r\n //Events\r\n $pList.find('.nav-pills a[data-toggle=\"tab\"]').unbind().on('shown.bs.tab', function ($e) {\r\n var $selectedTab = $e.currentTarget.dataset.target.replace('#','');\r\n if($.inArray($selectedTab, $allowTabs) > -1){\r\n if($selectedTab == 'find-local-clinical'){\r\n var $all = $(\"#nurseslounge-home-preceptors\");\r\n var $pTab = $all.find('#'+$tab);\r\n var $miles = $pTab.find('select[name=\"miles\"]');\r\n nurseslounge_myDashboard_preceptors.preceptors_list_pagination($selectedTab, undefined, $miles.val());\r\n }else if($selectedTab == 'all-preceptors'){\r\n nurseslounge_myDashboard_preceptors.preceptors_list_pagination($selectedTab);\r\n }else{\r\n nurseslounge_myDashboard_preceptors.preceptor_video('https://www.youtube.com/watch?v=tRce4vIPVCY');\r\n }\r\n //$(\"html, body\").animate({scrollTop:$homeCe.offset().top});\r\n }\r\n });\r\n //Enable selected\r\n $.each($allowTabs, function ($i, $v) {\r\n $(\"#\"+$v).removeClass('active').removeClass('show');\r\n $pList.find('.nav-pills .nav-link[data-target=\"#'+$v+'\"]').removeClass('disabled');\r\n });\r\n $pList.find('.nav-pills .nav-link[data-target=\"#'+$tab+'\"]').addClass('active');\r\n $(\"#\"+$tab).addClass('active').addClass('show');\r\n if(cback != undefined){\r\n cback();\r\n }\r\n },\r\n preceptor_video:function($video){\r\n var $tab = $(\"#become-paid-preceptor\");\r\n var $videoDiv = $tab.find('.video:first');\r\n $videoDiv.replaceWith('
    ');\r\n $videoDiv = $tab.find('.video:first');\r\n var $urlVideo = new URL($video);\r\n var $videoId = $urlVideo.searchParams.get('v');\r\n var $youtubePlayer = libs.memoryGet('youtubePlayer');\r\n if($youtubePlayer){\r\n $youtubePlayer.destroy();\r\n }\r\n try{\r\n $youtubePlayer = new YT.Player($videoDiv[0], {\r\n height: '660',\r\n width: '100%',\r\n videoId: $videoId,\r\n playerVars: {'autoplay': 1, 'controls': 1},\r\n events: {\r\n 'onReady': function () {\r\n $youtubePlayer.mute();\r\n $youtubePlayer.playVideoAt(0);\r\n },\r\n 'onError': function () {\r\n $videoDiv.hide();\r\n libs.memorySave('youtubePlayer', null);\r\n nurseslounge_myDashboard_preceptors.preceptor_video($video);\r\n }\r\n }\r\n });\r\n }catch ($e) {\r\n\r\n }\r\n libs.memorySave('youtubePlayer', $youtubePlayer);\r\n },\r\n preceptors_list_preview:function(){\r\n var $chtml = '';\r\n for(var $i=1; $i<=6; $i++){\r\n $chtml+= '' +\r\n '
  • ' +\r\n '
    ' +\r\n '
    ' +\r\n '
    ' +\r\n '
    ' +\r\n '                 ' +\r\n '                 ' +\r\n '
    ' +\r\n '
    ' +\r\n '

    ' +\r\n '                   ' +\r\n '                   ' +\r\n '                   ' +\r\n '                   ' +\r\n '

    ' +\r\n '

     

    ' +\r\n '

     

    ' +\r\n '
    ' +\r\n '
    ' +\r\n '
    ' +\r\n '
    ' +\r\n ' ' +\r\n '
    ' +\r\n '
    ' +\r\n '
  • ';\r\n }\r\n return $chtml;\r\n },\r\n preceptors_list_pagination:function($tab, $name, $miles, $states, $specialties, $cityStateZip){\r\n nurseslounge_myDashboard_preceptors.tab_open = $tab;\r\n $name = $name == undefined ? '' : $name;\r\n $miles = $miles == undefined ? '' : $miles;\r\n $states = $states == undefined ? '' : $states;\r\n $specialties = $specialties == undefined ? '' : $specialties;\r\n $cityStateZip = $cityStateZip == undefined ? '' : $cityStateZip;\r\n var $reload;\r\n var $loaded = false;\r\n var $tabDiv = $(\"#\"+$tab);\r\n var $pContent = $tabDiv.find('.preceptors-content:first');\r\n var $paginationNav = $tabDiv.find('.pagination-nav:first');\r\n var $resultInfo = $tabDiv.find('.result-info-count:first');\r\n var $paginationObj;\r\n var $data = $.extend({}, {\r\n user_id:libs.memoryGet('user_id'),\r\n tab:$tab,\r\n name:$name,\r\n miles:$miles,\r\n states:$states,\r\n specialties:$specialties,\r\n city_state_zip:$cityStateZip\r\n });\r\n try{\r\n $paginationObj = libs.memoryGet('preceptors_list_pagination');\r\n if($paginationObj){\r\n $paginationObj.pagination('destroy');\r\n }\r\n }catch ($e) {\r\n }\r\n $paginationObj = $paginationNav.pagination({\r\n pageSize: 10,\r\n showPageNumbers: true,\r\n showPrevious: true,\r\n showNext: true,\r\n showNavigator: true,\r\n showFirstOnEllipsisShow: true,\r\n showLastOnEllipsisShow: true,\r\n dataSource:window.location.protocol +'//'+ window.location.hostname + \"/myDashboard/preceptors/lists\",\r\n locator: 'data.preceptors',\r\n ajax:{\r\n method: \"POST\",\r\n cache:false,\r\n dataType: \"json\",\r\n data:$data,\r\n beforeSend: function() {\r\n $pContent.html(nurseslounge_myDashboard_preceptors.preceptors_list_preview());\r\n },\r\n complete:function($data){\r\n libs.expire($data.responseJSON);\r\n }\r\n },\r\n totalNumberLocator: function($data) {\r\n return $data.data.total;\r\n },\r\n callback: function($data, $pagination) {\r\n $loaded = true;\r\n var $pageNumber = $pagination.pageNumber;\r\n var $pageSize = $pagination.pageSize;\r\n var $totalNumber = $pagination.totalNumber;\r\n var $first = $totalNumber > 0 ? (($pageNumber-1) * $pageSize) + 1 : 0;\r\n var $last = $totalNumber > 0 ? ($first + $data.length - 1) : 0;\r\n $paginationNav.removeClass('preceptor-list-preload');\r\n $resultInfo.removeClass('preceptor-list-preload').html('Showing '+$first+' - '+$last+' of '+$totalNumber+' results for Preceptors');\r\n var $chtml = nurseslounge_myDashboard_preceptors.item_html($data);\r\n if($chtml != ''){\r\n libs.checkImageLoad($($chtml).find('img'), function () {\r\n $pContent.html('').html($chtml).promise().done(function () {\r\n nurseslounge_myDashboard_preceptors.list_events($tab);\r\n });\r\n });\r\n }else{\r\n var $txt = '';\r\n switch ($tab) {\r\n case 'find-local-clinical':\r\n $txt = 'No preceptors found';\r\n break;\r\n case 'all-preceptors':\r\n $txt = 'No preceptors found';\r\n break;\r\n }\r\n $chtml = '' +\r\n '
    ' +\r\n '
    ' +\r\n $txt +\r\n '
    ' +\r\n '
    ';\r\n $pContent.html($chtml);\r\n }\r\n }\r\n });\r\n libs.memorySave('preceptors_list_pagination', $paginationObj);\r\n $reload = setTimeout(function(){\r\n if(!$loaded){\r\n nurseslounge_myDashboard_preceptors.preceptors_list_pagination($tab, $name, $miles, $states, $specialties);\r\n }else{\r\n clearTimeout($reload);\r\n }\r\n }, 20000);\r\n },\r\n item_html:function($data){\r\n var $chtml = '';\r\n $.each($data, function($i, $v){\r\n var $id = $v.id;\r\n var $name = $v && $v.name ? $v.name : '';\r\n var $specialties = [];\r\n $.each($v.specialties, function($si, $sv){\r\n $specialties.push($sv.specialty.specialty);\r\n });\r\n $specialties = $specialties.join(',');\r\n var $city = $v && $v.city ? $v.city : '';\r\n var $state = $v && $v.state ? $v.state : '';\r\n var $abbreviation = $state && $state.abbreviation ? $state.abbreviation : '';\r\n var $img = $v.photo_root_widget +'?resize=80';\r\n $chtml+='' +\r\n '
  • ' +\r\n '
    ' +\r\n '
    ' +\r\n '
    ' +\r\n '
    ' +\r\n ' \"preceptor\"' +\r\n '
    ' +\r\n '
    ' +\r\n '

    '+$name+'

    ' +\r\n '

    '+$specialties+'

    ' +\r\n '

    '+$city+', '+$abbreviation+'

    ' +\r\n '
    ' +\r\n '
    ' +\r\n '
    ' +\r\n '
    ' +\r\n ' ' +\r\n '
    ' +\r\n '
    ' +\r\n '
  • ';\r\n });\r\n return $chtml;\r\n },\r\n list_events:function($tab){\r\n var $pList = $(\"#nurseslounge-home-preceptors .preceptors-list\");\r\n var $pContent = $pList.find('.preceptors-content');\r\n var $item = $pContent.find('.item');\r\n $item.unbind().click(function(){\r\n var $that = $(this);\r\n var $id = $that.data('id');\r\n nurseslounge_myDashboard_preceptors.open_preceptor({\r\n user_id:libs.memoryGet('user_id'),\r\n id:$id\r\n });\r\n });\r\n //Search Events\r\n var $keyPressBinding;\r\n var $all = $(\"#nurseslounge-home-preceptors\");\r\n var $pTab = $all.find('#'+$tab);\r\n var $name = $pTab.find('input[name=\"name\"]');\r\n var $miles = $pTab.find('select[name=\"miles\"]');\r\n var $states = $pTab.find('select[name=\"states\"]');\r\n var $specialties = $pTab.find('select[name=\"specialties\"]');\r\n var $cityStateZip = $pTab.find('input[name=\"city_state_zip\"]');\r\n var $titleWrapper = $pTab.find('.title-wrapper');\r\n var $cityStateZipWrapper = $pTab.find('.city_state_zip-wrapper');\r\n $name.unbind().on('keyup keydown keypress', function(){\r\n var $that = $(this);\r\n var $tab = $that.data('tab');\r\n var $nameVal = $name.val();\r\n var $milesVal = $miles.val();\r\n var $statesVal = $states.val();\r\n var $specialtiesVal = $specialties.val();\r\n var $cityStateZipVal = $cityStateZip.val();\r\n try{\r\n clearTimeout($keyPressBinding);\r\n }catch($e){\r\n\r\n }\r\n $keyPressBinding = setTimeout(function(){\r\n nurseslounge_myDashboard_preceptors.preceptors_list_pagination(\r\n $tab,\r\n $nameVal,\r\n $milesVal,\r\n $statesVal,\r\n $specialtiesVal,\r\n $cityStateZipVal\r\n );\r\n }, 5000);\r\n });\r\n nurseslounge_myDashboard_preceptors.preceptor_autocomplete(\r\n $name,\r\n {\r\n tab:nurseslounge_myDashboard_preceptors.tab_open,\r\n user_id:libs.memoryGet('user_id')\r\n },\r\n \"/myDashboard/preceptors/autocomplete\",\r\n function($keyword){\r\n try{\r\n clearTimeout($keyPressBinding);\r\n }catch ($e) {\r\n\r\n }\r\n var $nameVal = $name.val();\r\n var $milesVal = $miles.val();\r\n var $statesVal = $states.val();\r\n var $specialtiesVal = $specialties.val();\r\n var $cityStateZipVal = $cityStateZip.val();\r\n nurseslounge_myDashboard_preceptors.preceptors_list_pagination(\r\n nurseslounge_myDashboard_preceptors.tab_open,\r\n $nameVal,\r\n $milesVal,\r\n $statesVal,\r\n $specialtiesVal,\r\n $cityStateZipVal,\r\n );\r\n }\r\n );\r\n if($name.length > 0){\r\n $titleWrapper.removeClass('d-none');\r\n $titleWrapper.fadeIn();\r\n }\r\n\r\n $cityStateZip.unbind().on('keyup keydown keypress', function(){\r\n var $that = $(this);\r\n var $tab = $that.data('tab');\r\n var $nameVal = $name.val();\r\n var $milesVal = $miles.val();\r\n var $statesVal = $states.val();\r\n var $specialtiesVal = $specialties.val();\r\n var $cityStateZipVal = $cityStateZip.val();\r\n try{\r\n clearTimeout($keyPressBinding);\r\n }catch($e){\r\n\r\n }\r\n $keyPressBinding = setTimeout(function(){\r\n nurseslounge_myDashboard_preceptors.preceptors_list_pagination(\r\n $tab,\r\n $nameVal,\r\n $milesVal,\r\n $statesVal,\r\n $specialtiesVal,\r\n $cityStateZipVal\r\n );\r\n }, 2000);\r\n });\r\n if($cityStateZip.length > 0){\r\n $cityStateZipWrapper.removeClass('d-none');\r\n $cityStateZipWrapper.fadeIn();\r\n }\r\n\r\n $miles.unbind().change(function(){\r\n var $nameVal = $name.val();\r\n var $milesVal = $miles.val();\r\n var $statesVal = $states.val();\r\n var $specialtiesVal = $specialties.val();\r\n var $cityStateZipVal = $cityStateZip.val();\r\n nurseslounge_myDashboard_preceptors.preceptors_list_pagination(\r\n nurseslounge_myDashboard_preceptors.tab_open,\r\n $nameVal,\r\n $milesVal,\r\n $statesVal,\r\n $specialtiesVal,\r\n $cityStateZipVal,\r\n );\r\n });\r\n if($miles.length > 0){\r\n $miles.removeClass('d-none');\r\n $miles.fadeIn();\r\n }\r\n\r\n try{\r\n $states.chosen(\"destroy\");\r\n }catch (e) {}\r\n $states.chosen();\r\n $states.unbind().change(function(){\r\n var $that = $(this);\r\n var $tab = $that.data('tab');\r\n var $nameVal = $name.val();\r\n var $milesVal = $miles.val();\r\n var $statesVal = $states.val();\r\n var $specialtiesVal = $specialties.val();\r\n var $cityStateZipVal = $cityStateZip.val();\r\n try{\r\n clearTimeout($keyPressBinding);\r\n }catch($e){\r\n\r\n }\r\n $keyPressBinding = setTimeout(function(){\r\n nurseslounge_myDashboard_preceptors.preceptors_list_pagination(\r\n $tab,\r\n $nameVal,\r\n $milesVal,\r\n $statesVal,\r\n $specialtiesVal,\r\n $cityStateZipVal\r\n );\r\n }, 800);\r\n });\r\n if($states.length > 0){\r\n $states.fadeIn();\r\n }\r\n\r\n try{\r\n $specialties.chosen(\"destroy\");\r\n }catch (e) {}\r\n $specialties.chosen();\r\n $specialties.unbind().change(function(){\r\n var $that = $(this);\r\n var $tab = $that.data('tab');\r\n var $nameVal = $name.val();\r\n var $milesVal = $miles.val();\r\n var $statesVal = $states.val();\r\n var $specialtiesVal = $specialties.val();\r\n var $cityStateZipVal = $cityStateZip.val();\r\n try{\r\n clearTimeout($keyPressBinding);\r\n }catch($e){\r\n\r\n }\r\n $keyPressBinding = setTimeout(function(){\r\n nurseslounge_myDashboard_preceptors.preceptors_list_pagination(\r\n $tab,\r\n $nameVal,\r\n $milesVal,\r\n $statesVal,\r\n $specialtiesVal,\r\n $cityStateZipVal\r\n );\r\n }, 800);\r\n });\r\n if($specialties.length > 0){\r\n $specialties.fadeIn();\r\n }\r\n },\r\n preceptor_autocomplete:function($target, $data, $url, cback){\r\n try {\r\n $($target).autocomplete(\"destroy\");\r\n }catch (e) {\r\n }\r\n var $value = '';\r\n $($target).autocomplete({\r\n minLength\t:2,\r\n search\t\t: function(){\r\n $(this).addClass(\"ui-autocomplete-loading\");\r\n },\r\n open \t\t: function(){\r\n $(this).removeClass(\"ui-autocomplete-loading\");\r\n },\r\n source: function(request, response) {\r\n $.ajax({\r\n method: 'POST',\r\n url:$url,\r\n data:$.extend({},{\r\n keyword:$($target).val()\r\n }, $data),\r\n dataType: \"json\",\r\n success: function($data){\r\n libs.expire($data);\r\n $value = '';\r\n response($data);\r\n }\r\n });\r\n },\r\n create:function(){\r\n $(this).prev().remove();\r\n $(this).trigger(\"keypress.autocomplete\");\r\n },\r\n select: function (event, ui) {\r\n $value = ui.item.value;\r\n $(this).val($value);\r\n cback($value);\r\n return false;\r\n }\r\n }).keypress(function ($e) {\r\n if ($e.which == 13) {\r\n cback($(this).val());\r\n $(this).autocomplete(\"close\");\r\n }\r\n });\r\n },\r\n open_preceptor:function($data){\r\n $.ajax({\r\n url: \"/myDashboard/myProfile/preceptor/visits\",\r\n method: \"POST\",\r\n cache: false,\r\n dataType: \"json\",\r\n data: $data,\r\n success: function ($data) {\r\n if($data.data.preceptor_url){\r\n window.open($data.data.preceptor_url, '_blank', '');\r\n }\r\n }\r\n });\r\n },\r\n\r\n};\r\n","var nurseslounge_myDashboard_manageMyCompany = {\n init:function($params){\n $(\"#topNav .learn-more-employers\").unbind().click(function(){\n var $modal = $(\"#nurseslounge-lounge-manage-my-lounge-modal\");\n nurseslounge_myDashboard_manageMyCompany.manage_my_company_request($params, function($chtml){\n $modal.find('.modal-body').html($chtml).promise().done(function(){\n nurseslounge_myDashboard_manageMyCompany.manage_my_company_events($params, function(){\n $modal.modal('show');\n });\n });\n });\n });\n },\n manage_my_company_request:function($params, cback){\n $.ajax({\n url: \"/myDashboard/header/manage/popup\",\n method: \"POST\",\n cache:false,\n dataType: \"html\",\n data:$params,\n success: function ($data) {\n libs.expire($data);\n cback($data);\n }\n });\n },\n manage_my_company_events:function($params, cback){\n var $modal = $(\"#nurseslounge-lounge-manage-my-lounge-modal\");\n var $listWrapper = $modal.find('.manage-my-lounge-list-wrapper');\n var $manageMyLoungeForm = $modal.find('form');\n var $loungeTypes = $manageMyLoungeForm.find('select[name=\"loungeTypes\"]');\n var $autocompleteWrapper = $manageMyLoungeForm.find('.manage-my-lounge-list-autocomplete-wrapper');\n var $name = $manageMyLoungeForm.find('input[name=\"name\"]');\n try{\n $loungeTypes.chosen('destroy');\n }catch (e) {}\n $loungeTypes.chosen();\n $loungeTypes.unbind();\n $loungeTypes.change(function(){\n var $that = $(this);\n var $val = $that.val();\n if($val.length > 0){\n $autocompleteWrapper.fadeIn();\n $listWrapper.fadeIn();\n }else{\n $autocompleteWrapper.hide();\n $listWrapper.hide();\n }\n nurseslounge_myDashboard_manageMyCompany.manage_my_company_search($params);\n });\n nurseslounge_myDashboard_manageMyCompany.manage_my_company_autocomplete(\n $name,\n $params,\n \"/lounges/home/autocomplete\",\n function($keyword){\n nurseslounge_myDashboard_manageMyCompany.manage_my_company_search($params);\n }\n );\n nurseslounge_myDashboard_manageMyCompany.manage_my_company_search($params);\n if(cback != undefined){\n cback();\n }\n },\n manage_my_company_autocomplete:function($target, $data, $url, cback){\n var $modal = $(\"#nurseslounge-lounge-manage-my-lounge-modal\");\n var $modalForm = $modal.find('form');\n var $loungeTypes = $modalForm.find('select[name=\"loungeTypes\"]');\n try {\n $($target).autocomplete(\"destroy\");\n }catch (e) {\n }\n var $value = '';\n $($target).autocomplete({\n minLength\t:2,\n search\t\t: function(){\n $(this).addClass(\"ui-autocomplete-loading\");\n },\n open \t\t: function(){\n $(this).removeClass(\"ui-autocomplete-loading\");\n },\n source: function(request, response) {\n $.ajax({\n method: 'POST',\n url:$url,\n data:$.extend({\n keyword:$($target).val(),\n typeName:$loungeTypes.val()\n }, $data),\n dataType: \"json\",\n success: function($data){\n libs.expire($data);\n $value = '';\n response($data);\n }\n });\n },\n create:function(){\n $(this).prev().remove();\n $(this).trigger(\"keypress.autocomplete\");\n },\n select: function (event, ui) {\n $value = ui.item.value;\n $(this).val($value);\n cback($value);\n return false;\n }\n }).keypress(function ($e) {\n if ($e.which == 13) {\n cback($(this).val());\n $(this).autocomplete(\"close\");\n }\n });\n },\n manage_my_company_search:function($params){\n var $modal = $(\"#nurseslounge-lounge-manage-my-lounge-modal\");\n var $loungeList = $modal.find('.manage-my-lounge-list:first');\n var $manageMyLoungeForm = $modal.find('form');\n var $loungeTypes = $manageMyLoungeForm.find('select[name=\"loungeTypes\"]');\n var $name = $manageMyLoungeForm.find('input[name=\"name\"]');\n var $loungeListPreview = nurseslounge_myDashboard_manageMyCompany.manage_my_company_preview();\n var $resultInfo = $modal.find(\".result-info-count:first\");\n var $resultPreview = ' ';\n var $paginationNav = $modal.find('.pagination-nav');\n var $paginationNavPreview = ' ';\n var $listWrapper = $modal.find('.manage-my-lounge-list-wrapper');\n var $autocompleteWrapper = $manageMyLoungeForm.find('.manage-my-lounge-list-autocomplete-wrapper');\n $params = $.extend({},$params,{\n name:$name.val(),\n typeName:$loungeTypes.val(),\n });\n $resultInfo.addClass('nurseslounge-home-manage-my-lounges-preload').html($resultPreview);\n $paginationNav.addClass('nurseslounge-home-manage-my-lounges-preload').html($paginationNavPreview);\n if($params.typeName.length > 0) {\n $loungeList.html($loungeListPreview).promise().done(function () {\n $autocompleteWrapper.fadeIn();\n $listWrapper.fadeIn();\n nurseslounge_myDashboard_manageMyCompany.manage_my_company_pagination($params);\n });\n }\n },\n manage_my_company_preview:function(){\n var $chtml = '';\n for(var $i=1; $i<=10; $i++){\n $chtml+= '' +\n '
  • ' +\n '
    ' +\n '
    ' +\n '
    ' +\n '
    ' +\n '                 ' +\n '                 ' +\n '
    ' +\n '
    ' +\n '

    ' +\n '                   ' +\n '                   ' +\n '                   ' +\n '                   ' +\n '

    ' +\n '

    ' +\n '  ' +\n '

    ' +\n '
    ' +\n '
    ' +\n '
    ' +\n '
    ' +\n '
    ' +\n '
    ' +\n ' ' +\n ' ' +\n ' ' +\n ' ' +\n ' ' +\n '
    ' +\n '
    ' +\n '  ' +\n '
    ' +\n '
    ' +\n '                   ' +\n '
    ' +\n '
    ' +\n '
  • ';\n }\n return $chtml;\n },\n manage_my_company_pagination:function($params){\n var $reload;\n var $loaded = false;\n var $afterFirstPagination = false;\n var $modal = $(\"#nurseslounge-lounge-manage-my-lounge-modal\");\n var $manageMyLoungeForm = $modal.find('form');\n var $loungeTypes = $manageMyLoungeForm.find('select[name=\"loungeTypes\"]');\n var $loungeList = $modal.find(\".manage-my-lounge-list:first\");\n var $paginationNav = $modal.find('.pagination-nav');\n var $previewHeight = $modal.find('.manage-my-lounge-list .preview:first').innerHeight();\n var $loungeHeight = $loungeList.innerHeight();\n var $pageSize = Math.round(($loungeHeight/$previewHeight));\n var $resultInfo = $modal.find(\".result-info-count:first\");\n var $saveParams = $params;\n var $paginationObj;\n try {\n $paginationObj = libs.memoryGet('manage_my_company_pagination');\n if ($paginationObj) {\n $paginationObj.pagination('destroy');\n }\n } catch ($e) {\n }\n $paginationObj = $paginationNav.pagination({\n pageSize: $pageSize,\n showPageNumbers: true,\n showPrevious: true,\n showNext: true,\n showNavigator: true,\n showFirstOnEllipsisShow: true,\n showLastOnEllipsisShow: true,\n dataSource: window.location.protocol + '//' + window.location.hostname + \"/myDashboard/manageMyLounges/get\",\n locator: 'data.lounges',\n ajax: {\n method: \"POST\",\n cache: false,\n dataType: \"json\",\n data: $params,\n beforeSend: function () {\n $loungeList.html(nurseslounge_myDashboard_manageMyCompany.manage_my_company_preview());\n },\n complete: function ($data) {\n libs.expire($data.responseJSON);\n }\n },\n totalNumberLocator: function ($data) {\n return $data.data.total;\n },\n callback: function ($data, $pagination) {\n $loaded = true;\n var $title = [];\n var $loungeTypesVal = $loungeTypes.val();\n if ($loungeTypesVal.length > 0 && $.inArray('employers', $loungeTypesVal) != -1) {\n $title.push('Employers');\n }\n if ($loungeTypesVal.length > 0 && $.inArray('schools', $loungeTypesVal) != -1) {\n $title.push('Schools');\n }\n if ($loungeTypesVal.length > 0 && $.inArray('nurseAssociations', $loungeTypesVal) != -1) {\n $title.push('Nurse Associations');\n }\n if ($loungeTypesVal.length > 0 && $.inArray('states', $loungeTypesVal) != -1) {\n $title.push('States');\n }\n if ($loungeTypesVal.length > 0 && $.inArray('specialties', $loungeTypesVal) != -1) {\n $title.push('Specialties');\n }\n $title = $title.join(', ');\n if ($loungeList.length > 0 && $loungeList.offset().top > 0 && $afterFirstPagination) {\n $('html, body').animate({scrollTop: $loungeList.offset().top - 100});\n } else {\n $afterFirstPagination = true;\n }\n var $pageNumber = $pagination.pageNumber;\n var $pageSize = $pagination.pageSize;\n var $totalNumber = $pagination.totalNumber;\n var $first = $totalNumber > 0 ? (($pageNumber - 1) * $pageSize) + 1 : 0;\n var $last = $totalNumber > 0 ? ($first + $data.length - 1) : 0;\n $paginationNav.removeClass('nurseslounge-home-manage-my-lounges-preload');\n $resultInfo.removeClass('nurseslounge-home-manage-my-lounges-preload').html('Showing ' + $first + ' - ' + $last + ' of ' + $totalNumber + ' results for ' + $title + '');\n var $chtml = nurseslounge_myDashboard_manageMyCompany.manage_my_company_item($data);\n libs.checkImageLoad($($chtml).find('img'), function () {\n $loungeList.html('').html($chtml).promise().done(function () {\n nurseslounge_myDashboard_manageMyCompany.manage_my_company_list_events($saveParams);\n });\n });\n }\n });\n libs.memorySave('manage_my_company_pagination', $paginationObj);\n $reload = setTimeout(function(){\n if(!$loaded){\n nurseslounge_myDashboard_manageMyCompany.manage_my_company_pagination($params);\n }else{\n clearTimeout($reload);\n }\n }, 10000);\n },\n manage_my_company_item:function($lounges){\n var $chtml = '';\n var $userId = libs.memoryGet('user_id');\n $.each($lounges, function($i, $v){\n var $img = $v.logo_root_lounge;\n var $publicLink = $v.public_link;\n var $ownerClass = $v.isOwner ? 'open-lounge':'claim-lounge';\n $chtml+='' +\n '
  • ' +\n '
    ' +\n '
    ' +\n '
    ' +\n '
    ' +\n ' \"lounge\"' +\n '
    ' +\n '
    ' +\n '

    ' +\n ' '+$v.name+'' +\n '

    ';\n if($v.lounge_type_id != 1 && $v.lounge_type_id != 2){\n $chtml+='' +\n '

    ' +\n $v.followers_count+ ' Followers' +\n '

    ';\n }\n $chtml+='' +\n '
    ' +\n '
    ' +\n '
    ' +\n '
    ';\n if($v.lounge_type_id == 1 || $v.lounge_type_id == 2){\n $chtml+='' +\n '
    ' +\n '
    ' +\n nurseslounge_myDashboard_manageMyCompany.manage_my_company_item_add_stars($v.rating) +\n '
    ' +\n '
    ' +\n $v.rating + ' / 5 ' +\n '
    ' +\n '
    ';\n }else{\n $chtml+='' +\n '
    ' +\n '
    ' +\n '     ' +\n '
    ' +\n '
    ' +\n '     ' +\n '
    ' +\n '
    ';\n }\n if($userId != 'guest' && $v.lounge_type_id != 1 && $v.lounge_type_id != 2){\n if($v.my_follow) {\n $chtml +='';\n }else{\n $chtml+='';\n }\n }\n $chtml+='' +\n '
    ' +\n '
    ' +\n '
  • ';\n });\n return $chtml;\n },\n manage_my_company_item_add_stars:function($rating){\n var $chtml = '';\n for(var $i=1; $i<=5; $i++) {\n var $star = $rating - $i;\n var $offsetOn;\n var $offsetOff;\n var $unique = libs.getUniqueId();\n if($star >= 0){\n $offsetOn = 100;\n $offsetOff = 0;\n }else if($star < 0 && $star > -1){\n $star = ($star * -1);\n $offsetOff = ($star * 100);\n $offsetOn = (100 - $offsetOff);\n }else{\n $offsetOn = 0;\n $offsetOff = 100;\n }\n $chtml += '' +\n '' +\n ' ' +\n ' ';\n if($offsetOn > 0) {\n $chtml += '' +\n '';\n }\n if($offsetOff > 0){\n $chtml += '' +\n '';\n }\n $chtml += '' +\n ' ' +\n ' ' +\n ' ' +\n '';\n }\n return $chtml;\n },\n manage_my_company_list_events:function($params){\n var $manageModal = $(\"#nurseslounge-lounge-manage-my-lounge-modal\");\n var $loungeList = $manageModal.find('.manage-my-lounge-list:first');\n var $userId = libs.memoryGet('user_id');\n $loungeList.find(\".follow-action\").unbind().click(function($e){\n $e.stopPropagation();\n var $that = $(this);\n var $follow = !$that.hasClass('follow');\n var $item = $that.parents('.item:first');\n var $key = $item.data('key');\n var $params = {user_id:$userId, key:$key, follow:$follow};\n nurseslounge_lounges_home.lounges_home_list_follower_request($params, function($data){\n if($data.status == 'success'){\n var $follow = $data.data.follow;\n var $members = $data.data.members;\n $item.find('.lounge-followers:first').html($members+ ' Followers');\n if($follow){\n $item.find('.follow-action').removeClass('btn-save').removeClass('btnAnimate').addClass('btn-light').addClass('follow').html('Followed');\n }else{\n $item.find('.follow-action').removeClass('btn-light').removeClass('follow').addClass('btn-save').addClass('btnAnimate').html('Follow');\n }\n }\n });\n });\n $loungeList.find(\".claim-lounge\").unbind().click(function(){\n $manageModal.modal('hide');\n var $key = $(this).parents('.item:first').data('key');\n var $modal = $(\"#nurseslounge-claim-lounges-modal\");\n var $modalTitle = $modal.find(\".modal-title\");\n var $modalBody = $modal.find(\".modal-body\");\n $params = $.extend({}, $params, {key:$key});\n nurseslounge_lounge_overview.claim_lounge_form_request($params, function($chtml){\n $modalTitle.html('Contact us to own this Lounge');\n $modalBody.html($chtml).promise().done(function(){\n nurseslounge_lounge_overview.claim_lounge_validate(function($form){\n $params = $.extend({}, $params, libs.getObjForm($form));\n nurseslounge_lounge_overview.claim_lounge_request($params, function(){\n $modal.modal('hide');\n });\n });\n $modal.find(\"form input[name='phone']\").mask('+(00) 000-000-0000');\n $modal.modal('show');\n });\n });\n });\n $loungeList.find(\".open-lounge\").unbind().click(function(){\n $manageModal.modal('hide');\n var $key = $(this).parents('.item:first').data('key');\n var $publicLink = $(this).parents('.item:first').data('public_link');\n if($userId == 'guest'){\n window.open($publicLink,'_self');\n }else{\n router.navigate('/lounge/'+$key);\n }\n });\n },\n};\n","var nurseslounge_myDashboard_thoughtLeadersForm = {\n init:function($params){\n $(\"#topNav .thoughtLeaders-form\").unbind().click(function(){\n nurseslounge_myDashboard_thoughtLeadersForm.open_modal($params);\n });\n },\n open_modal:function($params){\n var $modal = $(\"#nurseslounge-lounge-thought-leaders-modal\");\n nurseslounge_myDashboard_thoughtLeadersForm.popup_form($params, function($chtml){\n $modal.find('.modal-body').html($chtml).promise().done(function(){\n nurseslounge_myDashboard_thoughtLeadersForm.popup_form_events($params, function(){\n $modal.modal('show');\n });\n });\n });\n },\n popup_form:function($params, cback){\n $.ajax({\n url: \"/myDashboard/header/thoughtLeaders/popup\",\n method: \"POST\",\n cache:false,\n dataType: \"html\",\n data:$params,\n success: function ($data) {\n libs.expire($data);\n cback($data);\n }\n });\n },\n popup_form_events:function($params, cback){\n nurseslounge_myDashboard_thoughtLeadersForm.popup_form_validate(function($form){\n nurseslounge_myDashboard_thoughtLeadersForm.popup_form_request($.extend({}, $params ,libs.getObjForm($form)), function(){\n $(\"#nurseslounge-lounge-thought-leaders-modal\").modal('hide');\n });\n });\n if(cback != undefined){\n cback();\n }\n },\n popup_form_validate:function(cback){\n var $validator;\n try {\n $validator = $(\"#nurseslounge-lounge-thought-leaders-modal form\").validate();\n $validator.destroy();\n }catch (e) {\n\n }\n $validator = $(\"#nurseslounge-lounge-thought-leaders-modal form\").validate({\n onsubmit: true,\n debug: true,\n ignore: '*:not(.validate)',\n rules: {\n name: {\n required: true,\n minlength: 3,\n maxlength: 191,\n },\n email: {\n required: true,\n minlength: 3,\n maxlength: 191,\n email:true,\n },\n linkedin: {\n required: false,\n minlength: 3\n },\n expertise: {\n required: false,\n minlength: 3,\n maxlength: 191,\n },\n thoughtLeader: {\n required: true,\n minlength: 3,\n }\n },\n messages: {\n name: {\n required: \"The name is required\",\n minlength: \"The name must have at least 3 characters\",\n maxlength: \"The name cannot exceed 191 characters\"\n },\n email: {\n required: \"The email is required\",\n minlength: \"The email must have at least 3 characters\",\n maxlength: \"The email cannot exceed 191 characters\",\n email:\"The email is invalid\",\n },\n linkedin: {\n required: \"The linkedin link is not required\",\n minlength: \"The email must have at least 3 characters\",\n },\n expertise: {\n required: \"The area of expertise is not required\",\n minlength: \"The name must have at least 3 characters\",\n maxlength: \"The name cannot exceed 191 characters\"\n },\n thoughtLeader: {\n required: \"The thought leader is required\",\n minlength: \"The email must have at least 3 characters\",\n },\n },\n errorPlacement: function($error, $element){\n var $ele = $($element);\n var $name = $ele.attr(\"name\");\n if(!$ele.hasClass('is-invalid')){\n $ele.addClass('is-invalid');\n }\n $(\".\"+$name+\"_validate\").html($($error).text()).show();\n },\n success: function($error, $element) {\n var $ele = $($element);\n var $name = $ele.attr(\"name\");\n if($ele.hasClass('is-invalid')){\n $ele.removeClass('is-invalid');\n }\n $(\".\"+$name+\"_validate\").html('').hide();\n },\n submitHandler: function($form) {\n cback($form);\n return false;\n }\n });\n },\n popup_form_request:function($data, cback){\n $.ajax({\n url:\"/myDashboard/header/thoughtLeaders/popup/set\",\n method: \"POST\",\n dataType: \"json\",\n data:$data,\n success: function ($data) {\n libs.expire($data);\n if(\n $data.status == 'success'\n ){\n cback();\n }\n },\n error: function (jqXHR, textStatus, errorThrown) {\n //alert(errorThrown);\n }\n });\n }\n};\n","var nurseslounge_myDashboard_afterPopUp = {\r\n request:function($params){\r\n $.ajax({\r\n url: \"/myDashboard/after/popUp\",\r\n method: \"POST\",\r\n cache:false,\r\n dataType: \"json\",\r\n data:$params,\r\n success: function ($data) {\r\n libs.expire($data);\r\n nurseslounge_myDashboard_afterPopUp.popup($data);\r\n }\r\n });\r\n },\r\n popup:function($data){\r\n var $modal = $(\"#nurseslounge-lounge-after-popup-modal\");\r\n $modal.find('.total').html($data.data.total).promise().done(function(){\r\n if($data.data.total < 500){\r\n $modal.find('.total').hide();\r\n $modal.find('.dashboards').hide();\r\n }else{\r\n $modal.find('.total').show();\r\n $modal.find('.dashboards').show();\r\n }\r\n $modal.modal('show');\r\n });\r\n },\r\n};\r\n","var nurseslounge_profile = {\r\n profile:function($params){\r\n nurseslounge_myDashboard_accountSettings.init($params);\r\n nurseslounge_myDashboard_followAndFriend.init($params);\r\n nurseslounge_profile.submenu($params, function(){\r\n $(\".nav-underline a:eq(0)\").click();\r\n });\r\n },\r\n profile_sub:function($params){\r\n nurseslounge_myDashboard_followAndFriend.init($params);\r\n nurseslounge_myDashboard_myProfile.init($params);\r\n },\r\n activity:function($params){\r\n nurseslounge_myDashboard_accountSettings.init($params);\r\n nurseslounge_myDashboard_followAndFriend.init($params);\r\n nurseslounge_profile.submenu($params, function(){\r\n $(\".nav-underline a:eq(1)\").click();\r\n });\r\n },\r\n activity_sub:function($params){\r\n nurseslounge_myDashboard_activity.init($params);\r\n },\r\n colleagues:function($params){\r\n nurseslounge_myDashboard_accountSettings.init($params);\r\n nurseslounge_myDashboard_followAndFriend.init($params);\r\n nurseslounge_profile.submenu($params, function(){\r\n $(\".nav-underline a:eq(2)\").click();\r\n });\r\n },\r\n colleagues_sub:function($params){\r\n nurseslounge_myDashboard_followAndFriend.init($params);\r\n nurseslounge_myDashboard_colleagues.init($params);\r\n },\r\n submenu:function($params, cback){\r\n $(\".nav-underline a\").unbind().click(function(){\r\n $(\".nav-underline a\").removeClass('active');\r\n var $url = $(this).data('url');\r\n var $previewProfile = libs.memoryGet('preview_profile');\r\n if(\r\n $params.guestId != libs.memoryGet('user_id') ||\r\n $previewProfile && $previewProfile == 1\r\n ){\r\n $url = $url.split('/');\r\n var $newUrl = [];\r\n $newUrl.push('profile');\r\n $newUrl.push($params.guestId);\r\n $newUrl.push($url[2]);\r\n $newUrl = $newUrl.join('/');\r\n $url = '/'+$newUrl;\r\n nurseslounge_profile.submenu_open(this, $url, $(this).data('id')+'_sub', $params)\r\n }else{\r\n router.navigate($url);\r\n }\r\n });\r\n nurseslounge_profile.menu_selector();\r\n var $notification = nurseslounge_profile.notification_open($params, window.location.href.toString());\r\n if($notification.valid){\r\n var $open = '';\r\n switch($params.notification_type){\r\n case 'profile':{$open = 'activity';break;}\r\n }\r\n $(\".nav-underline a\").each(function(){\r\n var $that = $(this);\r\n if($that.data('id') == $open){\r\n $that.addClass('active')\r\n }\r\n });\r\n $params = $.extend({}, $params, {user_id:libs.memoryGet('user_id')});\r\n libs.subrender($notification.url, 'nurseslounge_profile', $notification.module+'_sub', $params, 'POST');\r\n }else{\r\n cback();\r\n }\r\n },\r\n submenu_open:function($this, $url, $module, $params){\r\n $params = $.extend({}, $params, {\r\n user_id:libs.memoryGet('user_id'),\r\n notification_key:null,\r\n notification_type:null,\r\n notification_type_key:null,\r\n });\r\n $($this).addClass('active');\r\n router.pause();\r\n router.navigate($url);\r\n router.resume();\r\n libs.subrender($url, 'nurseslounge_profile', $module, $params, 'POST');\r\n },\r\n notification_open:function($params, $location){\r\n var $notification = {};\r\n var $notificationData = [];\r\n if($params.notification_key){$notificationData.push($params.notification_key);}\r\n if($params.notification_type){$notificationData.push($params.notification_type);}\r\n if($params.notification_type_key){$notificationData.push($params.notification_type_key);}\r\n $notification.valid = $notificationData.length == 3;\r\n $notification.url = $location.replace('/notification/'+$notificationData.join('/'), '');\r\n var $url = $notification.url.split('/');\r\n $notification.module = $url[$url.length-1];\r\n return $notification;\r\n },\r\n menu_selector:function(){\r\n libs.globalUrl();\r\n }\r\n};\r\n","(function($){\n var $nlWallSettings;\n var nlWall;\n\n var $nlWallRecognizeUrlSettings, $nlWallRecognizeUrlOriginal;\n var nlWallRecognizeUrl;\n\n var $nlWallUpdateSettings, $nlWallUpdateOriginal;\n var nlWallUpdate;\n\n var $nlWallAlbumSettings, $nlWallAlbumOriginal;\n var nlWallAlbum;\n\n var $nlWallDocumentPreviewSettings, $nlWallDocumentPreviewOriginal;\n var nlWallDocumentPreview;\n\n var $nlWallMenuSettings, $nlWallMenuOriginal;\n var nlWallMenu;\n\n var nlWallHelper = {\n wall_pin_params:{},\n with_params:{},\n wall_dates:[],\n wall_dates_binding:null,\n server_date_helper:null,\n server_date:null,\n set_wall_pin_params:function($withParams){\n this.wall_pin_params = $withParams;\n },\n get_wall_pin_params:function(){\n return this.wall_pin_params;\n },\n set_with_params:function($withParams){\n this.with_params = $withParams;\n },\n get_with_params:function(){\n return this.with_params;\n },\n get_visibles_in:function($type, $in){\n var $showing = 0;\n $($in).each(function(){\n if($(this).data('type') == $type){\n $showing++;\n }\n });\n return $showing;\n },\n get_post_type:function($level){\n if($level > 1){\n return 'sub-comment';\n }else\n if($level == 1){\n return 'comment';\n }else\n if($level == 0){\n return 'post';\n }\n },\n set_server_date:function($serverDate){\n this.server_date_helper = new Date();\n this.server_date = new Date($serverDate);\n },\n get_server_date:function(){\n var $now = new Date().getTime();\n var $diff = $now - this.server_date_helper.getTime();\n var $date = this.server_date.getTime() + $diff;\n return new Date($date);\n },\n set_wall_dates:function($postIds){\n this.wall_dates = $postIds;\n },\n get_wall_dates:function(){\n return this.wall_dates;\n },\n wall_date:function(cback){\n var $wallDate = libs.memoryGet('wall_date');\n if($wallDate){\n try{\n $wallDate.abort();\n }catch($e){\n\n }\n }\n $wallDate = $.ajax({\n url:location.href,\n method: \"GET\",\n cache:false,\n dataType: \"html\",\n success: function ($data, $status, $response) {\n var $dateString = $response.getResponseHeader('date');\n if ($dateString.indexOf('GMT')) {\n $dateString = $dateString.replace('GMT','');\n }\n nlWallHelper.set_server_date($dateString);\n nlWallHelper.wall_date_html();\n if(cback != undefined){\n cback();\n }\n }\n });\n libs.memorySave('wall_date', $wallDate);\n },\n wall_date_html:function(){\n var $refreshEverySeconds = 1;\n var $now = nlWallHelper.get_server_date().getTime();\n var $wallDates = nlWallHelper.get_wall_dates();\n for(var $i in $wallDates){\n var $key = $wallDates[$i];\n var $ele = $(document).find('.post-date[data-id=\"'+$key+'\"]');\n if($ele.length > 0){\n var $val = $ele.data('postdate');\n var $newDate = $val.split(' ');\n var $yearMonthDay = $newDate[0];\n $yearMonthDay = $yearMonthDay.split('-');\n var $HourMinuteSecond = $newDate[1];\n $HourMinuteSecond = $HourMinuteSecond.split(':');\n var $date = new Date($yearMonthDay[0], $yearMonthDay[1] - 1, $yearMonthDay[2], $HourMinuteSecond[0], $HourMinuteSecond[1], $HourMinuteSecond[2]);\n var $second = $date.getSeconds();\n $second = $second <= 9 ? '0' + $second : $second;\n var $minute = $date.getMinutes();\n $minute = $minute <= 9 ? '0' + $minute : $minute;\n var $hour = $date.getHours();\n $hour = $hour <= 9 ? '0' + $hour : $hour;\n var $day = $date.getDate();\n $day = $day <= 9 ? '0' + $day : $day;\n var $month = $date.getMonth() + 1;\n $month = $month <= 9 ? '0' + $month : $month;\n var $year = $date.getFullYear();\n var $postDate = $year + '-' + $month + '-' + $day + ' ' + $hour + ':'+ $minute + ':' + $second;\n $date = $date.getTime();\n var $diffSeconds = Math.floor(($now - $date)/1000);\n var $diffMinutes = Math.floor($diffSeconds/60);\n var $diffHours = Math.floor($diffMinutes/60);\n var $diffDays = Math.floor($diffHours/24);\n var $chtml = '';\n if($diffDays == 0 && $diffHours == 0 && $diffMinutes == 0){\n $chtml = $diffSeconds == 1 ? $diffSeconds + ' second ago' : $diffSeconds + ' seconds ago';\n }else\n if ($diffDays == 0 && $diffHours == 0){\n $chtml = $diffMinutes == 1 ? $diffMinutes + ' minute ago' : $diffMinutes + ' minutes ago';\n }else\n if ($diffDays == 0){\n $chtml = $diffHours == 1 ? $diffHours + ' hour ago' : $diffHours + ' hours ago';\n }else\n if($diffDays < 30){\n $chtml = $diffDays == 1 ? $diffDays + ' day ago' : $diffDays + ' days ago';\n }else{\n $date = $(document).find('.post-date[data-id=\"'+$key+'\"]').data('postdate');\n //$chtml = moment.utc($date, 'YYYY-MM-DD HH:mm:ss').local().format('MMMM, DD YYYY hh:mm A');\n $chtml = 'Over 30 days ago';\n }\n if($ele.html() != $chtml){\n $ele.data('postdate', $postDate).html($chtml);\n }\n }\n }\n try{\n clearTimeout(this.wall_dates_binding);\n }catch($e){}\n this.wall_dates_binding = setTimeout(function(){\n nlWallHelper.wall_date_html();\n }, ($refreshEverySeconds * 1000));\n },\n };\n var nlWallHtml = {\n preview:function($v){\n var $postId = $v.id;\n var $postLevel = $v.level;\n var $postDate = $v.date;\n var $postLongDate = moment.utc($postDate, 'YYYY-MM-DD HH:mm:ss').local().format('MMMM, DD YYYY hh:mm A');\n var $postType = nlWallHelper.get_post_type($postLevel);\n var $isOwner = parseInt($v.is_owner) == 1;\n var $iAmOwner = $v.i_am_owner;\n var $postImage = $isOwner ? $v.to_lounge.logo_root_lounge : $v.user.profile_image_root_wall;\n var $postImageLink = $isOwner ? $v.to_lounge.link : $v.user.profile_url;\n var $postName = $isOwner ? $v.to_lounge.small_name : $v.user.first_name+' '+$v.user.last_name;\n $postName = $postName.length > 75 ? $postName.substr(0, 75) + '...' : $postName;\n var $profileImage = $iAmOwner ? $v.to_lounge.logo_root_lounge : $v.user.my_image_root_wall;\n var $profileImageLink = $iAmOwner ? $v.to_lounge.link : $v.user.profile_url;\n var $postContent = $v.post;\n $postContent = libs.replacePerBreaklines($postContent);\n $postContent = libs.convertUrlToLink($postContent);\n //item, options, post-content\n var $chtml = '';\n $chtml+= '' +\n '
    ' +\n '
    ' +\n '
    ' +\n ' \"profile' +\n '
    ' +\n '
    ' +\n '

    '+$postName+'

    ' +\n '

    '+$postLongDate+'

    ' +\n '
    ' +\n '
    ' +\n ' ' +\n ' \"option\"' +\n ' ' +\n '
    ' +\n '
    ' +\n '
    ' +\n '
    ' +\n '

    ' +\n $postContent +\n '

    ' +\n nlWallHtml.documents($v) +\n nlWallHtml.links($v) +\n '
    ' +\n '
    ' +\n '
    ';\n\n return $chtml;\n },\n load_more:function(){\n var $chtml = '' +\n '
    ' +\n '
    ' +\n ' ' +\n '
    ' +\n '
    ';\n return $chtml;\n },\n post:function($v){\n var $postId = $v.id;\n var $postLevel = $v.level;\n var $postDate = $v.date;\n var $postLongDate = moment.utc($postDate, 'YYYY-MM-DD HH:mm:ss').local().format('MMMM, DD YYYY hh:mm A');\n var $postType = nlWallHelper.get_post_type($postLevel);\n var $isOwner = parseInt($v.is_owner) == 1;\n var $iAmOwner = $v.i_am_owner;\n var $postImage = $isOwner ? $v.to_lounge.logo_root_lounge : $v.user.profile_image_root_wall;\n var $postImageLink = $isOwner ? $v.to_lounge.link : $v.user.profile_url;\n var $postName = $isOwner ? $v.to_lounge.small_name : $v.user.first_name+' '+$v.user.last_name;\n $postName = $postName.length > 75 ? $postName.substr(0, 75) + '...' : $postName;\n var $profileImage = $iAmOwner ? $v.to_lounge.logo_root_lounge : $v.user.my_image_root_wall;\n var $profileImageLink = $iAmOwner ? $v.to_lounge.link : $v.user.profile_url;\n var $postContent = $v.post;\n $postContent = libs.replacePerBreaklines($postContent);\n $postContent = libs.convertUrlToLink($postContent);\n var $announcement = $v.announcement;\n //item, options, post-content\n var $chtml = '';\n $chtml+= '' +\n '
    ' +\n '
    ' +\n '
    ' +\n ' \"profile' +\n '
    ' +\n '
    ' +\n '

    '+$postName+'

    ' +\n '

    '+$postLongDate+'

    ' +\n '
    ' +\n '
    ' +\n ' ' +\n ' \"option\"' +\n ' ' +\n '
    ' +\n '
    ' +\n '
    ';\n if($announcement){\n $chtml+= '' +\n '
    ' +\n '
    ';\n switch($announcement){\n case 'message':\n $chtml+= '';\n break;\n case 'calendar':\n $chtml+= '';\n break;\n }\n switch($announcement){\n case 'message':\n $chtml+= '' +\n '
    ' +\n '
    ' +\n '
    Announcement
    ' +\n '
    '+\n '
    ';\n break;\n case 'calendar':\n $chtml+= '' +\n '
    ' +\n '
    ' +\n '
    Calendar
    ' +\n '
    '+\n '
    ';\n break;\n }\n }\n $chtml+= '' +\n '
    ' +\n '

    ' +\n $postContent +\n '

    ' +\n nlWallHtml.documents($v) +\n nlWallHtml.links($v) +\n nlWallHtml.likes($v) +\n nlWallHtml.reply($v) +\n '
    ' +\n nlWallHtml.threads($v) +\n '
    '+\n ' ' +\n '
    ' +\n '
    ' +\n '
    ';\n\n return $chtml;\n },\n documents:function($v, $action){\n var $chtml = '';\n $action = $action != undefined ? $action : 'readonly';\n $.each($v.documents, function ($si, $sv){\n var $id = $action == 'edit' ? $sv.document.id : $sv.id;\n var $documentId = $sv.document && $sv.document.id ? $sv.document.id : null;\n var $thumb = $sv.document ? $sv.document.document_thumb_root : '';\n var $fileType = $sv.document ? $sv.document.file_type : '';\n var $name = $sv.document ? $sv.document.name : '';\n\n //website-attach, document-was-deleted\n if($documentId){\n libs.memorySave($fileType+$id, $sv.document);\n $chtml += '' +\n '
    ';\n }else{\n $chtml += '' +\n '
    ';\n }\n $chtml += '
    ';\n if($action == 'edit') {\n $chtml +=\n '
    ' +\n ' ' +\n '
    ';\n }\n $chtml +='
    ' +\n $name +\n '
    ';\n if($documentId) {\n $chtml += '' +\n '
    ' +\n '
    ' +\n ' ' +\n '
    ' +\n '
    ';\n }else{\n $chtml += '' +\n '
    ' +\n '
    ' +\n ' This document was deleted'+\n ' ' +\n '
    ' +\n '
    ';\n }\n $chtml += '
    ' +\n '
    ';\n });\n return $chtml;\n },\n links:function($v, $action){\n var $chtml = '';\n $action = $action != undefined ? $action : 'readonly';\n $.each($v.links, function ($si, $sv){\n var $link = $sv.link;\n var $linkId = $sv.links_id;\n var $linkPosition = $link.position;\n var $linkUrl = $link.patternUrl;\n var $linkImage = $link.image;\n var $linkContent = $link.content != \"\" ? $link.content : $linkUrl;\n $linkContent = $(\"
    \").html($linkContent).text();\n var $linkTitle = $link.title != \"\" ? $link.title : $linkUrl;\n $linkTitle = $(\"
    \").html($linkTitle).text();\n\n //website-link\n $chtml += '' +\n '';\n });\n return $chtml;\n },\n likes:function($v){\n var $postId = $v.id;\n var $myLike = $v.my_like;\n var $likesCount = $v.likes_count;\n var $commentsCount = $v.comments_count;\n //share add-like, likes-count, comments-count, share-with\n\n var $chtml = '' +\n '';\n return $chtml;\n },\n reply:function($v){\n var $postId = $v.id;\n var $postLevel = $v.level;\n var $toUserId = $v.user_id;\n var $postType = \"post\";\n var $isOwner = parseInt($v.is_owner) == 1;\n var $iAmOwner = $v.i_am_owner;\n var $postImage = $isOwner ? $v.to_lounge.logo_root_lounge : $v.user.profile_image_root_wall;\n var $postImageLink = $isOwner ? $v.to_lounge.link : $v.user.profile_url;\n var $postName = $isOwner ? $v.to_lounge.small_name : $v.user.first_name+' '+$v.user.last_name;\n $postName = $postName.length > 75 ? $postName.substr(0, 75) + '...' : $postName;\n var $profileImage = $iAmOwner ? $v.to_lounge.logo_root_lounge : $v.user.my_image_root_wall;\n var $profileImageLink = $iAmOwner ? $v.to_lounge.link : $v.user.profile_url;\n var $postContent = libs.replacePerBreaklines($v.post);\n $postContent = libs.convertUrlToLink($postContent);\n //reply, reply-post, wall-update\n\n var $chtml = '';\n $chtml += '' +\n '
    ' +\n '
    ' +\n '
    ' +\n ' \"profile\"' +\n '
    ' +\n '
    ' +\n '
    ' +\n '
    ';\n if($postLevel == 0){\n $chtml += '' +\n '';\n }else{\n $chtml += '' +\n '';\n }\n $chtml += '' +\n '
    ' +\n '
    ' +\n '
    ' +\n ' ' +\n ' ' +\n '
    ' +\n '
    ' +\n '
    ' +\n '
    ' +\n '
    ';\n\n return $chtml;\n },\n threads:function($v){\n var $chtml = '';\n $chtml += '
      ';\n $.each($v.comments, function($index, $data) {\n $chtml+= nlWallHtml.thread($data);\n });\n $chtml += '
    ';\n return $chtml;\n },\n thread:function($data){\n var $chtml = '';\n var $postId = $data.id;\n var $postLevel = $data.level;\n var $postDate = $data.date;\n var $postLongDate = moment.utc($postDate, 'YYYY-MM-DD HH:mm:ss').local().format('MMMM, DD YYYY hh:mm A');\n var $postType = nlWallHelper.get_post_type($postLevel);\n var $isOwner = parseInt($data.is_owner) == 1;\n var $iAmOwner = $data.i_am_owner;\n var $postImage = $isOwner ? $data.to_lounge.logo_root_lounge : $data.user.profile_image_root_wall;\n var $postImageLink = $isOwner ? $data.to_lounge.link : $data.user.profile_url;\n var $postName = $isOwner ? $data.to_lounge.small_name : $data.user.first_name+' '+$data.user.last_name;\n $postName = $postName.length > 75 ? $postName.substr(0, 75) + '...' : $postName;\n var $profileImage = $iAmOwner ? $data.to_lounge.logo_root_lounge : $data.user.my_image_root_wall;\n var $profileImageLink = $iAmOwner ? $data.to_lounge.link : $data.user.profile_url;\n var $postContent = $data.post;\n $postContent = libs.replacePerBreaklines($postContent);\n $postContent = libs.convertUrlToLink($postContent);\n\n //item, options, post-content\n $chtml += '' +\n '
  • ' +\n '
    ' +\n '
    ' +\n ' \"profile' + //TODO::data-link=\"'+$postImageLink+'\"\n '
    ' +\n '
    ' +\n '
    ' +\n '
    ' +\n '
    ' +\n ' ' +\n ' \"option\"' +\n ' ' +\n '
    ' +\n '
    '+$postName+'
    ' + //TODO::data-link=\"'+$postImageLink+'\"\n '

    '+$postLongDate+'

    ' +\n '
    ' +\n '
    ' +\n '

    ' +\n $postContent +\n '

    ' +\n nlWallHtml.documents($data) +\n nlWallHtml.links($data) +\n '
    ' +\n '
    ' +\n nlWallHtml.likes($data) +\n nlWallHtml.reply($data) +\n '
    ' +\n '
    ' +\n '
  • ' +\n '
  • ' +\n nlWallHtml.threads($data) +\n '
  • '+\n '
  • ' +\n ' ' +\n ' ... Read more' +\n ' ' +\n '
  • ';\n\n return $chtml;\n },\n recognize_preload:function(){\n return '' +\n '
    ' +\n '
    ' +\n ' ' +\n '

    Loading ...

    '+\n '
    ' +\n '
    ';\n },\n recognize_url:function($data){\n var $chtml = '';\n $.each($data.data.urls, function ($i, $v){\n var $linkPosition = $v.position;\n var $linkUrl = $v.patternUrl;\n var $linkImage = $v.image;\n var $linkContent = $v.content != \"\" ? $v.content : $linkUrl;\n var $linkTitle = $v.title != \"\" ? $v.title : $linkUrl;\n $chtml += '' +\n '';\n });\n return $chtml;\n },\n update_container:function($action){\n var $chtml = '';\n $chtml += '' +\n '
    ';\n if($action == 'image'){\n $chtml += '' +\n '
    ' +\n ' ' +\n '
    ';\n }\n if($action == 'document'){\n $chtml += '' +\n '
    ' +\n ' ' +\n '
    ';\n }\n if($action == 'video'){\n $chtml += '' +\n '
    ' +\n ' '+\n '
    ';\n }\n if($action == 'webcam_image'){\n $chtml += '' +\n '
    ' +\n '
    ' +\n ' ' +\n ' ' +\n ' ' +\n '
    ' +\n '
    ';\n }\n return $chtml;\n },\n update_preload:function(){\n return '' +\n '
    ' +\n ' ' +\n '

    Loading ...

    '+\n '
    ';\n },\n update_options:function(){\n return '' +\n '
  • ' +\n '
    ' +\n ' ' +\n ' ' +\n '
    ' +\n '
  • ';\n },\n update_wall:function($documents){\n var $chtml = '';\n var $id = $documents.id ? $documents.id : null;\n var $thumb = $documents.document_thumb_root ? $documents.document_thumb_root : '';\n var $fileType = $documents.file_type ? $documents.file_type : '';\n var $name = $documents.name ? $documents.name : '';\n\n //website-attach, document-was-deleted\n libs.memorySave($fileType+$id, $documents);\n $chtml += '' +\n '
    '+\n '
    ' +\n '
    ' +\n ' ' +\n '
    ' +\n '
    ' +\n ' ' +\n '
    ' +\n '
    ' +\n '
    ';\n return $chtml;\n },\n album_preload:function(){\n return '' +\n '
    ' +\n ' ' +\n '

    Loading ...

    '+\n '
    ';\n },\n album_view_html:function($data){\n var $chtml = '';\n $($data.data.documents).each(function($i, $v){\n $chtml += '' +\n '
    ' +\n '
    ' +\n '
    ' +\n '
    ' +\n ' ' +\n '
    ' +\n '

    '+$v.name+'

    ' +\n '
    ' +\n '
    ' +\n ' \"trash\"' +\n '
    ' +\n '
    ' +\n '
    ';\n });\n return $chtml;\n },\n wall_menu_popup:function($data, $options, $action){\n $action = $action != undefined ? $action : 'edit';\n var $postId = $data.id;\n var $postLevel = $data.level;\n var $postDate = $data.date;\n var $postLongDate = moment.utc($postDate, 'YYYY-MM-DD HH:mm:ss').local().format('MMMM, DD YYYY hh:mm A');\n var $postType = nlWallHelper.get_post_type($postLevel);\n var $isOwner = parseInt($data.is_owner) == 1;\n var $iAmOwner = $data.i_am_owner;\n var $postImage = $isOwner ? $data.to_lounge.logo_root_lounge : $data.user.profile_image_root_wall;\n var $postImageLink = $isOwner ? $data.to_lounge.link : $data.user.profile_url;\n var $postName = $isOwner ? $data.to_lounge.small_name : $data.user.first_name+' '+$data.user.last_name;\n $postName = $postName.length > 75 ? $postName.substr(0, 75) + '...' : $postName;\n var $profileImage = $iAmOwner ? $data.to_lounge.logo_root_lounge : $data.user.my_image_root_wall;\n var $profileImageLink = $iAmOwner ? $data.to_lounge.link : $data.user.profile_url;\n var $postContent = $data.post;\n var $chtml = '' +\n '
    ' +\n '
    '+\n '
    ' +\n '
    '+$postName+'
    ' +\n '
    ' +\n '
    ' +\n '
    '+$postLongDate+'
    ' +\n '
    ' +\n '
    ' +\n '
    ';\n if($action == 'edit') {\n $postContent = libs.replaceBreaklines($postContent);\n $chtml += '' +\n '';\n }else{\n $postContent = libs.replacePerBreaklines($postContent);\n $postContent = libs.convertUrlToLink($postContent);\n $chtml += '' +\n '

    ' + $postContent + '

    ';\n }\n $chtml += ''+\n '
    ' +\n '
    ';\n $chtml +=\n nlWallHtml.documents($data, $action) +\n nlWallHtml.links($data, $action) +\n '
    ' +\n '
    ';\n $.each($options, function($i, $v){\n $chtml += '';\n });\n $chtml += ''+\n '
    ';\n '
    ';\n\n return $chtml;\n },\n wall_menu_preload:function(){\n return '' +\n '
    ' +\n ' ' +\n '

    Loading ...

    '+\n '
    ';\n },\n wall_menu_update_thread:function($data){\n var $chtml = '';\n var $postId = $data.id;\n var $postLevel = $data.level;\n var $postDate = $data.date;\n var $postLongDate = moment.utc($postDate, 'YYYY-MM-DD HH:mm:ss').local().format('MMMM, DD YYYY hh:mm A');\n var $postType = nlWallHelper.get_post_type($postLevel);\n var $isOwner = parseInt($data.is_owner) == 1;\n var $iAmOwner = $data.i_am_owner;\n var $postImage = $isOwner ? $data.to_lounge.logo_root_lounge : $data.user.profile_image_root_wall;\n var $postImageLink = $isOwner ? $data.to_lounge.link : $data.user.profile_url;\n var $postName = $isOwner ? $data.to_lounge.small_name : $data.user.first_name+' '+$data.user.last_name;\n $postName = $postName.length > 75 ? $postName.substr(0, 75) + '...' : $postName;\n var $profileImage = $iAmOwner ? $data.to_lounge.logo_root_lounge : $data.user.my_image_root_wall;\n var $profileImageLink = $iAmOwner ? $data.to_lounge.link : $data.user.profile_url;\n var $postContent = $data.post;\n $postContent = libs.replacePerBreaklines($postContent);\n $postContent = libs.convertUrlToLink($postContent);\n\n //item, options, post-content\n $chtml += '' +\n '
  • ' +\n '
    ' +\n '
    ' +\n ' \"profile' +\n '
    ' +\n '
    ' +\n '
    ' +\n '
    ' +\n '
    ' +\n ' ' +\n ' \"option\"' +\n ' ' +\n '
    ' +\n '
    '+$postName+'
    ' +\n '

    '+$postLongDate+'

    ' +\n '
    ' +\n '
    ' +\n '

    ' +\n $postContent +\n '

    ' +\n nlWallHtml.documents($data) +\n nlWallHtml.links($data) +\n '
    ' +\n '
    ' +\n nlWallHtml.likes($data) +\n nlWallHtml.reply($data) +\n '
    ' +\n '
    ' +\n '
  • ';\n\n return $chtml;\n },\n wall_menu_update_post:function($data){\n var $postId = $data.id;\n var $postLevel = $data.level;\n var $postDate = $data.date;\n var $postLongDate = moment.utc($postDate, 'YYYY-MM-DD HH:mm:ss').local().format('MMMM, DD YYYY hh:mm A');\n var $postType = nlWallHelper.get_post_type($postLevel);\n var $isOwner = parseInt($data.is_owner) == 1;\n var $iAmOwner = $data.i_am_owner;\n var $postImage = $isOwner ? $data.to_lounge.logo_root_lounge : $data.user.profile_image_root_wall;\n var $postImageLink = $isOwner ? $data.to_lounge.link : $data.user.profile_url;\n var $postName = $isOwner ? $data.to_lounge.small_name : $data.user.first_name+' '+$data.user.last_name;\n $postName = $postName.length > 75 ? $postName.substr(0, 75) + '...' : $postName;\n var $profileImage = $iAmOwner ? $data.to_lounge.logo_root_lounge : $data.user.my_image_root_wall;\n var $profileImageLink = $iAmOwner ? $data.to_lounge.link : $data.user.profile_url;\n var $postContent = $data.post;\n $postContent = libs.replacePerBreaklines($postContent);\n $postContent = libs.convertUrlToLink($postContent);\n\n //item, options, post-content\n var $chtml = '';\n $chtml+= '' +\n '
    ' +\n '
    ' +\n '
    ' +\n ' \"profile' +\n '
    ' +\n '
    ' +\n '

    '+$postName+'

    ' +\n '

    '+$postLongDate+'

    ' +\n '
    ' +\n '
    ' +\n ' ' +\n ' \"option\"' +\n ' ' +\n '
    ' +\n '
    ' +\n '
    ' +\n '
    ' +\n '

    ' +\n $postContent +\n '

    ' +\n nlWallHtml.documents($data) +\n nlWallHtml.links($data) +\n nlWallHtml.likes($data) +\n nlWallHtml.reply($data) +\n '
    '+\n ' ' +\n '
    ' +\n '
    ' +\n '
    ';\n\n return $chtml;\n }\n };\n var nlWallEvents ={\n comments:function($options){\n $options.wall_container().find('.item').each(function(){\n var $that = $(this);\n var $id = $that.data('id');\n nlWall.post_send({\n first_wall_post:0,\n level:0,\n rows:5, //How many rows will load at the beginning (wall_get_step) 10\n post_step:2, //$wallShowPost step (wall_post_get_step)\n comment_step:2, //$wallShowComments step (wall_comment_get_step)\n subcomment_step:2, //$wallShowSubComments step (wall_sub_comment_get_step),\n wall_container:function(){\n return $(\"#nurseslounge-lounge-activity .nurseslounge-lounge-activity-left .wall-container\");\n },\n wall_container_btn:function(){\n return $(\"#nurseslounge-lounge-activity .nurseslounge-lounge-activity-left .btn-refresh-wall-up\");\n },\n wall_share_modal:function(){\n return $(\"#nurseslounge-lounge-activity-wall-share-modal\");\n },\n wall_textarea:function(){\n return $(\"#nurseslounge-lounge-activity .nurseslounge-lounge-activity-left\").find('.post-text[data-id=\"'+$id+'\"]');\n },\n wall_send_btn:function(){\n return $(\"#nurseslounge-lounge-activity .nurseslounge-lounge-activity-left\").find('.send-post[data-id=\"'+$id+'\"]');\n },\n wall_attach_preview:function(){\n return $(\"#nurseslounge-lounge-activity .nurseslounge-lounge-activity-left\").find('.preview[data-id=\"'+$id+'\"]');\n }\n }, function(){\n nlWallRecognizeUrl.init({\n wall_textarea: function(){\n return $(\"#nurseslounge-lounge-activity .nurseslounge-lounge-activity-left\").find('.post-text[data-id=\"'+$id+'\"]');\n },\n recognize_url_preload_target: function(){\n return $(\"#nurseslounge-lounge-activity .nurseslounge-lounge-activity-left\").find('.preview[data-id=\"'+$id+'\"]');\n },\n recognize_url_target: function(){\n return $(\"#nurseslounge-lounge-activity .nurseslounge-lounge-activity-left\").find('.preview[data-id=\"'+$id+'\"]');\n },\n on_key_press_callback: false\n }, function () {\n nlWallUpdate.init({\n wall_update_button:function(){\n return $(\"#nurseslounge-lounge-activity .nurseslounge-lounge-activity-left\").find('.upload[data-id=\"'+$id+'\"]');\n },\n wall_update_preload_target: function(){\n return $(\"#nurseslounge-lounge-activity .nurseslounge-lounge-activity-left\").find('.preview[data-id=\"'+$id+'\"]');\n },\n wall_update_target: function(){\n return $(\"#nurseslounge-lounge-activity .nurseslounge-lounge-activity-left\").find('.preview[data-id=\"'+$id+'\"]');\n },\n wall_update_text_area:function(){\n return $(\"#nurseslounge-lounge-activity .nurseslounge-lounge-activity-left\").find('.post-text[data-id=\"'+$id+'\"]');\n },\n on_close_modal_callback:false,\n on_end_callback:false,\n get_data_callback:false,\n wall_update_skip:[]\n }, function(){\n libs.checkImageLoad($('body').find('img'), function(){\n libs.refreshTooltips();\n });\n });\n });\n });\n });\n }\n };\n $.fn.nurseslounge_lounge_wall = function(\n $params,\n $nlWallOptions,\n $nlWallRecognizeUrlOptions,\n $nlWallUpdateOptions,\n $nlWallAlbumOptions,\n $nlWallDocumentPreviewOptions,\n $nlWallMenuOptions,\n $notRun\n ){\n if($notRun == undefined){\n $notRun == false;\n }\n\n nlWallHelper.set_with_params($params);\n //nlWall\n var $nlWallDefaults = {\n wall_url_get:\"/lounge/activity/wall/get\",\n wall_url_likes:\"/lounge/activity/wallLikes/set\",\n wall_url_share_get:\"/lounge/activity/wallOptionsMenuShare/get\",\n wall_url_share_set:\"/lounge/activity/wallOptionsMenuShare/set\",\n wall_url_set:\"/lounge/activity/wall/set\",\n wall_url_pin_catalog:\"/myDashboard/myProfile/permissions/droplists\",\n wall_url_pin_available:\"/lounge/activity/pinIt/available\",\n wall_url_preview:\"/lounge/activity/wall/preview\",\n wall_debug:false\n };\n if($nlWallOptions != undefined){\n $nlWallSettings = $.extend({}, $nlWallDefaults, $nlWallOptions);\n }else{\n $nlWallSettings = $.extend({}, $nlWallDefaults);\n }\n nlWall = {\n init:function($options){\n $options = $options == undefined ? {} : $options;\n $options = $.extend({}, {\n first_wall_post:0,\n level:0,\n rows:5, //How many rows will load at the beginning (wall_get_step) 10\n post_step:2, //$wallShowPost step (wall_post_get_step)\n comment_step:2, //$wallShowComments step (wall_comment_get_step)\n subcomment_step:2, //$wallShowSubComments step (wall_sub_comment_get_step),\n wall_container:function(){\n return $(\"#nurseslounge-lounge-activity .nurseslounge-lounge-activity-left .wall-container\");\n },\n wall_container_btn:function(){\n return $(\"#nurseslounge-lounge-activity .nurseslounge-lounge-activity-left .btn-refresh-wall-up\");\n },\n wall_share_modal:function(){\n return $(\"#nurseslounge-lounge-activity-wall-share-modal\");\n },\n wall_textarea:function(){\n return $(\"#nurseslounge-lounge-activity .nurseslounge-lounge-activity-left\").find('.post-text[data-id=\"0\"]');\n },\n wall_send_btn:function(){\n return $(\"#nurseslounge-lounge-activity .nurseslounge-lounge-activity-left\").find('.send-post[data-id=\"0\"]');\n },\n wall_cancel_pin:function(){\n return $(\"#nurseslounge-lounge-activity .nurseslounge-lounge-activity-left\").find('.cancel-pin[data-id=\"0\"]');\n },\n wall_attach_preview:function(){\n return $(\"#nurseslounge-lounge-activity .nurseslounge-lounge-activity-left\").find('.preview[data-id=\"0\"]');\n },\n wall_open_album:function(){\n return $(\"#nurseslounge-lounge-activity .nurseslounge-lounge-activity-right\").find('.album:first');\n },\n wall_pin_form:function(){\n return $(\"#nurseslounge-lounge-activity .nurseslounge-lounge-activity-left\").find('.pin-form[data-id=\"0\"]');\n },\n wall_pin_form_no_followers:function(){\n return $(\"#nurseslounge-lounge-activity .nurseslounge-lounge-activity-left\").find('.form-no-followers[data-id=\"0\"]');\n },\n wall_pin_form_followers:function(){\n return $(\"#nurseslounge-lounge-activity .nurseslounge-lounge-activity-left\").find('.form-followers[data-id=\"0\"]');\n },\n wall_pin_checkbox_followers:function(){\n return $(\"#nurseslounge-lounge-activity .nurseslounge-lounge-activity-left\").find('input[name=\"loungeFollowers\"]');\n },\n wall_message_announcement_btn:function(){\n return $(\"#nurseslounge-lounge-activity .nurseslounge-lounge-activity-left\").find('.message-announcement[data-id=\"0\"]');\n },\n wall_calendar_announcement_btn:function(){\n return $(\"#nurseslounge-lounge-activity .nurseslounge-lounge-activity-left\").find('.calendar-announcement[data-id=\"0\"]');\n },\n wall_preview_btn:function(){\n return $(\"#nurseslounge-lounge-activity .nurseslounge-lounge-activity-left\").find('.preview-post[data-id=\"0\"]');\n },\n wall_update_button:function(){\n return $(\"#nurseslounge-lounge-activity .nurseslounge-lounge-activity-left\").find('.upload[data-id=\"0\"]');\n },\n }, $options);\n var $rows = $options.rows;\n var $firstWallPost = $options.first_wall_post;\n var $level = $options.level;\n nlWall.get({\n first_wall_post:$firstWallPost,\n show:'down',\n limit:$rows,\n offset:0,\n level:$level\n },\n $options,\n function(){\n nlWallEvents.comments($options);\n });\n $options.wall_open_album().find('.option').each(function(){\n var $that = $(this);\n if($that.data('action') == 'open'){\n $that.unbind().click(function(){\n nlWallAlbum.open({\n on_close_modal:false,\n on_end_callback:false,\n on_start_callback:false,\n album_allow_tabs : {\n 'webcam_image':true,\n 'image':true,\n 'document':true,\n 'video':true,\n 'article':false //TODO::\n },\n album_step:11,\n album_allow_add:true,\n album_allow_select:false\n });\n });\n }\n });\n },\n get:function($params, $options, cback){\n var $wallUrlGet = $nlWallSettings.wall_url_get;\n var $wallDebug = $nlWallSettings.wall_debug;\n var $withParams = $.extend({}, nlWallHelper.get_with_params(), $params);\n $.ajax({\n url:$wallUrlGet,\n method: \"POST\",\n cache:false,\n dataType: \"json\",\n data: $withParams,\n success: function ($data, $status, $response) {\n libs.expire($data);\n if($wallDebug){console.log($withParams);console.log($wallUrlGet);console.log($data);}\n if($data.status == 'success'){\n nlWall.refresh($data.data.wall_post, 0, $options, function(){\n nlWall.clock($options, function(){\n nlWall.fade_in($options, function(){\n nlWall.load_more($data.data.total_filtered, $options,function() {\n if (cback != undefined) {\n cback();\n }\n });\n });\n });\n });\n }\n }\n });\n },\n refresh:function($wallPost, $postIndex, $options, cback){\n $wallPost = Object.values($wallPost);\n var $wallContainer = $options.wall_container();\n var $wallDebug = $nlWallSettings.wall_debug;\n var $existId = [];\n var $data = $wallPost[$postIndex];\n if($data != undefined) {\n var $id = $data.id;\n var $level = $data.level;\n var $comments = $data.comments;\n var $postType = nlWallHelper.get_post_type($level);\n $wallContainer.find('.item').each(function(){\n if($(this).data('id') != undefined){\n if($(this).data('type') == $postType){\n $existId.push($(this).data('id'));\n }\n }\n });\n if($wallDebug){\n console.log(\"Render \");\n console.log(\"id \"+$id);\n console.log(\"level \"+$level);\n }\n if ($.inArray($id, $existId) == -1) {\n if ($level == 0) {\n nlWall.post($existId, $wallPost, $postIndex, $options, cback);\n }else{\n nlWall.thread($existId, $wallPost, $postIndex, $options, cback);\n }\n }else{\n nlWall.refresh($comments, 0, $options, cback);\n }\n }else{\n if(cback != undefined){\n cback();\n }\n }\n },\n post:function($postId, $wallPost, $postIndex, $options, cback){\n var $data = $wallPost[$postIndex];\n var $comments = $data.comments;\n var $commentsCount = $data.comments_count;\n var $id = $data.id;\n var $wallContainer = $options.wall_container();\n var $postElement = [];\n var $wallDebug = $nlWallSettings.wall_debug;\n $wallContainer.find('.item').each(function(){\n if($(this).data('id') != undefined){\n if($(this).data('type') == 'post') {\n $postElement.push($(this));\n }\n }\n });\n if($postId.length == 0){\n if($wallDebug){console.log(\"level 0 html 0 \"+$commentsCount);}\n $options.wall_container().html(nlWallHtml.post($data)).promise().done(function(){\n nlWall.refresh($comments, 0, $options, function(){\n nlWall.refresh($wallPost, ($postIndex+1), $options, cback);\n });\n });\n }else\n if($postId.length == 1){\n if($id > $postId[0]){\n if($wallDebug){console.log(\"level 0 prepend 1 \"+$commentsCount);}\n $options.wall_container().prepend(nlWallHtml.post($data)).ready(function(){\n nlWall.refresh($comments, 0, $options, function() {\n nlWall.refresh($wallPost, ($postIndex + 1), $options, cback);\n });\n });\n }else{\n if($wallDebug){console.log(\"level 0 append 1 \"+$commentsCount);}\n $options.wall_container().append(nlWallHtml.post($data)).ready(function(){\n nlWall.refresh($comments, 0, $options, function() {\n nlWall.refresh($wallPost, ($postIndex + 1), $options, cback);\n });\n });\n }\n }else\n if($postId.length > 1){\n if($postId[$postId.length - 1] > $id){\n if($wallDebug){console.log(\"level 0 append >1 \"+$commentsCount);}\n $options.wall_container().append(nlWallHtml.post($data)).ready(function(){\n nlWall.refresh($comments, 0, $options, function() {\n nlWall.refresh($wallPost, ($postIndex + 1), $options, cback);\n });\n });\n }else\n if($postId[0] < $id){\n if($wallDebug){console.log(\"level 0 prepend >1 \"+$commentsCount);}\n $options.wall_container().prepend(nlWallHtml.post($data)).ready(function(){\n nlWall.refresh($comments, 0, $options, function() {\n nlWall.refresh($wallPost, ($postIndex + 1), $options, cback);\n });\n });\n }else{\n if($wallDebug){console.log(\"level 0 after >1 \"+$commentsCount);}\n $.each($postId, function($index){\n if($postId[$index+1] != undefined){\n if($postId[$index] > $id && $id > $postId[$index+1]){\n $postElement[$index].after(nlWallHtml.post($data)).ready(function(){\n nlWall.refresh($comments, 0, $options, function() {\n nlWall.refresh($wallPost, ($postIndex + 1), $options, cback);\n });\n return false;\n });\n }\n }\n });\n }\n }\n },\n thread:function($postId, $wallPost, $postIndex, $options, cback){\n var $data = $wallPost[$postIndex];\n var $id = $data.id;\n var $parentId = $data.parent_id;\n var $dataComments = $data.comments;\n var $level = $data.level;\n var $postLength = $wallPost.length;\n var $wallContainer = $options.wall_container();\n var $wallDebug = $nlWallSettings.wall_debug;\n var $post = $wallContainer.find('.item[data-id=\"'+$parentId+'\"]');\n var $href = $wallContainer.find('.open-thread[data-id=\"'+$parentId+'\"]');\n var $comments = $wallContainer.find('.comments[data-id=\"'+$parentId+'\"] ul:first');\n var $postType = nlWallHelper.get_post_type($level);\n var $items = $comments.find('> li.item');\n var $showing = parseInt(nlWallHelper.get_visibles_in($postType, $items));\n $comments.append(nlWallHtml.thread($data)).ready(function(){\n $wallContainer = $options.wall_container();\n $post = $wallContainer.find('.item[data-id=\"'+$parentId+'\"]');\n $href = $wallContainer.find('.open-thread[data-id=\"'+$parentId+'\"]');\n $comments = $wallContainer.find('.comments[data-id=\"'+$parentId+'\"] ul:first');\n $items = $comments.find('> li.item');\n $showing = parseInt(nlWallHelper.get_visibles_in($postType, $items));\n if($wallDebug){\n console.log(\"Subrender \");\n console.log(\"id \"+$id);\n console.log(\"level \"+$level);\n console.log('show '+$showing);\n console.log('length '+$postLength);\n }\n if($showing < $postLength){\n $href.show();\n }else{\n $href.hide();\n }\n nlWall.refresh($dataComments, 0, $options, function(){\n nlWall.refresh($wallPost, ($postIndex+1), $options, cback);\n });\n });\n },\n clock:function($options, cback){\n var $wallContainer = $options.wall_container();\n var $postIds = [];\n $wallContainer.find(\".item .post-date\").each(function(){\n var $that = $(this);\n $postIds.push($that.data('id'));\n });\n nlWallHelper.set_wall_dates($postIds);\n nlWallHelper.wall_date(function(){\n if(cback != undefined){\n cback();\n }\n });\n },\n fade_in:function($options, cback){\n var $wallContainer = $options.wall_container();\n $wallContainer.find(\".item\").each(function(){\n var $item = $(this);\n libs.checkImageLoad($item.find('img'), function(){\n $item.css('display','block');\n });\n });\n if(cback != undefined){\n cback();\n }\n },\n load_more:function($totalFiltered, $options, cback) {\n var $wallDebug = $nlWallSettings.wall_debug;\n var $postStep = $options.post_step;\n var $commentStep = $options.comment_step;\n var $subcommentStep = $options.subcomment_step;\n var $wallContainer = $options.wall_container();\n var $wallContainerBtn = $options.wall_container_btn();\n if ($wallDebug) {\n console.log(\"load more - loaded\");\n }\n var $items = $wallContainer.find('.item');\n var $firstWallPostId = $wallContainer.find('.item:first').data('id');\n var $lastItem = $wallContainer.find('div[data-level=\"0\"]:last');\n var $totalPost = parseInt(nlWallHelper.get_visibles_in('post', $items));\n var $wallLoadMore = $options.wall_container().find('.btn-load-more-container');\n //Load More Down\n $wallLoadMore.remove();\n if ($totalFiltered > $totalPost) {\n $lastItem.after(nlWallHtml.load_more()).ready(function () {\n $wallLoadMore = $options.wall_container().find('.btn-load-more-container');\n $wallLoadMore.unbind().click(function () {\n nlWall.get({\n first_wall_post: $firstWallPostId,\n show: 'down',\n limit: $postStep,\n offset: $totalPost,\n level: 0\n }, $options);\n });\n });\n }\n //Load More Up\n $wallContainerBtn.unbind().click(function () {\n var $that = $(this);\n $that.fadeOut(\"slow\", function () {\n nlWall.get({\n first_wall_post: $firstWallPostId,\n show: 'up',\n limit: 0,\n offset: 0,\n level: 0\n }, $options, function () {\n if(!$notRun) {\n nlWall.init();\n }\n });\n });\n });\n $wallContainerBtn.fadeIn();\n //Load More Comments\n $wallContainer.find(\".open-thread\").unbind().click(function () {\n $(window).off('scroll');\n var $id = $(this).data('id');\n var $level = $(this).data('level');\n $level = ($level + 1);\n var $comments = $wallContainer.find('.comments[data-id=\"' + $id + '\"] ul:first > li.item');\n var $postType = nlWallHelper.get_post_type($level);\n var $totalComments = parseInt(nlWallHelper.get_visibles_in($postType, $comments));\n var $limit = 0;\n if ($postType == 'comment') {\n $limit = $commentStep;\n }\n if ($postType == 'sub-comment') {\n $limit = $subcommentStep;\n }\n nlWall.get({\n first_wall_post: $id,\n show: 'down',\n limit: $limit,\n offset: $totalComments,\n level: $level\n }, $options, function () {\n nlWallEvents.comments($options);\n });\n });\n $wallContainer.find('.open-thread').each(function ($i, $v) {\n var $that = $(this);\n var $id = $that.data('id');\n var $level = $(this).data('level');\n $level = ($level + 1);\n var $count = $wallContainer.find('.comments-count[data-id=\"' + $id + '\"]').data('count');\n var $comments = $wallContainer.find('.comments[data-id=\"' + $id + '\"] ul:first > li.item');\n var $postType = nlWallHelper.get_post_type($level);\n var $totalComments = parseInt(nlWallHelper.get_visibles_in($postType, $comments));\n if ($count > $totalComments) {\n $that.show();\n } else {\n $that.hide();\n }\n });\n //Reply Post\n $wallContainer.find(\".reply-post\").unbind().click(function () {\n $wallContainer.find('ul > li .reply').hide();\n var $that = $(this);\n var $id = $that.data('id');\n var $reply = $wallContainer.find('.reply[data-id=\"' + $id + '\"]');\n $reply.show();\n $reply.find('.reply-post textarea').focus();\n });\n //Comments Focus\n $wallContainer.find(\".comments-focus\").unbind().click(function () {\n $wallContainer.find('.comments').css('border', '0px');\n var $that = $(this);\n var $id = $that.data('id');\n var $focus = $options.wall_container().find('.comments[data-id=\"' + $id + '\"]');\n var $openThread = $options.wall_container().find('.open-thread[data-id=\"' + $id + '\"]');\n var $haveComments = $focus.find('.item').length > 0;\n if($haveComments || $openThread.is(':visible')){\n $focus.css('border', 'solid 5px #00000038');\n var $offsetTop = $wallContainer.find('.item[data-id=\"' + $id + '\"]').offset().top;\n $(window).animate({ scrollTop: $offsetTop });\n if($openThread.is(':visible')){\n $openThread.click();\n }\n setTimeout(function () {\n $wallContainer.find('.comments').css('border', '0px');\n }, 6000);\n }\n });\n //Wall Options\n $wallContainer.find(\".options\").unbind().click(function () {\n var $that = $(this);\n var $id = $that.data('id');\n var $level = $that.data('level');\n nlWallMenu.init($id, $level);\n });\n //Wall Likes\n $wallContainer.find('.add-like').unbind().click(function () {\n var $id = $(this).data('id');\n nlWall.likes($id, function ($data) {\n var $ele = $wallContainer.find('.add-like[data-id=\"' + $id + '\"] i');\n var $countEle = $wallContainer.find('.likes-count[data-id=\"' + $id + '\"]');\n if ($data.data.action == 'added') {\n $ele.removeClass('fa-heart-o').addClass('fa-heart');\n $countEle.html($data.data.likes_count);\n }\n if ($data.data.action == 'deleted') {\n $ele.effect('shake', {\n direction: 'left',\n distance: '3',\n times: '4'\n }, 400, function () {\n $ele.removeClass('fa-heart').addClass('fa-heart-o');\n $countEle.html($data.data.likes_count);\n });\n }\n });\n });\n //Wall Preview\n var $players = [];\n $wallContainer.find('.attach').each(function () {\n var $that = $(this);\n var $id = $that.data('id');\n var $type = $that.data('type');\n var $url = $that.data('url');\n var $fileType = $that.data('filetype');\n var $document = libs.memoryGet($fileType + $id);\n var $documentId = $document.id;\n if ($type == 'website-document' && $fileType) {\n libs.memorySave($fileType + $id, $.extend(libs.memoryGet($fileType + $id), {that: $that}));\n if ($fileType == 'video') {\n $players.push($id);\n }else{\n $that.unbind().click(function () {\n nlWallDocumentPreview.init($documentId);\n });\n }\n }\n if ($type == 'website-thumb' && $fileType == 'link') {\n $that.unbind().click(function () {\n window.open($url, '_blank', '');\n });\n }\n });\n //Wall Scroll Load More & Video Player\n var $scrollBinding;\n var $scrollLoadWallBinding;\n $(window).off('scroll').scroll(function () {\n //Load More\n var $loadMoreAfterPercent = 30;\n var $maxScrollTop = $(document).height() - $(window).height();\n var $actualScroll = $(window).scrollTop();\n var $triggerPercent = ($actualScroll * 100) / $maxScrollTop > $loadMoreAfterPercent;\n if ($triggerPercent && $options.wall_container().find('.btn-load-more-container').is(':visible')) {\n try {\n clearTimeout($scrollLoadWallBinding);\n } catch (e) {\n }\n $scrollLoadWallBinding = setTimeout(function () {\n $options.wall_container().find('.btn-load-more-container').click();\n }, 200);\n }\n //Video Player\n var $wH = $(window).height();\n var $margin = ($wH / 3);\n try {\n clearTimeout($scrollBinding);\n } catch (e) {\n }\n $scrollBinding = setTimeout(function () {\n //Video\n $.each($players, function ($i, $v) {\n var $that = $options.wall_container().find('.attach[data-id=\"' + $v + '\"]');\n if ($that.length > 0) {\n var $originalHtml = $that[0].outerHTML;\n var $player = libs.memoryGet('player' + $v) ? libs.memoryGet('player' + $v) : false;\n var $y = $that.offset().top - $(window).scrollTop();\n var $video = libs.memoryGet('video' + $v);\n if (($y + $margin) < ($wH + $margin) && ($y + $margin) > (-1 * $margin) && $that.height() > 0 && $that.width() > 0) {\n if(!$player) {\n $that.height(300);\n try {\n $player = new Artplayer({\n destroy: true,\n container: $that[0],\n title: $video.name,\n url: $video.document_preview_root + '?temporal=true',\n poster: $video.document_thumb_root,\n type: 'mp4',\n mutex: true,\n muted: true,\n play: false,\n pause: true,\n toggle: false,\n controls: [\n {\n position: 'right',\n html: 'Fullscreen',\n click: function () {\n nlWallDocumentPreview.init($video.id);\n },\n },\n ],\n miniProgressBar: true,\n loop: true,\n fullscreen: false,\n fullscreenToggle: false,\n fullscreenWeb: false,\n fullscreenWebToggle: false,\n fullscreenRotate: false,\n fullscreenRotateToggle: false,\n moreVideoAttr: {\n crossOrigin: 'anonymous',\n playsInline: true,\n 'webkit-playsinline': true,\n 'x5-video-player-type': 'h5',\n 'x5-video-player-fullscreen': false,\n 'x5-video-orientation': 'portraint',\n },\n whitelist: ['*']\n }).on('destroy', function () {\n $that.replaceWith($originalHtml);\n libs.refreshTooltips();\n }).on('ready', function () {\n if(($y + $margin) < $wH && ($y + $margin) > 0){\n $player.player.play = true;\n }else{\n $player.player.pause = true;\n }\n libs.refreshTooltips();\n });\n $player.mask.show = false;\n libs.memorySave('player' + $v, $player);\n } catch ($e) {\n\n }\n }\n if(($y + $margin) < $wH && ($y + $margin) > 0){\n $player.player.play = true;\n }else{\n $player.player.pause = true;\n }\n } else {\n if ($player) {\n try{\n $player.player.pause = true;\n }catch($e){\n libs.memorySave('player' + $v, false);\n }\n }\n }\n }\n });\n }, 600);\n });\n //Wall Share\n $wallContainer.find(\".share-with\").unbind().click(function () {\n var $id = $(this).data('id');\n var $chtml = '';\n var $wallShareModal = $options.wall_share_modal();\n var $modalInfo = $wallShareModal.find('.modal-info:first');\n nlWall.share_get($id, function ($data) {\n var $wallPost = $data.data.wall_post;\n if ($.inArray('facebook', $data.data.options) != -1) {\n $chtml += '
  • ';\n }\n if ($.inArray('twitter', $data.data.options) != -1) {\n $chtml += '
  • ';\n }\n if ($.inArray('pinterest', $data.data.options) != -1) {\n $chtml += '
  • ';\n }\n if ($.inArray('linkedin', $data.data.options) != -1) {\n $chtml += '
  • ';\n }\n $wallShareModal.find('.share-options:first').html($chtml).promise().done(function () {\n var $shareLink = encodeURIComponent($wallPost.share_link);\n var $url = encodeURIComponent(window.location.href);\n var $post = encodeURIComponent($wallPost.post);\n var $image = '';\n if (libs.isEmptyReturnNull($wallPost.documents) &&\n libs.isEmptyReturnNull($wallPost.documents[0]) &&\n libs.isEmptyReturnNull($wallPost.documents[0].document) &&\n libs.isEmptyReturnNull($wallPost.documents[0].document.document_thumb_root)) {\n $image = encodeURIComponent($wallPost.documents[0].document.document_thumb_root);\n }\n var $features = '';\n $(this).find('.nav-link').unbind().click(function () {\n var $action = $(this).data('action');\n nlWall.share_set($id, $options, function () {\n switch ($action) {\n case 'facebook':\n window.open('https://www.facebook.com/sharer/sharer.php?u=' + $shareLink, '_blank', $features);\n break;\n case 'twitter':\n window.open('https://twitter.com/intent/tweet?url=' + $shareLink + '&text=' + $post, '_blank', $features);\n break;\n case 'pinterest':\n window.open('http://www.pinterest.com/pin/create/button?url=' + $url + '&media=' + $image + '&description=' + $post, '_blank', $features);\n break;\n case 'linkedin':\n window.open('https://www.linkedin.com/shareArticle?mini=true&url=' + $shareLink, '_blank', $features);\n break;\n }\n });\n });\n });\n var $chtmlInfo = nlWallHtml.wall_menu_popup($wallPost, [], 'readonly');\n $modalInfo.html(nlWallHtml.wall_menu_preload()).promise().done(function () {\n libs.checkImageLoad($($chtmlInfo).find('img'), function () {\n $modalInfo.html($chtmlInfo).promise().done(function(){\n libs.refreshTooltips();\n });\n });\n });\n $wallShareModal.modal('show');\n });\n });\n //Wall Links\n $wallContainer.find('[data-link]').unbind().click(function() {\n var $that = $(this);\n var $link = $that.data('link');\n router.navigate($link,true);\n });\n //Wall Post\n nlWall.post_send($options, function () {\n nlWallRecognizeUrl.init({}, function () {\n nlWallUpdate.init({}, function () {\n cback();\n });\n });\n });\n //Pin Form\n var $wallTxt = $options.wall_textarea();\n var $wallPinForm = null;\n try{\n $wallPinForm = $options.wall_pin_form();\n }catch ($e){\n\n }\n if($wallPinForm) {\n var $wallUpdateButton = $options.wall_update_button();\n var $wallCheckboxFollowers = $options.wall_pin_checkbox_followers();\n var $wallPinFormNoFollowers = $options.wall_pin_form_no_followers();\n var $wallPinFormFollowers = $options.wall_pin_form_followers();\n var $messageBtn = $options.wall_message_announcement_btn();\n var $calendarBtn = $options.wall_calendar_announcement_btn();\n var $wallSendBtn = $options.wall_send_btn();\n var $wallAttachPreview = $options.wall_attach_preview();\n var $wallCancelPin = $options.wall_cancel_pin();\n var $degree = $wallPinForm.find('select[name=\"degree\"]');\n var $states = $wallPinForm.find('select[name=\"states\"]');\n var $specialties = $wallPinForm.find('select[name=\"specialties\"]');\n var $yearsOfExperience = $wallPinForm.find('select[name=\"yearsOfExperience\"]');\n var $selectAll = $wallPinForm.find('.select-all');\n var $unselectAll = $wallPinForm.find('.unselect-all');\n var $placeHolderOriginal = $wallTxt.attr('placeholder');\n var $schoolProfile = $wallPinForm.find('select[name=\"schoolProfile\"]');\n var $pinIsAvailable;\n var $nextPinAvailable;\n nlWall.pin_available_request(function ($data) {\n $pinIsAvailable = $data.data.pin_is_available;\n $nextPinAvailable = $data.data.next_pin_available;\n nlWall.pin_form_request(function ($data) {\n nlWall.pin_form_validate($options, function ($form) {\n nlWallHelper.set_wall_pin_params(libs.getObjForm($form));\n });\n $degree.html($data.data.allDegreeTypes).promise().done(function () {\n try {\n $degree.chosen(\"destroy\");\n } catch ($e) {\n }\n $degree.chosen();\n });\n $states.html($data.data.allStates).promise().done(function () {\n try {\n $states.chosen(\"destroy\");\n } catch ($e) {\n }\n $states.chosen();\n });\n $selectAll.unbind().click(function(){\n $states.find('option').prop('selected', true);\n $states.trigger('chosen:updated');\n });\n $unselectAll.unbind().click(function(){\n $states.find('option').prop('selected', false);\n $states.trigger('chosen:updated');\n });\n var $nurseSpecialty = '';\n $nurseSpecialty = $nurseSpecialty + $data.data.allSpecialty;\n $specialties.html($nurseSpecialty).promise().done(function () {\n try {\n $specialties.chosen(\"destroy\");\n } catch ($e) {\n }\n $specialties.chosen();\n });\n $schoolProfile.html($data.data.profileFilteredBySchool).promise().done(function(){\n try {\n $schoolProfile.chosen(\"destroy\");\n } catch ($e) {\n }\n $schoolProfile.chosen();\n });\n $yearsOfExperience.html($data.data.nurseYearsOfExperience).promise().done(function () {\n try {\n $yearsOfExperience.chosen(\"destroy\");\n } catch ($e) {\n }\n $yearsOfExperience.chosen();\n\n $wallCheckboxFollowers.unbind().click(function(){\n if($wallCheckboxFollowers.is(':checked')){\n try {\n $degree.chosen(\"destroy\");\n } catch ($e) {\n }\n try {\n $states.chosen(\"destroy\");\n } catch ($e) {\n }\n try {\n $specialties.chosen(\"destroy\");\n } catch ($e) {\n }\n $wallPinForm.find('form:first .invalid-feedback').hide();\n nlWallHelper.set_wall_pin_params({});\n //$wallPinForm.find('form:first')[0].reset();\n $degree.chosen();\n $states.chosen();\n $specialties.chosen();\n $wallUpdateButton.html('Upload Attachment');\n $wallSendBtn.html('Post');\n $wallSendBtn.prop('disabled', false);\n $wallTxt.attr('placeholder', $placeHolderOriginal);\n $wallPinFormNoFollowers.hide();\n $wallPinFormFollowers.fadeIn();\n }else{\n switch ($wallTxt.data('announcement')){\n case 'calendar':\n $wallUpdateButton.html('Upload an image or flyer for your event');\n $wallTxt.attr('placeholder', 'Give event details such as dates, location and brief description');\n break;\n case 'message':\n $wallUpdateButton.html('Upload Attachment');\n $wallTxt.attr('placeholder', 'Pin an announcement to nurse bulletin boards');\n break;\n default:\n $wallUpdateButton.html('Upload Attachment');\n $wallTxt.attr('placeholder', $placeHolderOriginal);\n break;\n }\n try {\n $schoolProfile.chosen(\"destroy\");\n } catch ($e) {\n }\n $schoolProfile.chosen();\n $wallTxt.attr('placeholder', 'Pin an announcement to nurse bulletin boards');\n $wallPinFormFollowers.hide();\n $wallPinFormNoFollowers.fadeIn();\n if ($pinIsAvailable) {\n $wallSendBtn.html('Pin IT!');\n $wallSendBtn.prop('disabled', false);\n } else {\n $wallSendBtn.html('Next pin available on ' + $nextPinAvailable);\n $wallSendBtn.prop('disabled', true);\n }\n }\n });\n if($wallCheckboxFollowers.is(':checked')){\n try {\n $degree.chosen(\"destroy\");\n } catch ($e) {\n }\n try {\n $states.chosen(\"destroy\");\n } catch ($e) {\n }\n try {\n $specialties.chosen(\"destroy\");\n } catch ($e) {\n }\n $wallPinForm.find('form:first .invalid-feedback').hide();\n nlWallHelper.set_wall_pin_params({});\n //$wallPinForm.find('form:first')[0].reset();\n $degree.chosen();\n $states.chosen();\n $specialties.chosen();\n $wallSendBtn.html('Post');\n $wallTxt.attr('placeholder', $placeHolderOriginal);\n $wallPinFormNoFollowers.hide();\n $wallPinFormFollowers.fadeIn();\n }else{\n try {\n $schoolProfile.chosen(\"destroy\");\n } catch ($e) {\n }\n $schoolProfile.chosen();\n $wallSendBtn.html('Pin IT!');\n $wallPinFormFollowers.hide();\n $wallPinFormNoFollowers.fadeIn();\n }\n $messageBtn.unbind().click(function () {\n if ($wallTxt.data('announcement') == 'message') {\n $messageBtn.attr('src', '/bimg/NursesLounge/megaphone-button.png');\n $calendarBtn.attr('src', '/bimg/NursesLounge/calendar-button-clicked.png');\n $wallTxt.data('announcement', 'calendar');\n if(!$wallCheckboxFollowers.is(':checked')){\n $wallUpdateButton.html('Upload an image or flyer for your event');\n $wallTxt.attr('placeholder', 'Give event details such as dates, location and brief description');\n }else{\n $wallUpdateButton.html('Upload Attachment');\n $wallTxt.attr('placeholder', $placeHolderOriginal);\n }\n } else {\n $messageBtn.attr('src', '/bimg/NursesLounge/megaphone-button-clicked.png');\n $calendarBtn.attr('src', '/bimg/NursesLounge/calendar-button.png');\n $wallTxt.data('announcement', 'message');\n if(!$wallCheckboxFollowers.is(':checked')){\n $wallUpdateButton.html('Upload Attachment');\n $wallTxt.attr('placeholder', 'Pin an announcement to nurse bulletin boards');\n }else{\n $wallUpdateButton.html('Upload Attachment');\n $wallTxt.attr('placeholder', $placeHolderOriginal);\n }\n }\n if ($pinIsAvailable) {\n if($wallCheckboxFollowers.is(':checked')) {\n $wallSendBtn.html('Post');\n }else{\n $wallSendBtn.html('Pin IT!');\n }\n $wallSendBtn.prop('disabled', false);\n } else {\n if($wallCheckboxFollowers.is(':checked')) {\n $wallSendBtn.html('Post');\n $wallSendBtn.prop('disabled', false);\n }else{\n $wallSendBtn.html('Next pin available on ' + $nextPinAvailable);\n $wallSendBtn.prop('disabled', true);\n }\n }\n });\n $calendarBtn.unbind().click(function () {\n if ($wallTxt.data('announcement') == 'calendar') {\n $messageBtn.attr('src', '/bimg/NursesLounge/megaphone-button-clicked.png');\n $calendarBtn.attr('src', '/bimg/NursesLounge/calendar-button.png');\n $wallTxt.data('announcement', 'message');\n if(!$wallCheckboxFollowers.is(':checked')){\n $wallUpdateButton.html('Upload Attachment');\n $wallTxt.attr('placeholder', 'Pin an announcement to nurse bulletin boards');\n }else{\n $wallUpdateButton.html('Upload Attachment');\n $wallTxt.attr('placeholder', $placeHolderOriginal);\n }\n } else {\n $messageBtn.attr('src', '/bimg/NursesLounge/megaphone-button.png');\n $calendarBtn.attr('src', '/bimg/NursesLounge/calendar-button-clicked.png');\n $wallTxt.data('announcement', 'calendar');\n if(!$wallCheckboxFollowers.is(':checked')){\n $wallUpdateButton.html('Upload an image or flyer for your event');\n $wallTxt.attr('placeholder', 'Give event details such as dates, location and brief description');\n }else{\n $wallUpdateButton.html('Upload Attachment');\n $wallTxt.attr('placeholder', $placeHolderOriginal);\n }\n }\n if ($pinIsAvailable) {\n if($wallCheckboxFollowers.is(':checked')) {\n $wallSendBtn.html('Post');\n }else{\n $wallSendBtn.html('Pin IT!');\n }\n $wallSendBtn.prop('disabled', false);\n } else {\n if($wallCheckboxFollowers.is(':checked')) {\n $wallSendBtn.html('Post');\n $wallSendBtn.prop('disabled', false);\n }else{\n $wallSendBtn.html('Next pin available on ' + $nextPinAvailable);\n $wallSendBtn.prop('disabled', true);\n }\n }\n });\n $wallCancelPin.unbind().click(function(){\n $wallTxt.val('');\n $wallAttachPreview.html('');\n $degree.find('option').prop('selected', false);\n $degree.trigger('chosen:updated');\n $states.find('option').prop('selected', false);\n $states.trigger('chosen:updated');\n $specialties.find('option').prop('selected', false);\n $specialties.trigger('chosen:updated');\n $yearsOfExperience.find('option').prop('selected', false);\n $yearsOfExperience.trigger('chosen:updated');\n $schoolProfile.find('option').prop('selected', false);\n $schoolProfile.trigger('chosen:updated');\n });\n $messageBtn.click();\n });\n });\n if (nlWallHelper.get_with_params().post) {\n $wallTxt.html(nlWallHelper.get_with_params().post);\n }\n //Preview\n var $wallPreviewBtn = $options.wall_preview_btn();\n var $modal = $(\"#nurseslounge-lounge-activity-preview-modal\");\n var $modalInfo = $modal.find('.modal-body .modal-info');\n $wallPreviewBtn.unbind().click(function () {\n var $postText = $options.wall_textarea().val();\n if ($postText != '') {\n var $links = [];\n var $documents = [];\n nlWall.preview_request(function ($data) {\n $options.wall_attach_preview().find('.attach').each(function () {\n var $that = $(this);\n if ($that.data('type') == 'website-thumb') {\n var $patternUrl = $that.data('url');\n if ($that.hasClass('landscape') || $that.hasClass('portrait')) {\n $links.push(\n {\n \"id\": 1,\n \"user_id\": 1,\n \"lounge_wall_id\": 1,\n \"links_id\": 1,\n \"date\": moment().subtract(5, 'minutes').format('YYYY-DD-MM HH::mm::ss'),\n \"link\": {\n \"id\": 1,\n \"image\": $that.find('.left img:first').attr('src'),\n \"url\": $that.find('.right .text-justify').html(),\n \"title\": $that.find('.right .soft').html(),\n \"content\": null,\n \"position\": \"landscape\",\n \"patternUrl\": $patternUrl,\n \"date\": moment().subtract(5, 'minutes').format('YYYY-DD-MM HH::mm::ss')\n }\n }\n );\n }\n }\n if ($that.data('type') == 'website-document') {\n $documents.push(\n {\n \"id\": 1,\n \"lounge_wall_id\": 1,\n \"lounge_document_id\": 1,\n \"date\": moment().subtract(5, 'minutes').format('YYYY-DD-MM HH::mm::ss'),\n \"document\": {\n \"id\": 1,\n \"name\": 'Preview',\n \"type\": 'Preview',\n \"file_type\": \"document\",\n \"document_thumb_root\": $that.find('img:first').attr('src'),\n \"document_preview_root\": null\n }\n }\n );\n }\n });\n var $post = {\n \"id\": null,\n \"parent_id\": null,\n \"is_owner\": 1,\n \"user_id\": null,\n \"to_user_id\": null,\n \"post\": $postText,\n \"date\": moment().subtract(5, 'minutes').format('YYYY-DD-MM HH::mm::ss'),\n \"likes_count\": 0,\n \"comments_count\": 0,\n \"key\": $data.data.to_lounge.key,\n \"level\": 0,\n \"container\": null,\n \"my_like\": 0,\n \"i_am_owner\": 1,\n \"user\": {},\n \"lounge\": {\n \"name\": $data.data.to_lounge.name,\n \"link\": $data.data.to_lounge.link,\n \"key\": $data.data.to_lounge.key,\n \"small_name\": $data.data.to_lounge.small_name,\n \"logo_root_lounge\": $data.data.to_lounge.logo_root_lounge\n },\n \"to_lounge\": {\n \"name\": $data.data.to_lounge.name,\n \"link\": $data.data.to_lounge.link,\n \"key\": $data.data.to_lounge.key,\n \"small_name\": $data.data.to_lounge.small_name,\n \"logo_root_lounge\": $data.data.to_lounge.logo_root_lounge\n },\n \"links\": $links,\n \"documents\": $documents\n };\n $modalInfo.html(nlWallHtml.preview($post)).promise().done(function () {\n $modal.modal('show');\n });\n });\n } else {\n alert(\"Please write something\");\n }\n });\n });\n }\n },\n pin_available_request:function(cback){\n var $wallUrlPinAvailable = $nlWallDefaults.wall_url_pin_available;\n var $wallDebug = $nlWallSettings.wall_debug;\n var $withParams = $.extend({}, nlWallHelper.get_with_params());\n $.ajax({\n url: $wallUrlPinAvailable,\n method: \"POST\",\n cache:false,\n data:$withParams,\n dataType: \"json\",\n success: function ($data) {\n if($data.status == 'success'){\n if($wallDebug){console.log($wallUrlPinAvailable);console.log($withParams);}\n cback($data);\n }\n }\n });\n },\n pin_form_request:function(cback){\n var $wallUrlPinCatalog = $nlWallDefaults.wall_url_pin_catalog;\n var $wallDebug = $nlWallSettings.wall_debug;\n $.ajax({\n url: $wallUrlPinCatalog,\n method: \"POST\",\n cache:false,\n dataType: \"json\",\n success: function ($data) {\n if($data.status == 'success'){\n if($wallDebug){console.log($wallUrlPinCatalog);console.log($data);}\n cback($data);\n }\n }\n });\n },\n pin_form_validate:function($options, cback){\n var $validator;\n try {\n $validator = $options.wall_pin_form().find('form:first').validate();\n $validator.destroy();\n }catch (e) {\n\n }\n $validator = $options.wall_pin_form().find('form:first').validate({\n onsubmit: true,\n debug: false,\n ignore: \"*:not(.validate)\",\n rules: {\n degree: {\n required: !$options.wall_pin_checkbox_followers().is(':checked')\n },\n states: {\n required: !$options.wall_pin_checkbox_followers().is(':checked')\n },\n specialties: {\n required: !$options.wall_pin_checkbox_followers().is(':checked')\n },\n yearsOfExperience: {\n required: false\n },\n schoolProfile: {\n required: false\n },\n },\n messages: {\n degree: {\n required: \"Choose at least 1 designation levels\"\n },\n states: {\n required: \"Choose at least 1 state\"\n },\n specialties: {\n required: \"Choose from 1 to 20 specialties\"\n },\n yearsOfExperience: {\n required: \"The years of experience is not required\"\n },\n schoolProfile: {\n required: \"The school profile is not required\"\n },\n },\n errorPlacement: function($error, $element){\n var $ele = $($element);\n var $name = $ele.attr(\"name\");\n if(!$ele.hasClass('is-invalid')){\n $ele.addClass('is-invalid');\n }\n $(\".\"+$name+\"_validate\").html($($error).text()).show();\n },\n success: function($error, $element) {\n var $ele = $($element);\n var $name = $ele.attr(\"name\");\n if($ele.hasClass('is-invalid')){\n $ele.removeClass('is-invalid');\n }\n $(\".\"+$name+\"_validate\").html('').hide();\n },\n submitHandler: function($form) {\n var $degree = $options.wall_pin_form().find('select[name=\"degree\"]');\n if($degree.val() == null){\n $validator.showErrors({ degree: \"Choose at least 1 designation levels\" });\n return false;\n }\n var $states = $options.wall_pin_form().find('select[name=\"states\"]');\n if($states.val() == null){\n $validator.showErrors({ states: \"Choose at least 1 state\"});\n return false;\n }\n var $specialties = $options.wall_pin_form().find('select[name=\"specialties\"]');\n if($specialties.val() == null || $specialties.val().length > 20){\n $validator.showErrors({ specialties: \"Choose from 1 to 20 specialties\" });\n return false;\n }\n cback($form);\n return false;\n }\n });\n },\n preview_request:function(cback){\n var $wallUrlPreview = $nlWallDefaults.wall_url_preview;\n var $wallDebug = $nlWallSettings.wall_debug;\n var $withParams = $.extend({}, nlWallHelper.get_with_params());\n $.ajax({\n url: $wallUrlPreview,\n method: \"POST\",\n cache:false,\n data:$withParams,\n dataType: \"json\",\n success: function ($data) {\n if($data.status == 'success'){\n if($wallDebug){console.log($wallUrlPreview);console.log($data);}\n cback($data);\n }\n }\n });\n },\n likes:function($id, cback){\n var $wallUrlLikes = $nlWallSettings.wall_url_likes;\n var $wallDebug = $nlWallSettings.wall_debug;\n var $withParams = $.extend({}, nlWallHelper.get_with_params(), {wall_id:$id});\n $.ajax({\n url:$wallUrlLikes,\n method: \"POST\",\n cache:false,\n dataType: \"json\",\n data:$withParams,\n success: function ($data) {\n libs.expire($data);\n if($data.status == 'success'){\n if($wallDebug){console.log($withParams);console.log($wallUrlLikes);console.log($data);}\n cback($data);\n }\n }\n });\n },\n share_get:function($id, cback){\n var $wallUrlShareGet = $nlWallSettings.wall_url_share_get;\n var $wallDebug = $nlWallSettings.wall_debug;\n var $withParams = $.extend({}, nlWallHelper.get_with_params(), {id:$id});\n $.ajax({\n url: $wallUrlShareGet,\n method: \"POST\",\n cache:false,\n dataType: \"json\",\n data:$withParams,\n success: function ($data) {\n libs.expire($data);\n if($data.status == 'success'){\n if($wallDebug){console.log($withParams);console.log($wallUrlShareGet);console.log($data);}\n cback($data);\n }\n }\n });\n },\n share_set:function($id, $options, cback){\n var $wallUrlShareSet = $nlWallSettings.wall_url_share_set;\n var $wallDebug = $nlWallSettings.wall_debug;\n var $withParams = $.extend({}, nlWallHelper.get_with_params(), {id:$id});\n $.ajax({\n url:$wallUrlShareSet,\n method: \"POST\",\n cache:false,\n dataType: \"json\",\n data:$withParams,\n success: function ($data) {\n libs.expire($data);\n if($wallDebug){console.log($withParams);console.log($wallUrlShareSet);console.log($data);}\n if($data.status == 'success'){\n cback($data);\n }\n if($data.status == 'error'){\n $options.wall_share_modal().modal('hide');\n }\n }\n });\n },\n post_send:function($options, cback){\n var $wallSendBtn = $options.wall_send_btn();\n libs.memorySave('prevent_load_post_binding', 0);\n var $wallPinForm = null;\n var $wallCheckboxFollowers = null;\n try{\n $wallPinForm = $options.wall_pin_form();\n $wallCheckboxFollowers = $options.wall_pin_checkbox_followers();\n }catch ($e) {\n\n }\n $wallSendBtn.unbind().click(function(){\n var $that = $(this);\n var $id = $that.data('id');\n var $toUserId = $that.data('touserid');\n var $level = $that.data('level');\n var $post = $options.wall_textarea().val();\n var $urls = [];\n var $documents = [];\n var $announcement = !$wallCheckboxFollowers.is(':checked') ? $options.wall_textarea().data('announcement') : '';\n $options.wall_attach_preview().find('.attach').each(function () {\n var $that = $(this);\n if ($that.data('type') == 'website-thumb') {\n $urls.push($that.data('url'));\n }\n if ($that.data('type') == 'website-document') {\n $documents.push($that.data('id'));\n }\n });\n nlWall.pin_form_validate($options, function ($form) {\n nlWallHelper.set_wall_pin_params(libs.getObjForm($form));\n });\n var $errors = 0;\n var $form = $wallPinForm.find('form:first');\n $form.submit();\n var $validator = $form.validate();\n $errors = $validator.errorList.length;\n if($errors == 0) {\n if ($post != '') {\n nlWall.set($toUserId, $post, $id, $urls, $documents, $announcement, function ($data) {\n $options.wall_textarea().val('');\n $options.wall_attach_preview().html('');\n var $wallContainer = $options.wall_container();\n $level = ($level + 1);\n var $postType = nlWallHelper.get_post_type($level);\n var $totalComments = 0;\n var $parentId = $data.data.parent_id;\n var $commentsTotal = $data.data.total;\n var $commentsCountEle = $wallContainer.find('.comments-count[data-id=\"' + $id + '\"]');\n $commentsCountEle.html($commentsTotal);\n $commentsCountEle.attr('data-count', $commentsTotal);\n var $comments = $wallContainer.find('.comments[data-id=\"' + $id + '\"] ul:first > li.item');\n $totalComments = parseInt(nlWallHelper.get_visibles_in($postType, $comments));\n nlWall.get({\n first_wall_post: $parentId == 0 ? 0 : $id,\n show: $parentId == 0 ? 'up' : 'down',\n limit: 0,\n offset: $parentId == 0 ? 0 : $totalComments,\n level: $parentId == 0 ? 0 : $level\n }, $options, function () {\n nlWallEvents.comments($options);\n });\n });\n } else {\n alert(\"Please write something\");\n }\n }\n });\n if(cback != undefined){\n cback();\n }\n },\n set:function($toUserId, $post, $parentId, $urls, $documents, $announcement, cback){\n var $wallUrlSet = $nlWallSettings.wall_url_set;\n var $wallDebug = $nlWallSettings.wall_debug;\n var $withParams = $.extend({},\n nlWallHelper.get_with_params(),\n nlWallHelper.get_wall_pin_params(),\n {\n to_user_id:$toUserId,\n post:$post,\n parent_id:$parentId,\n urls: $urls,\n documents:$documents,\n announcement:$announcement\n });\n $.ajax({\n url: $wallUrlSet,\n method: \"POST\",\n cache:false,\n dataType: \"json\",\n data:$withParams,\n success: function ($data) {\n libs.expire($data);\n if($data.status == 'success'){\n if($wallDebug){console.log($withParams);console.log($wallUrlSet);console.log($data);}\n nurseslounge_lounge_activity.task_list_container(function($container){\n $params = $.extend({}, $params, {only:'owners'});\n nurseslounge_myDashboard_myProfile.task_list($container, $params);\n });\n //if($withParams.degree && $withParams.states && $withParams.specialties){\n $withParams = $.extend({}, $withParams, {case:'pin_it'});\n nurseslounge_myDashboard_afterPopUp.request($withParams);\n //}\n cback($data);\n }\n }\n });\n }\n };\n //AfterPinIt\n\n\n //nlWallRecognizeUrl\n var $nlWallRecognizeUrlDefaults = {\n recognize_url_url:\"/lounge/activity/wallRecognize/get\",\n };\n if($nlWallRecognizeUrlOptions != undefined){\n $nlWallRecognizeUrlSettings = $.extend({}, $nlWallRecognizeUrlDefaults, $nlWallRecognizeUrlOptions);\n }else{\n $nlWallRecognizeUrlSettings = $.extend({}, $nlWallRecognizeUrlDefaults);\n }\n $nlWallRecognizeUrlOriginal = $nlWallRecognizeUrlDefaults;\n nlWallRecognizeUrl = {\n regex:function(){\n return {\n pattern:'(http(s?):\\\\/\\\\/)(w{3}\\\\.)?([^: \\\\/\\\\n]+).([a-z]{2,63})([^\\\\s]{1,})?',\n flags:'gi'\n };\n },\n init:function($options, cback){\n $options = $options == undefined ? {} : $options;\n $options = $.extend({}, {\n wall_textarea: function(){\n return $(\"#nurseslounge-lounge-activity .nurseslounge-lounge-activity-left\").find('.post-text[data-id=\"0\"]');\n },\n recognize_url_preload_target: function(){\n return $(\"#nurseslounge-lounge-activity .nurseslounge-lounge-activity-left\").find('.preview[data-id=\"0\"]');\n },\n recognize_url_target: function(){\n return $(\"#nurseslounge-lounge-activity .nurseslounge-lounge-activity-left\").find('.preview[data-id=\"0\"]');\n },\n wall_pin_form:function(){\n return $(\"#nurseslounge-lounge-activity .nurseslounge-lounge-activity-left\").find('.pin-form[data-id=\"0\"]');\n },\n on_key_press_callback: false\n }, $options);\n var $regex = this.regex();\n var $url = new RegExp($regex.pattern, $regex.flags);\n var $searchGlobal = [];\n var $searchBinding;\n var $skipFromSearchGlobal = [];\n var $wallTextArea = $options.wall_textarea();\n var $onKeyPressCallback = $options.on_key_press_callback;\n var $recognizeUrlPreloadTarget = $options.recognize_url_preload_target();\n var $recognizeUrlPreloadHtml = nlWallHtml.recognize_preload();\n var $recognizeUrlTarget = $options.recognize_url_target();\n $wallTextArea.unbind().on('keypress keyup keydown blur', function(){\n if($onKeyPressCallback){\n $onKeyPressCallback();\n }\n libs.memorySave('prevent_load_post_binding', 1);\n var $text = $(this).val();\n var $matches = $text.match($url);\n var $search = false;\n try {\n clearTimeout($searchBinding);\n }catch (e) {\n\n }\n if($text == ''){\n $searchGlobal = [];\n $skipFromSearchGlobal = [];\n }\n $searchBinding = setTimeout(function(){\n var $wallPinForm = $options.wall_pin_form();\n if($matches && !$wallPinForm.is(':visible')) {\n $matches = $matches.filter(function($el){\n return !$skipFromSearchGlobal.includes($el);\n });\n $.each($matches, function ($i, $v) {\n if ($.inArray($v, $searchGlobal) == -1) {\n $search = true;\n return false;\n }\n });\n }\n if ($search) {\n if(libs.memoryGet('prevent_load_post_binding')){\n $recognizeUrlPreloadTarget.html($recognizeUrlPreloadHtml);\n }\n $searchGlobal = $matches;\n nlWallRecognizeUrl.get($searchGlobal, function($data){\n $recognizeUrlTarget.html(nlWallHtml.recognize_url($data)).promise().done(function(){\n $recognizeUrlTarget.find(\".cancel\").unbind().click(function(){\n var $websiteLink = $(this).parents('.website-link:first');\n var $type = $websiteLink.data('type');\n var $url = $websiteLink.data('url');\n if($type == 'website-thumb'){\n $websiteLink.remove();\n if ($.inArray($url, $searchGlobal) >= 0) {\n $skipFromSearchGlobal.push($url);\n }\n }\n });\n libs.refreshTooltips();\n });\n });\n }\n }, 800);\n });\n $recognizeUrlTarget.find(\".cancel\").unbind().click(function(){\n var $websiteLink = $(this).parents('.website-link:first');\n var $type = $websiteLink.data('type');\n var $url = $websiteLink.data('url');\n if($type == 'website-thumb'){\n $websiteLink.remove();\n if ($.inArray($url, $searchGlobal) >= 0) {\n $skipFromSearchGlobal.push($url);\n }\n }\n });\n if(cback != undefined){\n cback();\n }\n },\n get:function($urls, cback){\n var $recognizeUrlUrl = $nlWallRecognizeUrlSettings.recognize_url_url;\n var $wallDebug = $nlWallSettings.wall_debug;\n var $withParams = $.extend({}, nlWallHelper.get_with_params(), {urls:$urls});\n $.ajax({\n url:$recognizeUrlUrl,\n method: \"POST\",\n cache:false,\n dataType: \"json\",\n data:$withParams,\n success: function ($data) {\n libs.expire($data);\n if($wallDebug){console.log($withParams);console.log($recognizeUrlUrl);console.log($data);}\n if($data.status == 'success' && libs.memoryGet('prevent_load_post_binding')){\n cback($data);\n }\n }\n });\n },\n };\n\n //nlWallUpdate\n var $nlWallUpdateDefaults = {\n wall_update_modal:function(){\n return $(\"#nurseslounge-lounge-activity-wall-update-modal\");\n },\n wall_update_menu:\"/lounge/activity/wallUpdateMenu/get\",\n wall_update_analyze:\"/lounge/activity/wallUpdateAnalyze/get\",\n wall_update_save:\"/lounge/activity/wallUpdateMenu/set\",\n };\n if($nlWallUpdateOptions != undefined){\n $nlWallUpdateSettings = $.extend({}, $nlWallUpdateDefaults, $nlWallUpdateOptions);\n }else{\n $nlWallUpdateSettings = $.extend({}, $nlWallUpdateDefaults);\n }\n $nlWallUpdateOriginal = $nlWallUpdateDefaults;\n nlWallUpdate = {\n init:function($options, cback){\n $options = $options == undefined ? {} : $options;\n $options = $.extend({}, {\n wall_update_button:function(){\n return $(\"#nurseslounge-lounge-activity .nurseslounge-lounge-activity-left\").find('.upload[data-id=\"0\"]');\n },\n wall_update_preload_target: function(){\n return $(\"#nurseslounge-lounge-activity .nurseslounge-lounge-activity-left\").find('.preview[data-id=\"0\"]');\n },\n wall_update_target: function(){\n return $(\"#nurseslounge-lounge-activity .nurseslounge-lounge-activity-left\").find('.preview[data-id=\"0\"]');\n },\n wall_update_text_area:function(){\n return $(\"#nurseslounge-lounge-activity .nurseslounge-lounge-activity-left\").find('.post-text[data-id=\"0\"]');\n },\n on_close_modal_callback:false,\n on_end_callback:false,\n get_data_callback:false,\n wall_update_skip:[]\n }, $options);\n var $wallUpdateButton = $options.wall_update_button;\n var $modal = $nlWallUpdateSettings.wall_update_modal();\n var $modalContainer = $modal.find('.container:first');\n var $modalOptions = $modal.find('.options:first');\n var $onCloseModalCallback = $options.on_close_modal_callback;\n if($wallUpdateButton){\n $wallUpdateButton().unbind().click(function(){\n nlWallUpdate.container($options);\n });\n }else{\n nlWallUpdate.container($options);\n }\n $modal.unbind().on('hidden.bs.modal', function () {\n Webcam.reset();\n $modalContainer.html('');\n $modalOptions.html('');\n if($onCloseModalCallback){\n $onCloseModalCallback();\n }\n });\n if(cback != undefined){\n cback();\n }\n },\n container:function($options){\n nlWallUpdate.popup($options, function($data){\n nlWallUpdate.fill($data, $options);\n });\n },\n popup:function($options, cback){\n var $modal = $nlWallUpdateSettings.wall_update_modal();\n var $modalContainer = $modal.find('.container:first');\n var $modalOptions = $modal.find('.options:first');\n nlWallUpdate.menu($options, function($data){\n var $optionsChtml = '';\n $.each($data.data.options, function($i, $v){\n $optionsChtml +='' +\n '
  • ' +\n ' ' +\n ' \"'+$v+'\"' + $v +\n ' ' +\n '
  • ';\n });\n $modalContainer.html('').promise().done(function(){\n $modalOptions.html($optionsChtml).promise().done(function(){\n $(this).find('.action').unbind().click(function(){\n var $action = $(this).data('action');\n if($action == 'album'){\n nlWallAlbum.open({\n on_close_modal:function(){\n var $albumModal = $nlWallAlbumSettings.album_modal();\n $albumModal.modal('hide');\n var $updateModal = $nlWallUpdateSettings.wall_update_modal();\n $updateModal.modal('show');\n },\n on_end_callback:function(){\n var $albumModal = $nlWallAlbumSettings.album_modal();\n $albumModal.unbind();\n $albumModal.modal('hide');\n $albumModal.css('display', 'none');\n $(\"body\").removeClass('modal-open');\n $(\".modal-backdrop\").remove();\n },\n on_start_callback:function(){\n var $albumModal = $nlWallAlbumSettings.album_modal();\n $albumModal.modal('show');\n var $updateModal = $nlWallUpdateSettings.wall_update_modal();\n $updateModal.unbind();\n $updateModal.modal('hide');\n },\n album_allow_tabs : {\n 'webcam_image':true,\n 'image':true,\n 'document':true,\n 'video':true,\n 'article':false\n },\n album_step:11,\n album_allow_add:true,\n album_allow_select:true\n }, function($document){\n nlWallUpdate.fill($document, $options);\n });\n }else{\n nlWallUpdate.preview($action, $options, function($data){\n cback($data);\n });\n }\n });\n libs.checkImageLoad($($optionsChtml).find('img'), function(){\n $modal.modal('show');\n });\n });\n });\n });\n },\n menu:function($options, cback){\n var $wallUpdateMenu = $nlWallUpdateSettings.wall_update_menu;\n var $wallDebug = $nlWallSettings.wall_debug;\n var $wallUpdateSkip = $options.wall_update_skip;\n var $withParams = $.extend({}, nlWallHelper.get_with_params(), {skip:$wallUpdateSkip});\n $.ajax({\n url: $wallUpdateMenu,\n method: \"POST\",\n cache:false,\n dataType: \"json\",\n data:$withParams,\n success: function ($data) {\n libs.expire($data);\n if($wallDebug){console.log($withParams);console.log($wallUpdateMenu);console.log($data);}\n if($data.status == 'success'){\n cback($data);\n }\n }\n });\n },\n preview:function($action, $options, cback){\n var $modal = $nlWallUpdateSettings.wall_update_modal();\n var $modalContainer = $modal.find('.container:first');\n var $modalOptions = $modal.find('.options:first');\n var $chtml = nlWallHtml.update_container($action);\n $modalContainer.html($chtml).promise().done(function(){\n var $target = $(this);\n var $imageContainer = $target.find('.image-container:first');\n var $takePicture = $target.find(\".take-camera-picture:first\");\n var $savePicture = $target.find(\".save-camera-picture:first\");\n var $back = $target.find(\".back:first\");\n if($action == 'webcam_image'){\n $modalOptions.html('').promise().done(function(){\n Webcam.reset();\n Webcam.attach($imageContainer[0]);\n $takePicture.unbind().click(function(){\n Webcam.snap( function($imageBase64) {\n $imageContainer.html('').html('').promise().done(function(){\n $takePicture.html('Reset').unbind().click(function(){\n nlWallUpdate.preview('webcam_image', $options,function(){\n cback();\n });\n });\n $savePicture.unbind().click(function(){\n $target.find('.camera-buttons').hide();\n nlWallUpdate.update($action, $imageBase64, $options, function($data){\n cback($data);\n });\n }).addClass('active');\n });\n });\n });\n });\n $back.unbind().click(function(){\n nlWallUpdate.popup($options, cback);\n });\n }else{\n $(this).find('input[type=\"file\"]').unbind().change(function(){\n var $fileInput = $(this);\n nlWallUpdate.update($action, $fileInput, $options, cback);\n }).click();\n }\n });\n },\n update:function($action, $fileInput, $options, cback){\n var $withParams = nlWallHelper.get_with_params();\n var $wallUpdatePreloadHtml = nlWallHtml.update_preload();\n var $modal = $nlWallUpdateSettings.wall_update_modal();\n var $modalContainer = $modal.find('.container:first');\n var $modalOptions = $modal.find('.options:first');\n var $chtml = $modalContainer.html();\n $modalOptions.html('');\n $modalContainer.html($wallUpdatePreloadHtml).promise().done(function(){\n var $formData = new FormData();\n $formData.append('_token', $('meta[name=\"csrf-token\"]').attr('content'));\n if($action == 'webcam_image'){\n Webcam.reset();\n $formData.append('file', libs.b64toBlob($fileInput));\n }else{\n $formData.append('file', $fileInput[0].files[0]);\n }\n $formData.append('file_type', $action);\n $formData.append('user_id', $withParams.user_id);\n $formData.append('key', $withParams.key);\n nlWallUpdate.analyze($formData, function($data){\n if($data.status == 'error'){\n cback($data);\n return false;\n }\n $formData.append('thumb_file', libs.b64toBlob($data.data.features.thumb));\n $formData.append('original_name', $data.data.features.original_name);\n $modalContainer.html($chtml).promise().done(function(){\n var $target = $(this);\n var $imageContainer = $target.find('.image-container');\n $imageContainer.width($target.width());\n $imageContainer.height(300);\n if(\n $action == 'image' && $data.data.features.mime_type == 'image/png' ||\n $action == 'image' && $data.data.features.mime_type == 'image/jpg' ||\n $action == 'image' && $data.data.features.mime_type == 'image/jpeg' ||\n $action == 'image' && $data.data.features.mime_type == 'image/gif'\n ) {\n $imageContainer.html('');\n }\n if(\n $action == 'document' && $data.data.features.mime_type == 'application/pdf' ||\n $action == 'document' && $data.data.features.mime_type == 'application/vnd.openxmlformats-officedocument.wordprocessingml.document' ||\n $action == 'document' && $data.data.features.mime_type == 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet' ||\n $action == 'document' && $data.data.features.mime_type == 'application/vnd.openxmlformats-officedocument.presentationml.presentation' ||\n $action == 'document' && $data.data.features.mime_type == 'application/CDFV2' ||\n $action == 'document' && $data.data.features.mime_type == 'text/csv' ||\n $action == 'document' && $data.data.features.mime_type == 'application/vnd.ms-excel' ||\n $action == 'document' && $data.data.features.mime_type == 'application/msword' ||\n $action == 'document' && $data.data.features.mime_type == 'text/plain'\n ) {\n if(PDFObject.supportsPDFs){\n PDFObject.embed($data.data.features.preview, $imageContainer, {\n height: \"400px\",\n pdfOpenParams: {\n view:'FitV',\n scrollbars: '0',\n toolbar: '0',\n statusbar: '0',\n navpanes: '0',\n page:'1'\n }\n });\n } else {\n $imageContainer.html('');\n }\n }\n if(\n $action == 'video' && $data.data.features.mime_type == 'video/mp4' ||\n $action == 'video' && $data.data.features.mime_type == 'video/x-msvideo' ||\n $action == 'video' && $data.data.features.mime_type == 'video/mpeg' ||\n $action == 'video' && $data.data.features.mime_type == 'video/quicktime' ||\n $action == 'video' && $data.data.features.mime_type == 'video/x-flv' ||\n $action == 'video' && $data.data.features.mime_type == 'video/x-matroska' ||\n $action == 'video' && $data.data.features.mime_type == 'video/x-ms-asf'\n ) {\n var $player = new Artplayer({\n destroy:true,\n container: $imageContainer[0],\n title: $data.data.features.original_name,\n url: $data.data.features.preview + '?temporal=true',\n poster: $data.data.features.thumb,\n autoplay: true,\n type: 'mp4',\n mutex: true,\n muted: false,\n play: true,\n pause: false,\n toggle: false,\n miniProgressBar: true,\n loop: true,\n fullscreen: false,\n fullscreenToggle: false,\n fullscreenWeb: false,\n fullscreenWebToggle: false,\n fullscreenRotate: false,\n fullscreenRotateToggle: false,\n moreVideoAttr: {\n crossOrigin: 'anonymous',\n playsInline: true,\n 'webkit-playsinline': true,\n 'x5-video-player-type': 'h5',\n 'x5-video-player-fullscreen': false,\n 'x5-video-orientation': 'portraint',\n },\n whitelist:['*']\n }).on('ready', function () {\n $player.player.pause = true;\n $player.player.play = true;\n });\n $player.mask.show = false;\n }\n $modalOptions.html('').html(nlWallHtml.update_options()).promise().done(function(){\n var $fileType = $action;\n $modalOptions.find('.action').unbind().click(function(){\n var $action = $(this).data('action');\n if($player != undefined){\n $player.player.pause = true;\n $player.destroy();\n }\n $modalOptions.html('');\n $modalContainer.html($wallUpdatePreloadHtml).promise().done(function(){\n switch($action){\n case 'save':\n if($fileInput != ''){\n if($fileType == 'image' || $fileType == 'webcam_image' || $fileType == 'document'){\n $formData.append('preview_file', libs.b64toBlob($data.data.features.preview));\n }\n if($fileType == 'video'){\n $formData.append('preview_file', $data.data.features.preview);\n $formData.append('preview_root', $data.data.features.preview_root);\n }\n $formData.append('action', $action);\n $formData.append('file_type', $fileType);\n var $wallUpdatePreloadTarget = $nlWallUpdateSettings.wall_update_preload_target;\n if($wallUpdatePreloadTarget){\n $wallUpdatePreloadTarget().html(nlWallHtml.update_preload()).promise().done(function(){\n nlWallUpdate.save($formData, function($data){\n $data = $.extend($data, {action:$fileType});\n cback($data);\n });\n });\n }else{\n nlWallUpdate.save($formData, function($data){\n $data = $.extend($data, {action:$fileType});\n cback($data);\n });\n }\n }\n break;\n case 'back':\n $modalContainer.html('').promise().done(function(){\n nlWallUpdate.popup($options, cback);\n });\n break;\n }\n });\n });\n });\n });\n });\n });\n },\n analyze:function($formData, cback){\n var $wallUpdateAnalyze = $nlWallUpdateSettings.wall_update_analyze;\n var $wallDebug = $nlWallSettings.wall_debug;\n $.ajax({\n type: 'POST',\n url: $wallUpdateAnalyze,\n data: $formData,\n cache: false,\n contentType: false,\n processData: false,\n success: function ($data) {\n libs.expire($data);\n if($wallDebug){console.log($formData);console.log($wallUpdateAnalyze);console.log($data);}\n cback($data);\n }\n });\n },\n save:function($formData, cback){\n var $wallUpdateSave = $nlWallUpdateSettings.wall_update_save;\n var $wallDebug = $nlWallSettings.wall_debug;\n $.ajax({\n type: 'POST',\n url: $wallUpdateSave,\n data: $formData,\n cache: false,\n contentType: false,\n processData: false,\n success: function ($data) {\n libs.expire($data);\n if($wallDebug){console.log($formData);console.log($wallUpdateSave);console.log($data);}\n if ($data.status == 'success') {\n cback($data);\n }\n }\n });\n },\n fill:function($data, $options){\n var $modal = $nlWallUpdateSettings.wall_update_modal();\n var $wallUpdateTextArea = $options.wall_update_text_area;\n var $onEndCallback = $options.on_end_callback;\n var $getDataCallback = $options.get_data_callback;\n var $wallUpdateTarget = $options.wall_update_target;\n var $albumModal = $nlWallAlbumSettings.album_modal();\n var $albumModalTab = $albumModal.find('.nav-pills .nav-link[data-target=\"#'+$data.action+'\"]');\n if($data.status == 'error'){\n $modal.modal('hide');\n }else\n if($wallUpdateTextArea && false){\n var $txt = $wallUpdateTextArea().val();\n $wallUpdateTextArea().val($txt + '\\n' + $data.data.updated_file.name).keypress();\n }\n if($getDataCallback){\n $getDataCallback($data);\n if(!$albumModalTab.hasClass('disabled')){\n $albumModalTab.click();\n }\n if($onEndCallback){\n $onEndCallback();\n $albumModal.find('.nav-pills .nav-link[data-target=\"#'+$data.action+'\"]').click();\n }else{\n $modal.modal('hide');\n }\n }else\n if(\n $data.action == 'image' ||\n $data.action == 'document' ||\n $data.action == 'video' ||\n $data.action == 'webcam_image' ||\n $data.action == 'article'\n ){\n var $chtml = nlWallHtml.update_wall($data.data.updated_file);\n libs.checkImageLoad($($chtml).find('img'), function(){\n $wallUpdateTarget().html($chtml).promise().done(function(){\n $wallUpdateTarget().find(\".cancel\").unbind().click(function(){\n var $websiteAttach = $(this).parents('.website-attach:first');\n var $type = $websiteAttach.data('type');\n if($type == 'website-document'){\n $websiteAttach.remove();\n }\n });\n libs.refreshTooltips();\n if(!$albumModalTab.hasClass('disabled')){\n $albumModalTab.click();\n }\n if($onEndCallback){\n $onEndCallback();\n $albumModal.find('.nav-pills .nav-link[data-target=\"#'+$data.action+'\"]').click();\n }else{\n $modal.modal('hide');\n }\n });\n });\n }\n },\n };\n\n //nlWallAlbum\n var $nlWallAlbumDefaults = {\n album_modal:function(){\n return $(\"#nurseslounge-lounge-activity-wall-album-modal\");\n },\n album_view:\"/lounge/activity/wallAlbumView/get\",\n album_delete:\"/lounge/activity/wallAlbumView/delete\",\n };\n if($nlWallAlbumOptions != undefined){\n $nlWallAlbumSettings = $.extend({}, $nlWallAlbumDefaults, $nlWallAlbumOptions);\n }else{\n $nlWallAlbumSettings = $.extend({}, $nlWallAlbumDefaults);\n }\n $nlWallAlbumOriginal = $nlWallAlbumDefaults;\n nlWallAlbum = {\n open:function($options, selectedDocument){\n $options = $options == undefined ? {} : $options;\n $options = $.extend({}, {\n on_close_modal:false,\n on_end_callback:false,\n on_start_callback:false,\n album_allow_tabs : {\n 'webcam_image':true,\n 'image':true,\n 'document':true,\n 'video':true,\n 'article':false\n },\n album_step:11,\n album_allow_add:true,\n album_allow_select:true\n }, $options);\n\n var $modal = $nlWallAlbumSettings.album_modal();\n var $onCloseModal = $options.on_close_modal;\n var $albumAllowTabs = $options.album_allow_tabs;\n var $allowTabsFiltered = $albumAllowTabs;\n $albumAllowTabs = {};\n $.each($allowTabsFiltered, function($k, $v) {var $newObj = {};$newObj[$k]=$v;if($v){$.extend($albumAllowTabs, $newObj);}});\n if(!$modal.is(':visible') && $onCloseModal){\n $modal.unbind().on('hidden.bs.modal', function () {\n $onCloseModal();\n });\n }\n $modal.find('.nav-pills .nav-link').addClass('disabled').removeClass('active');\n $modal.find('.album-modal-container .tab-pane .container').html('');\n //Events\n $modal.find('.nav-pills a[data-toggle=\"tab\"]').unbind().on('shown.bs.tab', function ($e) {\n var $selectedTab = $e.currentTarget.dataset.target.replace('#','');\n if($.inArray($selectedTab, Object.keys($albumAllowTabs)) > -1){\n nlWallAlbum.tab($selectedTab, $options, function($document){\n selectedDocument($document);\n });\n }\n });\n //Enable selected\n $.each($albumAllowTabs, function ($i, $v) {\n $modal.find('.nav-pills .nav-link[data-target=\"#'+$i+'\"]').removeClass('disabled');\n });\n $.each($albumAllowTabs, function($i, $v) {\n if($v){\n $modal.find('.nav-pills .nav-link[data-target=\"#'+$i+'\"]').click();\n return false;\n }\n });\n },\n tab:function($selectedTab, $options, selectedDocument){\n var $modal = $nlWallAlbumSettings.album_modal();\n var $onEndCallback = $options.on_end_callback;\n var $onStartCallback = $options.on_start_callback;\n var $albumStep = $options.album_step;\n var $modalContainer = $modal.find('.album-modal-container:first');\n var $loadMoreAfterPercent = 90;\n var $scrollBinding;\n var $albumLength;\n var $updateModal = $nlWallUpdateSettings.wall_update_modal();\n var $container = $updateModal.find('.container:first');\n var $optionsDiv = $updateModal.find('.options:first');\n $optionsDiv.hide();\n $container.html(nlWallHtml.update_preload()).promise().done(function() {\n nlWallAlbum.view($selectedTab, 'view', $options, function ($chtml) {\n $modal.find('#' + $selectedTab).html($chtml).promise().done(function () {\n var $modalWrapper = $modalContainer.find('#' + $selectedTab);\n var $preload = $modalWrapper.find('.preload');\n $modalWrapper.unbind().scroll(function () {\n var $maxScrollTop = $modalWrapper[0].scrollHeight - $modalWrapper.height();\n var $actualScroll = $modalWrapper.scrollTop();\n var $triggerPercent = ($actualScroll * 100) / $maxScrollTop > $loadMoreAfterPercent;\n if ($triggerPercent) {\n try {\n clearTimeout($scrollBinding);\n } catch (e) {\n }\n $scrollBinding = setTimeout(function () {\n $albumLength = $modalWrapper.find('div:first .item').length;\n libs.memorySave('album-offset' + $selectedTab, $albumLength);\n libs.memorySave('album-limit' + $selectedTab, $albumStep);\n nlWallAlbum.view($selectedTab, 'json', $options, function ($data) {\n var $chtml = nlWallHtml.album_view_html($data);\n libs.checkImageLoad($($chtml).find('img'), function () {\n $modalWrapper.find('div:first').append($chtml).ready(function () {\n $albumLength = $modalWrapper.find('div:first .item').length;\n if ($albumLength >= $data.data.documents_count) {\n $preload.hide();\n } else {\n $preload.show();\n }\n nlWallAlbum.events($options, function () {\n }, function ($document) {\n if ($onEndCallback) {\n $onEndCallback();\n } else {\n $modal.modal('hide');\n }\n selectedDocument($document);\n });\n });\n });\n });\n }, 1000);\n }\n });\n nlWallAlbum.events($options, function () {\n libs.checkImageLoad($($chtml).find('img'), function () {\n if ($onStartCallback) {\n $onStartCallback();\n } else {\n $modal.modal('show');\n }\n $optionsDiv.show();\n $container.html('');\n });\n }, function ($document) {\n if ($onEndCallback) {\n $onEndCallback();\n } else {\n $modal.modal('hide');\n }\n selectedDocument($document);\n });\n });\n });\n });\n },\n view:function($selectedTab, $only, $options, cback){\n var $albumStep = $options.album_step;\n var $albumAllowAdd = $options.album_allow_add;\n var $withParams = nlWallHelper.get_with_params();\n var $modal = $nlWallAlbumSettings.album_modal();\n var $modalContainer = $modal.find('.album-modal-container:first');\n var $modalWrapper = $modalContainer.find('#'+$selectedTab);\n var $albumLength;\n if($only == 'view'){\n libs.memorySave('album-offset'+$selectedTab, 0);\n if(!libs.memoryGet('album-limit'+$selectedTab)){\n libs.memorySave('album-limit'+$selectedTab, $albumStep);\n }\n }else{\n $albumLength = $modalWrapper.find('div:first .item').length;\n libs.memorySave('album-limit'+$selectedTab, $albumLength);\n }\n var $offset = libs.memoryGet('album-offset'+$selectedTab);\n var $limit = libs.memoryGet('album-limit'+$selectedTab);\n var $albumView = $nlWallAlbumSettings.album_view;\n var $wallDebug = $nlWallSettings.wall_debug;\n $withParams = $.extend({}, $withParams, {type:$selectedTab, allow_add:$albumAllowAdd, only:$only, offset:$offset, limit:$limit});\n $.ajax({\n url:$albumView,\n method: \"POST\",\n cache:false,\n dataType: $only == 'view' ? 'html' : 'json',\n data:$withParams,\n success: function ($data) {\n libs.expire($data);\n if($wallDebug){console.log($withParams);console.log($albumView);console.log($data);}\n cback($data);\n }\n });\n },\n events:function($options, cback, selectedDocument){\n var $modal = $nlWallAlbumSettings.album_modal();\n var $image = $modal.find('.img-contain img');\n var $addDocument = $modal.find('.btn-add-document');\n var $deleteDocument = $modal.find('.btn-delete');\n var $albumAllowSelect = $options.album_allow_select;\n var $holdTime;\n $image.unbind();\n if($albumAllowSelect) {\n $image.click(function () {\n var $that = $(this);\n var $modal = $nlWallAlbumSettings.album_modal();\n $modal.unbind();\n selectedDocument(\n {\n action: $that.data('filetype'),\n data: {\n updated_file: {\n id: $that.data('id'),\n name: $that.data('name'),\n document_root: $that.data('documentroot'),\n type: $that.data('type'),\n size: $that.data('size'),\n file_type: $that.data('filetype'),\n thumb_name: $that.data('thumbname'),\n document_thumb_root: $that.data('documentthumbroot'),\n thumb_type: $that.data('thumbtype'),\n thumb_size: $that.data('thumbsize'),\n preview_name: $that.data('previewname'),\n document_preview_root: $that.data('documentpreviewroot'),\n preview_type: $that.data('previewtype'),\n preview_size: $that.data('previewsize'),\n date: $that.data('date')\n }\n }\n }\n );\n }).on('mousedown', function() {\n var $that = $(this);\n var $id = $that.data('id');\n $holdTime = setTimeout(function(){\n nlWallDocumentPreview.init($id);\n }, 1000);\n }).on('mouseup mouseleave', function() {\n clearTimeout($holdTime);\n });\n }else{\n $image.click(function () {\n var $that = $(this);\n var $id = $that.data('id');\n nlWallDocumentPreview.init($id);\n });\n }\n $addDocument.unbind().click(function(){\n $modal.unbind();\n nlWallUpdate.init({\n wall_update_button:false,\n wall_update_preload_target:false,\n wall_update_target:false,\n wall_update_text_area:false,\n wall_update_skip:['album'],\n on_close_modal_callback:function(){\n var $albumModal = $nlWallAlbumSettings.album_modal();\n $albumModal.modal('show');\n },\n on_end_callback:false,\n get_data_callback:function($updatedDocument){\n var $tab = $updatedDocument.data.updated_file.file_type;\n var $modal = $nlWallAlbumSettings.album_modal();\n nlWallAlbum.tab($tab, {\n on_close_modal:false,\n on_end_callback:false,\n on_start_callback:function(){\n $modal.find('.nav-pills .nav-link[data-target=\"#'+$tab+'\"]').click();\n },\n album_allow_tabs : {\n 'webcam_image':true,\n 'image':true,\n 'document':true,\n 'video':true,\n 'article':false\n },\n album_step:11,\n album_allow_add:true,\n album_allow_select:true\n }, function($document){\n selectedDocument($document);\n });\n }\n },function(){\n $modal.modal('hide');\n });\n });\n $deleteDocument.unbind().click(function($e){\n $e.stopPropagation();\n var $that = $(this);\n var $item = $that.parents('.item:first');\n var $id = $item.find('img:first').data('id');\n if(confirm('Delete this document!\\nThis will permanently delete the document from all the Post and Articles where it is used')){\n nlWallAlbum.delete($id, function(){\n $item.remove();\n });\n }\n });\n cback();\n },\n delete:function($id, cback){\n var $albumDelete = $nlWallAlbumSettings.album_delete;\n var $wallDebug = $nlWallSettings.wall_debug;\n var $withParams = $.extend({}, nlWallHelper.get_with_params(), {id:$id});\n $.ajax({\n url:$albumDelete,\n method: \"POST\",\n cache:false,\n dataType: \"json\",\n data:$withParams,\n success: function ($data) {\n libs.expire($data);\n if($wallDebug){console.log($withParams);console.log($albumDelete);console.log($data);}\n if($data.status == 'success'){\n cback($data);\n }\n }\n });\n },\n };\n\n //nlWallDocumentPreview\n var $nlWallDocumentPreviewDefaults = {\n wall_document_preview_get:\"/lounge/activity/wallDocument/get\",\n wall_document_social_share:\"/lounge/activity/wallDocument/socialShare\",\n photo_swipe_image_target:function(){\n return $('#nurseslounge-lounge-activity-wall-photoswipe-image');\n },\n photo_swipe_document_target:function(){\n return $('#nurseslounge-lounge-activity-wall-photoswipe-document');\n },\n photo_swipe_video_target:function(){\n return $('#nurseslounge-lounge-activity-wall-photoswipe-video');\n },\n photo_swipe_article_target:function(){\n return $('#nurseslounge-lounge-activity-wall-photoswipe-article');\n }\n };\n if($nlWallDocumentPreviewOptions != undefined){\n $nlWallDocumentPreviewSettings = $.extend({}, $nlWallDocumentPreviewDefaults, $nlWallDocumentPreviewOptions);\n }else{\n $nlWallDocumentPreviewSettings = $.extend({}, $nlWallDocumentPreviewDefaults);\n }\n $nlWallDocumentPreviewOriginal = $nlWallDocumentPreviewDefaults;\n\n nlWallDocumentPreview = {\n init:function($documentId){\n nlWallDocumentPreview.get($documentId, function($data){\n var $id = $data.data.document.id;\n var $type = $data.data.document.file_type;\n var $document = $data.data.document;\n libs.memorySave($type+$id, $document);\n nlWallDocumentPreview.popup($type, $id);\n });\n },\n get:function($id, cback){\n var $wallDocumentPreviewGet = $nlWallDocumentPreviewSettings.wall_document_preview_get;\n var $wallDebug = $nlWallSettings.wall_debug;\n var $withParams = $.extend({}, nlWallHelper.get_with_params(), {id:$id});\n $.ajax({\n url:$wallDocumentPreviewGet,\n method: \"POST\",\n cache:false,\n dataType: \"json\",\n data:$withParams,\n success: function ($data) {\n libs.expire($data);\n if($wallDebug){console.log($withParams);console.log($wallDocumentPreviewGet);console.log($data);}\n cback($data);\n }\n });\n },\n social_share:function($photoSwipe, $name, $id){\n var $chtml = '' +\n '';\n var $button = $photoSwipe.find('.pswp__' + $name + ':first');\n if($button.find('.pswp__single-tap:first').length == 0){\n $button.append($chtml).ready(function(){\n $photoSwipe.unbind('click').click(function(){\n $button.find('.pswp__share-modal:first').removeClass('pswp__share-modal--fade-in');\n $button.find('.pswp__share-modal:first').addClass('pswp__share-modal--hidden');\n });\n $button.find('.share-with').unbind().click(function(){\n var $action = $(this).data('action');\n nlWallDocumentPreview.social_share_request($id, function($data){\n var $document = $data.data.document;\n var $name = $document.name;\n var $thumb = $document.document_thumb_root;\n $thumb = encodeURIComponent($thumb);\n var $shareLink = $document.share_link;\n $shareLink = encodeURIComponent($shareLink);\n var $url = encodeURIComponent(window.location.href);\n var $features = '';\n switch ($action) {\n case 'facebook':\n window.open('https://www.facebook.com/sharer/sharer.php?u=' + $shareLink, '_blank', $features);\n break;\n case 'twitter':\n window.open('https://twitter.com/intent/tweet?url=' + $shareLink + '&text=' + $name, '_blank', $features);\n break;\n case 'pinterest':\n window.open('http://www.pinterest.com/pin/create/button?url=' + $url + '&media=' + $thumb + '&description=' + $name, '_blank', $features);\n break;\n case 'linkedin':\n window.open('https://www.linkedin.com/shareArticle?mini=true&url=' + $shareLink, '_blank', $features);\n break;\n }\n });\n });\n });\n }\n $button.find('.pswp__share-modal:first').removeClass('pswp__share-modal--hidden');\n $button.find('.pswp__share-modal:first').addClass('pswp__share-modal--fade-in');\n $button.unbind('click').click(function($e){\n $e.stopPropagation();\n });\n },\n social_share_request:function($id, cback){\n var $wallDocumentSocialShare = $nlWallDocumentPreviewSettings.wall_document_social_share;\n var $wallDebug = $nlWallSettings.wall_debug;\n var $withParams = $.extend({}, nlWallHelper.get_with_params(), {id:$id});\n $.ajax({\n url:$wallDocumentSocialShare,\n method: \"POST\",\n cache:false,\n dataType: \"json\",\n data:$withParams,\n success: function ($data) {\n libs.expire($data);\n if($wallDebug){console.log($withParams);console.log($wallDocumentSocialShare);console.log($data);}\n cback($data);\n }\n });\n },\n popup:function($type, $id, $function, cback){\n var $photoSwipeImage = $nlWallDocumentPreviewSettings.photo_swipe_image_target();\n var $photoSwipeDocument = $nlWallDocumentPreviewSettings.photo_swipe_document_target();\n var $photoSwipeVideo = $nlWallDocumentPreviewSettings.photo_swipe_video_target();\n var $photoSwipeArticle = $nlWallDocumentPreviewSettings.photo_swipe_article_target();\n var $data = libs.memoryGet($type+$id);\n var $original;\n var $preview;\n var $thumb;\n var $mimeType;\n var $name;\n var $documentKey;\n var $documentDate;\n var $userLongName;\n var $userImage;\n var $articleHtml;\n var $articleHeadline;\n var $articleSingleImage;\n var $specialty;\n var $degree;\n var $articleTags = [];\n var $link;\n var $gallery;\n if(\n $type == 'image' ||\n $type == 'webcam_image' ||\n $type == 'document' ||\n $type == 'video' ||\n $type == 'article'\n ){\n $original = $data.document_root ? $data.document_root : null;\n $preview = $data.document_preview_root ? $data.document_preview_root : null;\n $thumb = $data.document_thumb_root ? $data.document_thumb_root : null;\n $mimeType = $data.type ? $data.type : null;\n $name = $data.name ? $data.name : null;\n $documentKey = $data.key ? $data.key : null;\n $documentDate = $data.date ? moment.utc($data.date, 'YYYY-MM-DD HH:mm:ss').local().format('MMMM, DD YYYY hh:mm A') : null;\n $userLongName = $data.user && $data.user.long_name ? $data.user.long_name : null;\n $userImage = $data.user && $data.user.profile_image_root_wall ? $data.user.profile_image_root_wall : null;\n $articleHtml = $data.article_features && $data.article_features.html ? $data.article_features.html : null;\n $articleHeadline = $data.article_features && $data.article_features.headline ? $data.article_features.headline : null;\n $articleSingleImage = $data.article_features && $data.article_features.image && $data.article_features.image.document_root ? $data.article_features.image.document_root : null;\n $degree = $data.article_features && $data.article_features.degree && $data.article_features.degree.subcategory ? $data.article_features.degree.subcategory : null;\n $specialty = $data.article_features && $data.article_features.specialty && $data.article_features.specialty.type ? $data.article_features.specialty.type : null;\n if($specialty){\n $articleTags.push({tag:$specialty});\n }\n if($degree) {\n $articleTags.push({tag:$degree});\n }\n if($data.article_tags){\n $articleTags = $.merge($articleTags, $data.article_tags);\n }\n }else{\n $link = $data.patternUrl;\n }\n if(\n $type == 'image' ||\n $type == 'webcam_image'\n ){\n libs.getImageWH($original, function($w, $h){\n $gallery = new PhotoSwipe($photoSwipeImage[0], PhotoSwipeUI_Default,\n [\n {\n src: $original,\n w: $w,\n h: $h\n },\n ],\n {\n index: 0,\n clickToCloseNonZoomable: false,\n closeOnScroll: false,\n closeOnVerticalDrag:false,\n closeElClasses: [],\n history:false,\n shareButtons: [\n {\n id:'downloadOriginal',\n label:'Download Original',\n url:$original+'?name='+$name+'&download=true',\n download:true\n }\n ],\n socialShareEvent:function($this){\n nlWallDocumentPreview.social_share($photoSwipeImage, $this.name, $id);\n }\n }\n );\n $gallery.init();\n //var $api = $gallery.ui.getFullscreenAPI();\n //$api.enter();\n $(\"body\").css('overflowY', 'hidden');\n $gallery.listen('close', function() {\n $photoSwipeImage.find(\".pswp__zoom-wrap\").html('');\n $(\"body\").css('overflowY', 'scroll');\n if(cback != undefined){\n cback();\n }\n });\n });\n }\n if($type == 'document'){\n var $chtml = '' +\n '
    ' +\n '
    ' +\n '
    ' +\n '
    ';\n var $shareButtons;\n if($mimeType == 'application/pdf'){\n $shareButtons = [\n {\n id:'downloadOriginal',\n label:'Download Original',\n url:$original+'?name='+$name+'&download=true',\n download:true\n }\n ];\n }else{\n $shareButtons = [\n {\n id:'downloadPdf',\n label:'Download PDF',\n url:$preview+'?name='+$name+'&download=true',\n download:true\n },\n {\n id:'downloadOriginal',\n label:'Download Original',\n url:$original+'?name='+$name+'&download=true',\n download:true\n }\n ];\n }\n $gallery = new PhotoSwipe($photoSwipeDocument[0], PhotoSwipeUI_Default,\n [\n {\n html: $chtml\n }\n ],\n {\n index: 0,\n clickToCloseNonZoomable: false,\n closeOnScroll: false,\n closeOnVerticalDrag:false,\n closeElClasses: [],\n history:false,\n shareButtons: $shareButtons,\n socialShareEvent:function($this){\n nlWallDocumentPreview.social_share($photoSwipeDocument, $this.name, $id);\n }\n }\n );\n $gallery.init();\n var $container = $photoSwipeDocument.find('.preview-image-container');\n var $target = $container.find('.image:first');\n $target.width($(window).width());\n $target.height($(window).height());\n if(PDFObject.supportsPDFs){\n PDFObject.embed($preview, $target, {\n height: \"400px\",\n pdfOpenParams: {\n view:'FitV',\n scrollbars: '0',\n toolbar: '0',\n statusbar: '0',\n navpanes: '0',\n page:'1'\n }\n });\n } else {\n $target.html('');\n }\n var $fullscreen = false;\n //var $api = $gallery.ui.getFullscreenAPI();\n //$api.enter();\n var $pdfobjectOriginalH = $(window).height();\n var $pdfobjectFullH;\n $(\"body\").css('overflowY', 'hidden');\n $target.find('.pdfobject').height($pdfobjectOriginalH);\n $gallery.listen('close', function() {\n $container.remove();\n $(\"body\").css('overflowY', 'scroll');\n if(cback != undefined){\n cback();\n }\n });\n $gallery.listen('beforeResize', function() {\n if(!$fullscreen){\n $target.find('.pdfobject').height($(window).height());\n }else{\n $target.find('.pdfobject').height($pdfobjectOriginalH);\n }\n $fullscreen = !$fullscreen;\n });\n }\n if($type == 'video'){\n var $chtml = '' +\n '
    ' +\n '
    ' +\n '
    ' +\n '
    ';\n $gallery = new PhotoSwipe($photoSwipeVideo[0], PhotoSwipeUI_Default,\n [\n {\n html: $chtml\n }\n ],\n {\n index: 0,\n clickToCloseNonZoomable: false,\n closeOnScroll: false,\n closeOnVerticalDrag:false,\n closeElClasses: [],\n history:false,\n shareButtons: [\n {\n id:'downloadOriginal',\n label:'Download Original',\n url:$original+'?name='+$name+'&download=true',\n download:true\n }\n ],\n socialShareEvent:function($this){\n nlWallDocumentPreview.social_share($photoSwipeVideo, $this.name, $id);\n }\n }\n );\n $gallery.init();\n var $smallPlayer = libs.memoryGet('player'+$id);\n if($smallPlayer){\n $smallPlayer.player.pause = true;\n }\n var $container = $photoSwipeVideo.find('.preview-image-container');\n var $target = $container.find('.image:first');\n $target.width($(window).width());\n $target.height($(window).height());\n var $previewPlayer = new Artplayer({\n destroy:true,\n container: $target[0],\n title: $original,\n url: $preview + '?temporal=true',\n poster: $thumb,\n type: 'mp4',\n mutex: true,\n muted: false,\n play: false,\n pause: true,\n autoplay: true,\n toggle: false,\n miniProgressBar: true,\n loop: true,\n fullscreen: false,\n fullscreenToggle: false,\n fullscreenWeb: false,\n fullscreenWebToggle: false,\n fullscreenRotate: false,\n fullscreenRotateToggle: false,\n moreVideoAttr: {\n crossOrigin: 'anonymous',\n playsInline: true,\n 'webkit-playsinline': true,\n 'x5-video-player-type': 'h5',\n 'x5-video-player-fullscreen': false,\n 'x5-video-orientation': 'portraint',\n },\n whitelist:['*']\n }).on('ready', function () {\n $previewPlayer.player.play = true;\n libs.refreshTooltips();\n });\n $previewPlayer.mask.show = false;\n var $fullscreen = false;\n //var $api = $gallery.ui.getFullscreenAPI();\n //$api.enter();\n $(\"body\").css('overflowY', 'hidden');\n $gallery.listen('close', function() {\n $(\"body\").css('overflowY', 'scroll');\n $container.remove();\n $previewPlayer.player.pause = true;\n $previewPlayer.destroy();\n if($smallPlayer) {\n $smallPlayer.player.play = true;\n }\n if(cback != undefined){\n cback();\n }\n });\n $gallery.listen('beforeResize', function() {\n if($fullscreen){\n $target.height($(window).height());\n }else{\n $target.height($(window).height());\n }\n $fullscreen = !$fullscreen;\n });\n }\n if($type == 'article'){\n if($documentKey != null){\n var $winHandle = window.open(window.location.origin + '/article/' + $documentKey,'nurseslounge_lounge_wall_article_popup_'+$documentKey);\n if ($winHandle != null){\n return false;\n }\n }\n var $articleDisabled = libs.isEmptyReturnNull($function) == null ? [] : $function.article.disabled;\n var $shareEl = false;\n var $shareButtons = [];\n if($.inArray('download', $articleDisabled) == -1){\n $shareEl = true;\n $shareButtons.push({\n id:'downloadOriginal',\n label:'Download Original',\n url:$preview+'?name='+$name+'&download=true',\n download:true\n });\n }\n var $chtml = '' +\n '
    ' +\n '
    ' +\n '
    ' +\n '
    ';\n $gallery = new PhotoSwipe($photoSwipeArticle[0], PhotoSwipeUI_Default,\n [\n {\n html: $chtml\n }\n ],\n {\n index: 0,\n clickToCloseNonZoomable: false,\n closeOnScroll: false,\n closeOnVerticalDrag:false,\n closeElClasses: [],\n history:false,\n shareEl: $shareEl,\n shareButtons: $shareButtons\n }\n );\n $gallery.init();\n var $container = $photoSwipeArticle.find('.preview-image-container');\n var $target = $container.find('.image:first');\n var $chtml = '';\n $chtml += '' +\n '
    ' +\n '
    ' +\n '
    ' +\n '
    ' +\n '
    ' +\n '
    ' +\n '
    ' +\n '
    ' +\n '
    ' +\n '
    ' +\n '

    '+$documentDate+'

    ' +\n '
    ' +\n '
    ' +\n ' \"profile\"' +\n '
    ' +\n '
    ' +\n '

    '+$userLongName+'

    ' +\n '
    ' +\n '
    ';\n if($articleSingleImage) {\n $chtml += '' +\n '
    ' +\n ' \"article' +\n '
    ';\n }\n $chtml += '' +\n '
    ';\n if($articleHeadline) {\n $chtml += '' +\n '

    ' + $articleHeadline + '

    ';\n }\n if($articleHtml){\n $chtml += $articleHtml;\n }\n $chtml += '' +\n '
    ' +\n '
    ' +\n '
    ' +\n '
    ' +\n '
    ' +\n '
    ';\n $.each($articleTags, function($i, $v){\n $chtml += '' +\n '
    '+$v.tag+'
    ';\n });\n $chtml += '' +\n '
    ' +\n '
    ' +\n '
    ' +\n '
    ' +\n '
    ' +\n '
    ' +\n '
    ';\n libs.checkImageLoad($($chtml).find('img'), function(){\n $target.html($chtml).promise().done(function(){\n $container.css('overflowY', 'auto')\n .css('height', '93vh')\n .css('margin', '1vh 0px');\n //var $api = $gallery.ui.getFullscreenAPI();\n //$api.enter();\n $(\"body\").css('overflowY', 'hidden');\n $gallery.listen('close', function() {\n $container.remove();\n $(\"body\").css('overflowY', 'scroll');\n if(cback != undefined){\n cback();\n }\n });\n var $scrollMousewheelBinding;\n $(window).unbind('mousewheel').bind('mousewheel', function($e){\n try{\n clearTimeout($scrollMousewheelBinding);\n }catch ($e) {\n\n }\n $scrollMousewheelBinding = setTimeout(function(){\n if($e.originalEvent.wheelDelta / 120 > 0) {\n if($container.length > 0){\n $container.animate({\n scrollTop:'-=280'\n });\n }\n }else{\n if($container.length > 0){\n $container.animate({\n scrollTop:'+=280'\n });\n }\n }\n }, 100);\n });\n });\n });\n }\n },\n };\n\n //nlWallMenu\n var $nlWallMenuDefaults = {\n wall_menu_options_modal:function(){\n return $(\"#nurseslounge-lounge-activity-options-modal\");\n },\n wall_menu_get:\"/lounge/activity/wallOptionsMenu/get\",\n wall_menu_set:\"/lounge/activity/wallOptions/set\",\n };\n if($nlWallMenuOptions != undefined){\n $nlWallMenuSettings = $.extend({}, $nlWallMenuDefaults, $nlWallMenuOptions);\n }else{\n $nlWallMenuSettings = $.extend({}, $nlWallMenuDefaults);\n }\n\n $nlWallMenuOriginal = $nlWallMenuDefaults;\n\n nlWallMenu = {\n init:function($id, $level, $options){\n $options = $options == undefined ? {} : $options;\n $options = $.extend({}, {\n wall_container:function(){\n return $(\"#nurseslounge-lounge-activity .nurseslounge-lounge-activity-left .wall-container\");\n },\n }, $options);\n nlWallMenu.get($id, $level, function($data){\n var $wallPost = $data.data.wall_post;\n var $dataOptions = $data.data.options;\n var $id = $wallPost && $wallPost.id;\n var $modal = $nlWallMenuSettings.wall_menu_options_modal();\n var $modalInfo = $modal.find('.modal-info:first');\n var $chtml = '';\n if(!$modal.is(':visible')) {\n $modal.unbind().on('hidden.bs.modal', function () {\n $(\"body\").css('overflowY', 'scroll');\n $modal.css('overflowY', 'hidden');\n var $player = libs.memoryGet('previewPlayer' + $id);\n if($player){\n $player.player.pause = true;\n $player.destroy();\n libs.memorySave('previewPlayer' + $id, false);\n }\n }).on('shown.bs.modal', function () {\n $(\"body\").css('overflowY', 'hidden');\n $modal.css('overflowY', 'scroll');\n })\n }\n $chtml = nlWallHtml.wall_menu_popup($wallPost, $dataOptions, 'readonly');\n $modalInfo.html(nlWallHtml.wall_menu_preload()).promise().done(function(){\n libs.checkImageLoad($($chtml).find('img'), function(){\n $modalInfo.html($chtml).promise().done(function(){\n nlWallMenu.preview($wallPost, $options, function(){\n nlWallMenu.events($id, $level, $wallPost, $options, function(){\n $modal.modal('show');\n });\n });\n });\n });\n });\n });\n },\n get:function($id, $level, cback){\n var $wallMenuGet = $nlWallMenuSettings.wall_menu_get;\n var $wallDebug = $nlWallSettings.wall_debug;\n var $withParams = $.extend({}, nlWallHelper.get_with_params(), {id:$id, level:$level});\n $.ajax({\n url:$wallMenuGet,\n method: \"POST\",\n cache:false,\n dataType: \"json\",\n data:$withParams,\n success: function ($data) {\n libs.expire($data);\n if($wallDebug){console.log($withParams);console.log($wallMenuGet);console.log($data);}\n cback($data);\n }\n });\n },\n preview:function($wallPost, $options, cback){\n var $modal = $nlWallMenuSettings.wall_menu_options_modal();\n var $target = $modal.find('.post-media');\n var $document = $wallPost && $wallPost.documents[0] && $wallPost.documents[0].document ? $wallPost.documents[0].document : null;\n if($document){\n var $id = $wallPost && $wallPost.id;\n var $type = $document ? $document.file_type : null;\n var $preview = $document ? $document.document_preview_root : null;\n var $thumb = $document ? $document.document_thumb_root : null;\n var $name = $document ? $document.name : null;\n var $documentId = $document ? $document.id : null;\n if($type == 'document') {\n setTimeout(function() {\n if(PDFObject.supportsPDFs){\n PDFObject.embed($preview, $target, {\n height: \"300px\",\n pdfOpenParams: {\n view: 'FitV',\n scrollbars: '0',\n toolbar: '0',\n statusbar: '0',\n navpanes: '0',\n page: '1'\n }\n });\n } else {\n $target.html('');\n }\n libs.refreshTooltips();\n }, 1000);\n }\n if($type == 'video') {\n $target.height(300);\n setTimeout(function(){\n var $player = new Artplayer({\n destroy: true,\n container: $target[0],\n title: $name,\n url: $preview + '?temporal=true',\n poster: $thumb,\n type: 'mp4',\n mutex: true,\n muted: false,\n play: true,\n pause: false,\n autoplay: true,\n toggle: false,\n //controls: [\n // {\n // position: 'right',\n // html: 'Fullscreen',\n // click: function () {\n // nlWallDocumentPreview.init($documentId);\n // },\n // },\n //],\n miniProgressBar: true,\n loop: true,\n fullscreen: false,\n fullscreenToggle: false,\n fullscreenWeb: false,\n fullscreenWebToggle: false,\n fullscreenRotate: false,\n fullscreenRotateToggle: false,\n moreVideoAttr: {\n crossOrigin: 'anonymous',\n playsInline: true,\n 'webkit-playsinline': true,\n 'x5-video-player-type': 'h5',\n 'x5-video-player-fullscreen': false,\n 'x5-video-orientation': 'portraint',\n },\n whitelist:['*']\n }).on('ready', function () {\n $player.player.pause = true;\n $player.player.play = true;\n libs.refreshTooltips();\n });\n $player.mask.show = false;\n libs.memorySave('previewPlayer' + $id, $player);\n }, 1000);\n }\n }\n cback();\n },\n events:function($id, $level, $wallPost, $options, cback){\n var $modal = $nlWallMenuSettings.wall_menu_options_modal();\n var $menuOptions = $modal.find('.menu-options .option');\n var $postContent = $modal.find('.post-content');\n var $postMedia = $modal.find('.post-media');\n var $postMediaCancel = $postMedia.find('.cancel');\n $menuOptions.unbind().click(function(){\n var $that = $(this);\n var $action = $that.data('action');\n switch($action){\n case 'delete':\n nlWallMenu.action($id, $level, $action, $options, function($dataWallSet){\n var $wallContainer = $options.wall_container();\n var $deletedIds = $dataWallSet.data.delete.deleted_ids;\n var $parentId = $dataWallSet.data.delete.parent_wall ? $dataWallSet.data.delete.parent_wall.id : null;\n var $commentsCount = $dataWallSet.data.delete.parent_wall ? $dataWallSet.data.delete.parent_wall.comments_count : 0;\n $modal.modal('hide');\n $wallContainer.find(\".item\").each(function(){\n var $this = $(this);\n var $id = $this.data('id');\n if($.inArray($id, $deletedIds) != -1){\n $wallContainer.find(\".thread[data-id='\"+$id+\"']\").fadeOut().remove();\n $wallContainer.find(\".comments[data-id='\"+$id+\"']\").fadeOut().remove();\n $wallContainer.find(\".item[data-id='\"+$id+\"']\").fadeOut().remove();\n if($parentId){\n $wallContainer.find(\".comments-count[data-id='\"+$parentId+\"']\").html($commentsCount);\n }\n }\n });\n });\n break;\n case 'edit':\n nlWallMenu.action($id, $level, $action, $options, function($dataWallSet) {\n nlWallMenu.edit($id, $level, $wallPost, $dataWallSet, $options);\n });\n break;\n case 'save':\n nlWallMenu.update($id, $level, $action, function($data){\n var $wallPost = $data.data.save.wall_post;\n var $chtml = '';\n if($level == 0){\n var $comments = $options.wall_container().find(\".comments[data-id='\"+$id+\"']\")[0].outerHTML;\n var $thread = $options.wall_container().find(\".open-thread[data-id='\"+$id+\"']\")[0].outerHTML;\n $chtml = nlWallHtml.wall_menu_update_post($wallPost);\n $options.wall_container().find(\".item[data-id='\"+$id+\"']\").replaceWith($chtml);\n $options.wall_container().find(\".comments[data-id='\"+$id+\"']\").replaceWith($comments);\n $options.wall_container().find(\".open-thread[data-id='\"+$id+\"']\").replaceWith($thread);\n }else{\n $chtml = nlWallHtml.wall_menu_update_thread($wallPost);\n $options.wall_container().find(\".item[data-id='\"+$id+\"']\").replaceWith($chtml);\n }\n if(!$notRun) {\n nlWall.init();\n }\n $modal.modal('hide');\n });\n break;\n case 'attach':\n nlWallUpdate.init({\n wall_update_button:false,\n wall_update_preload_target: function(){\n return $postMedia;\n },\n wall_update_target: function(){\n return $postMedia;\n },\n wall_update_text_area:function(){\n return $postContent;\n },\n on_close_modal_callback:function(){\n var $albumModal = $nlWallAlbumSettings.album_modal();\n $albumModal.modal('hide');\n var $optionsModal = $nlWallMenuSettings.wall_menu_options_modal();\n $optionsModal.modal('show');\n },\n on_end_callback:function(){\n var $updateModal = $nlWallUpdateSettings.wall_update_modal();\n $updateModal.modal('hide');\n var $optionsModal = $nlWallMenuSettings.wall_menu_options_modal();\n $optionsModal.modal('show');\n },\n get_data_callback:false,\n wall_update_skip:[]\n },function(){\n $modal.modal('hide');\n });\n break;\n case 'back':\n nlWallMenu.init($id, $level, $options);\n break;\n }\n });\n nlWallRecognizeUrl.init({\n wall_textarea: function(){\n return $postContent;\n },\n recognize_url_preload_target: function(){\n return $postMedia;\n },\n recognize_url_target: function(){\n return $postMedia;\n }\n }, function(){\n $postMediaCancel.unbind().click(function(){\n var $that = $(this);\n $that.parents('.attach:first').remove();\n });\n });\n libs.refreshTooltips();\n $modal.find('[data-link]').unbind().click(function() {\n var $that = $(this);\n var $link = $that.data('link');\n $modal.modal('hide');\n router.navigate($link,true);\n });\n if(cback != undefined){\n cback();\n }\n },\n action:function($id, $level, $action, $options, cback){\n var $modal = $nlWallMenuSettings.wall_menu_options_modal();\n var $wallMenuSet = $nlWallMenuSettings.wall_menu_set;\n var $wallDebug = $nlWallSettings.wall_debug;\n var $withParams = $.extend({}, nlWallHelper.get_with_params(), {id:$id, level:$level, action:$action});\n $.ajax({\n url:$wallMenuSet,\n method: \"POST\",\n cache:false,\n dataType: \"json\",\n data:$withParams,\n success: function ($data) {\n libs.expire($data);\n if($wallDebug){console.log($withParams);console.log($wallMenuSet);console.log($data);}\n if($data.status == 'success'){\n if($withParams.action == 'delete'){\n nurseslounge_lounge_activity.task_list_container(function($container){\n $params = $.extend({}, $params, {only:'owners'});\n nurseslounge_myDashboard_myProfile.task_list($container, $params);\n });\n }\n cback($data);\n }\n if($data.status == 'error'){\n $modal.modal('hide');\n }\n }\n });\n },\n edit:function($id, $level, $wallPost, $dataWallSet, $options){\n var $dataOptions = $dataWallSet.data.options;\n var $modal = $nlWallMenuSettings.wall_menu_options_modal();\n var $modalInfo = $modal.find('.modal-info:first');\n var $chtml = '';\n $chtml = nlWallHtml.wall_menu_popup($wallPost, $dataOptions);\n $modalInfo.html(nlWallHtml.wall_menu_preload()).promise().done(function() {\n libs.checkImageLoad($($chtml).find('img'), function(){\n $modalInfo.html($chtml).promise().done(function(){\n nlWallMenu.events($id, $level, $wallPost, $options);\n });\n });\n });\n },\n update:function($id, $level, $action, cback){\n var $modal = $nlWallMenuSettings.wall_menu_options_modal();\n var $postMedia = $modal.find('.post-media');\n var $postContent = $modal.find('.post-content');\n var $post = $postContent.val();\n var $urls = [];\n var $documents = [];\n $postMedia.find(\"> div\").each(function(){\n var $that = $(this);\n if($that.data('type') == 'website-thumb'){\n $urls.push($(this).data('url'));\n }\n if($that.data('type') == 'website-document'){\n $documents.push($(this).data('id'));\n }\n });\n nlWallMenu.set($id, $level, $post, $urls, $documents, 'save', cback);\n },\n set:function($id, $level, $post, $urls, $documents, $action, cback){\n var $modal = $nlWallMenuSettings.wall_menu_options_modal();\n var $wallMenuSet = $nlWallMenuSettings.wall_menu_set;\n var $wallDebug = $nlWallSettings.wall_debug;\n var $withParams = $.extend({}, nlWallHelper.get_with_params(), {id:$id, level:$level, post:$post, urls:$urls, documents:$documents, action:$action});\n $.ajax({\n url:$wallMenuSet,\n method: \"POST\",\n cache:false,\n dataType: \"json\",\n data:$withParams,\n success: function ($data) {\n libs.expire($data);\n if($wallDebug){console.log($withParams);console.log($wallMenuSet);console.log($data);}\n if($data.status == 'success'){\n cback($data);\n }\n if($data.status == 'error'){\n $modal.modal('hide');\n }\n }\n });\n },\n };\n\n if(!$notRun) {\n nlWall.init();\n }\n };\n $.fn.nurseslounge_lounge_wall_get = function($params, $search){\n var $arr = [];\n var $selected;\n $(window).nurseslounge_lounge_wall(\n $params,\n {},\n {},\n {},\n {},\n {},\n {},\n true\n );\n $arr.push(['nlWall', nlWall]);\n $arr.push(['nlWallRecognizeUrl', nlWallRecognizeUrl]);\n $arr.push(['nlWallUpdate', nlWallUpdate]);\n $arr.push(['nlWallAlbum', nlWallAlbum]);\n $arr.push(['nlWallDocumentPreview', nlWallDocumentPreview]);\n $arr.push(['nlWallMenuOriginal', $nlWallMenuOriginal]);\n $.each($arr, function($i, $v){\n if($v[0] == $search){\n $selected = $v[1];\n return false;\n }\n });\n return $selected;\n }\n})(jQuery);\n","var nurseslounge_lounges = {\n home:function($params){\n nurseslounge_myDashboard_recommendations.init($params);\n nurseslounge_myDashboard_accountSettings.init($params);\n nurseslounge_lounges.submenu($params, function(){\n if($params != null){\n var $menuIndex = $.inArray($params.typeName, ['employers','schools','nurseAssociations', 'states','specialties']);\n $(\".nav-underline a:eq(\"+$menuIndex+\")\").click();\n }else{\n $(\".nav-underline a:first\").click();\n }\n });\n },\n home_sub:function($params){\n nurseslounge_lounges_home.init($params);\n },\n open:function($params){\n $(\".nav-underline a\").each(function(){\n if($(this).data('id') == $params.typeName){\n $(\".nav-underline a\").removeClass('active');\n $(this).addClass('active');\n router.pause();\n router.navigate('/lounges/'+$params.typeName);\n router.resume();\n $params = $.extend({}, $params, {user_id:libs.memoryGet('user_id')});\n libs.subrender($params.typeName, 'nurseslounge_lounges', 'home_sub', {typeName:$params.typeName}, 'POST');\n nurseslounge_lounges.menu_selector();\n nurseslounge_lounges.refreshTopMenu();\n }\n });\n },\n refreshTopMenu:function(){\n $(\".top-area .main-menu li a\").each(function(){\n var $that = $(this);\n $that.unbind().click(function(){\n if($that.attr('data-navigo') != undefined){\n var $url = $that.data('url');\n var $lounges = $url.split('/')[0];\n var $typeName = $url.split('/')[1];\n if($lounges == 'lounges' && $.inArray($typeName, ['employers','schools','nurseAssociations', 'states','specialties']) != -1){\n var $params = $.extend({}, {typeName:$typeName}, {user_id:libs.memoryGet('user_id')});\n nurseslounge_lounges.open($params);\n }else{\n router.resolve($url);\n }\n }\n });\n });\n },\n submenu:function($params, cback){\n $(\".nav-underline a\").unbind().click(function(){\n $(\".nav-underline a\").removeClass('active');\n nurseslounge_lounges.submenu_open(this, $(this).data('url'), 'home_sub', {typeName:$(this).data('id')})\n });\n nurseslounge_lounges.menu_selector();\n nurseslounge_lounges.refreshTopMenu();\n cback();\n },\n submenu_open:function($this, $url, $module, $params){\n $($this).addClass('active');\n router.pause();\n router.navigate($url);\n router.resume();\n $params = $.extend({}, $params, {user_id:libs.memoryGet('user_id')});\n libs.subrender($url, 'nurseslounge_lounges', $module, $params, 'POST');\n },\n menu_selector:function(){\n libs.globalUrl();\n }\n};\n","var nurseslounge_lounges_home = {\n init:function($params){\n nurseslounge_lounges_home.lounges_home_first_load($params);\n $params = $.extend({},$params, {tab:'init'});\n nurseslounge_lounge_overview.information_lounge_get('init', $params, function($data) {\n nurseslounge_lounges_home.lounge_home_create_lounge($params, $data);\n });\n nurseslounge_lounges_home.banners_location(function($config){\n nurseslounge_myDashboard_myProfile.banners_engine($config);\n });\n nurseslounge_lounges_home.lounge_ads_location(function($config){\n nurseslounge_lounge_overview.lounge_ads_engine($config);\n });\n },\n lounges_home_first_load:function($params){\n var $loungeHomeLeft = $(\"#nurseslounge-lounges-home .nurseslounge-lounges-home-left\");\n var $loungeForm = $loungeHomeLeft.find('form');\n var $name = $loungeForm.find('input[name=\"name\"]');\n var $states = $loungeForm.find('select[name=\"states\"]');\n var $specialties = $loungeForm.find('select[name=\"specialties\"]');\n var $search = $loungeForm.find('.search');\n var $reset = $loungeForm.find('.reset');\n var $bindingSelector;\n try{\n $states.chosen('destroy');\n }catch (e) {}\n $states.chosen();\n $states.unbind();\n try{\n $specialties.chosen('destroy');\n }catch (e) {}\n $specialties.chosen();\n $specialties.unbind();\n nurseslounge_lounges_home.lounges_home_autocomplete(\n $name,\n $params,\n \"/lounges/home/autocomplete\",\n function($keyword){\n nurseslounge_lounges_home.lounges_home_search($params);\n }\n );\n $specialties.change(function(){\n try {\n clearTimeout($bindingSelector);\n }catch (e) {\n }\n $bindingSelector = setTimeout(function(){\n nurseslounge_lounges_home.lounges_home_search($params);\n }, 800);\n });\n $states.change(function(){\n try {\n clearTimeout($bindingSelector);\n }catch (e) {\n }\n $bindingSelector = setTimeout(function(){\n nurseslounge_lounges_home.lounges_home_search($params);\n }, 800);\n });\n $search.unbind().click(function(){\n nurseslounge_lounges_home.lounges_home_search($params);\n });\n $reset.unbind().click(function(){\n $loungeForm[0].reset();\n $specialties.find('option').prop('selected',false);\n $states.find('option').prop('selected',false);\n nurseslounge_lounges_home.lounges_home_search($params);\n });\n nurseslounge_lounges_home.lounges_home_search($params);\n },\n lounges_home_autocomplete:function($target, $data, $url, cback){\n try {\n $($target).autocomplete(\"destroy\");\n }catch (e) {\n }\n var $value = '';\n $($target).autocomplete({\n minLength\t:2,\n search\t\t: function(){\n $(this).addClass(\"ui-autocomplete-loading\");\n },\n open \t\t: function(){\n $(this).removeClass(\"ui-autocomplete-loading\");\n },\n source: function(request, response) {\n $.ajax({\n method: 'POST',\n url:$url,\n data:$.extend({\n keyword:$($target).val()\n }, $data),\n dataType: \"json\",\n success: function($data){\n libs.expire($data);\n $value = '';\n response($data);\n }\n });\n },\n create:function(){\n $(this).prev().remove();\n $(this).trigger(\"keypress.autocomplete\");\n },\n select: function (event, ui) {\n $value = ui.item.value;\n $(this).val($value);\n cback($value);\n return false;\n }\n }).keypress(function ($e) {\n if ($e.which == 13) {\n cback($(this).val());\n $(this).autocomplete(\"close\");\n }\n });\n },\n lounges_home_search:function($params){\n var $loungeHomeLeft = $(\"#nurseslounge-lounges-home .nurseslounge-lounges-home-left\");\n var $loungeForm = $loungeHomeLeft.find('form');\n var $name = $loungeForm.find('input[name=\"name\"]');\n var $specialties = $loungeForm.find('select[name=\"specialties\"]');\n var $states = $loungeForm.find('select[name=\"states\"]');\n var $loungeList = $loungeHomeLeft.find(\".lounge-list:first\");\n var $loungeListPreview = nurseslounge_lounges_home.lounge_preview();\n var $resultInfo = $loungeHomeLeft.find(\".result-info-count:first\");\n var $resultPreview = ' ';\n var $paginationNav = $loungeHomeLeft.find('.pagination-nav');\n var $paginationNavPreview = ' ';\n $params = $.extend({},$params,{\n name:$name.val(),\n states:$states.val(),\n specialties:$specialties.val()\n });\n $resultInfo.addClass('nurseslounge-lounge-home-preload').html($resultPreview);\n $paginationNav.addClass('nurseslounge-lounge-home-preload').html($paginationNavPreview);\n $loungeList.html($loungeListPreview).promise().done(function(){\n nurseslounge_lounges_home.lounge_pagination($params);\n });\n },\n lounge_preview:function(){\n var $chtml = '';\n for(var $i=1; $i<=10; $i++){\n $chtml+= '' +\n '
  • ' +\n '
    ' +\n '
    ' +\n '
    ' +\n '
    ' +\n '                 ' +\n '                 ' +\n '
    ' +\n '
    ' +\n '

    ' +\n '                   ' +\n '                   ' +\n '                   ' +\n '                   ' +\n '

    ' +\n '

    ' +\n '  ' +\n '

    ' +\n '
    ' +\n '
    ' +\n '
    ' +\n '
    ' +\n '
    ' +\n '
    ' +\n ' ' +\n ' ' +\n ' ' +\n ' ' +\n ' ' +\n '
    ' +\n '
    ' +\n '  ' +\n '
    ' +\n '
    ' +\n '                   ' +\n '
    ' +\n '
    ' +\n '
  • ';\n }\n return $chtml;\n },\n lounge_home_get:function($data, cback){\n $.ajax({\n url: \"/lounges/home/get\",\n method: \"POST\",\n cache:false,\n dataType: \"json\",\n data:$data,\n success: function ($data) {\n libs.expire($data);\n if($data.status == 'success'){\n cback($data);\n }\n }\n });\n },\n lounge_pagination:function($params){\n var $reload;\n var $loaded = false;\n var $afterFirstPagination = false;\n var $loungeHomeLeft = $(\"#nurseslounge-lounges-home .nurseslounge-lounges-home-left\");\n var $loungeList = $loungeHomeLeft.find(\".lounge-list:first\");\n var $paginationNav = $loungeHomeLeft.find('.pagination-nav');\n var $previewHeight = $loungeHomeLeft.find('.lounge-list .preview:first').innerHeight();\n var $loungeHeight = $loungeList.innerHeight();\n var $pageSize = Math.round(($loungeHeight/$previewHeight));\n var $resultInfo = $loungeHomeLeft.find(\".result-info-count:first\");\n var $saveParams = $params;\n var $paginationObj;\n try{\n $paginationObj = libs.memoryGet('lounge_pagination');\n if($paginationObj){\n $paginationObj.pagination('destroy');\n }\n }catch ($e) {\n }\n $paginationObj = $paginationNav.pagination({\n pageSize: $pageSize,\n showPageNumbers: true,\n showPrevious: true,\n showNext: true,\n showNavigator: true,\n showFirstOnEllipsisShow: true,\n showLastOnEllipsisShow: true,\n dataSource: window.location.protocol +'//'+ window.location.hostname + \"/lounges/home/get\",\n locator: 'data.lounges',\n ajax:{\n method: \"POST\",\n cache:false,\n dataType: \"json\",\n data:$params,\n beforeSend: function() {\n $loungeList.html(nurseslounge_lounges_home.lounge_preview());\n },\n complete:function($data){\n libs.expire($data.responseJSON);\n }\n },\n totalNumberLocator: function($data) {\n return $data.data.total;\n },\n callback: function($data, $pagination) {\n $loaded = true;\n var $title;\n switch ($params.typeName) {\n case 'employers':\n $title = 'Employers';\n break;\n case 'schools':\n $title = 'Schools';\n break;\n case 'nurseAssociations':\n $title = 'Nurse Associations';\n break;\n case 'states':\n $title = 'States';\n break;\n case 'specialties':\n $title = 'Specialties';\n break;\n }\n if($loungeList.length > 0 && $loungeList.offset().top > 0 && $afterFirstPagination){\n $('html, body').animate({scrollTop:$loungeList.offset().top - 100});\n }else{\n $afterFirstPagination = true;\n }\n var $pageNumber = $pagination.pageNumber;\n var $pageSize = $pagination.pageSize;\n var $totalNumber = $pagination.totalNumber;\n var $first = $totalNumber > 0 ? (($pageNumber-1) * $pageSize) + 1 : 0;\n var $last = $totalNumber > 0 ? ($first + $data.length - 1) : 0;\n $paginationNav.removeClass('nurseslounge-lounge-home-preload');\n $resultInfo.removeClass('nurseslounge-lounge-home-preload').html('Showing '+$first+' - '+$last+' of '+$totalNumber+' results for '+$title+'');\n var $chtml = nurseslounge_lounges_home.lounge_home_item_html($data);\n libs.checkImageLoad($($chtml).find('img'), function () {\n $loungeList.html('').html($chtml).promise().done(function () {\n nurseslounge_lounges_home.lounges_home_list_events($saveParams);\n });\n });\n }\n });\n libs.memorySave('lounge_pagination', $paginationObj);\n $reload = setTimeout(function(){\n if(!$loaded){\n nurseslounge_lounges_home.lounge_pagination($params);\n }else{\n clearTimeout($reload);\n }\n }, 150000);\n },\n lounge_home_item_html:function($lounges){\n var $chtml = '';\n var $userId = libs.memoryGet('user_id');\n $.each($lounges, function($i, $v){\n var $img = $v.logo_root_lounge;\n var $publicLink = $v.public_link;\n $chtml+='' +\n '
  • ' +\n '
    ' +\n '
    ' +\n '
    ' +\n '
    ' +\n ' \"lounge\"' +\n '
    ' +\n '
    ' +\n '

    ' +\n ' '+$v.name+'' +\n '

    ';\n if($v.lounge_type_id != 1 && $v.lounge_type_id != 2){\n $chtml+='' +\n '

    ' +\n $v.followers_count+ ' Followers' +\n '

    ';\n }\n $chtml+='' +\n '
    ' +\n '
    ' +\n '
    ' +\n '
    ';\n if($v.lounge_type_id == 1 || $v.lounge_type_id == 2){\n $chtml+='' +\n '
    ' +\n '
    ' +\n nurseslounge_lounges_home.add_stars($v.rating) +\n '
    ' +\n '
    ' +\n $v.rating + ' / 5 ' +\n '
    ' +\n '
    ';\n }else{\n $chtml+='' +\n '
    ' +\n '
    ' +\n '     ' +\n '
    ' +\n '
    ' +\n '     ' +\n '
    ' +\n '
    ';\n }\n if($userId != 'guest' && $v.lounge_type_id != 1 && $v.lounge_type_id != 2){\n if($v.my_follow) {\n $chtml +='';\n }else{\n $chtml+='';\n }\n }\n $chtml+='' +\n '
    ' +\n '
    ' +\n '
  • ';\n });\n return $chtml;\n },\n add_stars:function($rating){\n var $chtml = '';\n for(var $i=1; $i<=5; $i++) {\n var $star = $rating - $i;\n var $offsetOn;\n var $offsetOff;\n var $unique = libs.getUniqueId();\n if($star >= 0){\n $offsetOn = 100;\n $offsetOff = 0;\n }else if($star < 0 && $star > -1){\n $star = ($star * -1);\n $offsetOff = ($star * 100);\n $offsetOn = (100 - $offsetOff);\n }else{\n $offsetOn = 0;\n $offsetOff = 100;\n }\n $chtml += '' +\n '' +\n ' ' +\n ' ';\n if($offsetOn > 0) {\n $chtml += '' +\n '';\n }\n if($offsetOff > 0){\n $chtml += '' +\n '';\n }\n $chtml += '' +\n ' ' +\n ' ' +\n ' ' +\n '';\n }\n return $chtml;\n },\n lounges_home_list_events:function($params){\n var $loungeHomeLeft = $(\"#nurseslounge-lounges-home .nurseslounge-lounges-home-left\");\n var $loungeList = $loungeHomeLeft.find(\".lounge-list:first\");\n var $userId = libs.memoryGet('user_id');\n $loungeList.find(\".follow-action\").unbind().click(function($e){\n $e.stopPropagation();\n var $that = $(this);\n var $follow = !$that.hasClass('follow');\n var $item = $that.parents('.item:first');\n var $key = $item.data('key');\n var $params = {user_id:$userId, key:$key, follow:$follow};\n nurseslounge_lounges_home.lounges_home_list_follower_request($params, function($data){\n if($data.status == 'success'){\n var $follow = $data.data.follow;\n var $members = $data.data.members;\n $item.find('.lounge-followers:first').html($members+ ' Followers');\n if($follow){\n $item.find('.follow-action').removeClass('btn-save').removeClass('btnAnimate').addClass('btn-light').addClass('follow').html('Followed');\n }else{\n $item.find('.follow-action').removeClass('btn-light').removeClass('follow').addClass('btn-save').addClass('btnAnimate').html('Follow');\n }\n }\n });\n });\n $loungeList.find(\".open-lounge\").unbind().click(function(){\n var $key = $(this).parents('.item:first').data('key');\n var $publicLink = $(this).parents('.item:first').data('public_link');\n if($userId == 'guest'){\n window.open($publicLink,'_self');\n }else{\n router.navigate('/lounge/'+$key);\n }\n });\n },\n lounges_home_list_follower_request:function($params, cback){\n $.ajax({\n url: \"/lounges/home/follower/set\",\n method: \"POST\",\n cache:false,\n dataType: \"json\",\n data:$params,\n success: function ($data) {\n libs.expire($data);\n cback($data);\n }\n });\n },\n lounge_home_create_lounge:function($params, $data){\n var $isEmployer = $data && $data.data && $data.data.lounge && $data.data.lounge.lounge_type_id ? $data.data.lounge.lounge_type_id == 1 : false;\n var $isSchool = $data && $data.data && $data.data.lounge && $data.data.lounge.lounge_type_id ? $data.data.lounge.lounge_type_id == 2 : false;\n var $isSpecialty = $data && $data.data && $data.data.lounge && $data.data.lounge.lounge_type_id ? $data.data.lounge.lounge_type_id == 8 : false;\n var $thoughtLeaders = $data && $data.data && $data.data.lounge && $data.data.lounge.lounge_type_id ? $data.data.lounge.lounge_type_id == 9 : false;\n var $credential = $data && $data.data && $data.data.user_credential ? $data.data.user_credential : [];\n $isEmployer = !$isEmployer ? $params.typeName == 'employers' : $isEmployer;\n $isSchool = !$isSchool ? $params.typeName == 'schools' : $isSchool;\n $isSpecialty = !$isSpecialty ? $params.typeName == 'specialties' : $isSpecialty;\n $thoughtLeaders = !$thoughtLeaders ? $params.typeName == 'thoughtLeaders' : $thoughtLeaders;\n $credential = $credential.map(function($x){return parseInt($x);});\n var $createNewLoungeAccess = $.inArray(5, $credential) != -1 ? true : false;\n var $allowTabs = {\n 'information': $.inArray(7, $credential) != -1 ? true : false,\n 'otherNames': $.inArray(62, $credential) != -1 && !$thoughtLeaders ? true : false,\n 'specialties': $.inArray(80, $credential) != -1 && $isSpecialty || $.inArray(80, $credential) != -1 && $thoughtLeaders ? true : false,\n 'location': $.inArray(8, $credential) != -1 && !$thoughtLeaders ? true : false,\n 'multimedia': $.inArray(9, $credential) != -1 ? true : false,\n 'virtualTour': $.inArray(83, $credential) != -1 && !$thoughtLeaders ? true : false,\n 'recruiters': $.inArray(10, $credential) != -1 && !$thoughtLeaders ? true : false,\n 'owners': $.inArray(11, $credential) != -1 ? true : false,\n 'jobs': $.inArray(12, $credential) != -1 && $isEmployer || $.inArray(12, $credential) != -1 && $isSchool ? true : false,\n 'import': $.inArray(13, $credential) != -1 && $isEmployer || $.inArray(13, $credential) != -1 && $isSchool ? true : false,\n 'api': $.inArray(13, $credential) != -1 && $isEmployer || $.inArray(13, $credential) != -1 && $isSchool ? true : false,\n 'statistics': $.inArray(14, $credential) != -1 ? true : false,\n 'degrees': $.inArray(17, $credential) != -1 && $isSchool ? true : false,\n 'invite': $.inArray(24, $credential) != -1 ? true : false,\n 'inviteStatistics': $.inArray(28, $credential) != -1 ? true : false,\n 'inviteTemplates': $.inArray(66, $credential) != -1 ? true : false,\n 'createLogo': $.inArray(67, $credential) != -1 ? true : false,\n 'buyAds': $.inArray(71, $credential) != -1 && $isSchool ? true : false,\n 'sponsorDegrees': $.inArray(75, $credential) != -1 && $isSchool ? true : false,\n 'spotlightJobs': $.inArray(77, $credential) != -1 && !$isSchool && !$thoughtLeaders ? true : false,\n };\n var $allowTabsFiltered = $allowTabs;\n $allowTabs = {};\n $.each($allowTabsFiltered, function($k, $v) {var $newObj = {};$newObj[$k]=$v;if($v){$.extend($allowTabs, $newObj);}});\n var $nursesloungeLoungeHome = $(\"#nurseslounge-lounges-home\");\n var $loungeHomeRight = $nursesloungeLoungeHome.find('.nurseslounge-lounges-home-right:first .administrator:first');\n var $options = $loungeHomeRight.find('.option');\n $options.each(function(){\n var $that = $(this);\n var $action = $that.data('action');\n if(\n $createNewLoungeAccess && $action == 'create'\n ) {\n $that.unbind().click(function () {\n var $tab = null;\n $.each($allowTabs, function($i, $v){\n if($v){\n $tab = $i;\n return false;\n }\n });\n if($tab && $action == 'create'){\n nurseslounge_lounge_overview.information_administrator_select_tab($action, $tab, $allowTabs, $params, function () {\n $(\"#nurseslounge-lounge-information-edit-modal\").scrollTop(0);\n $(\"#nurseslounge-lounge-information-edit-modal\").modal('show');\n });\n }\n });\n }\n });\n },\n //Banners\n banners_location:function(cback){\n cback({\n 'banners':$(\"#nurseslounge-lounges-home .nurseslounge-lounges-home-right .banners\")\n });\n },\n lounge_ads_location:function(cback){\n cback({\n 'ads':$(\"#nurseslounge-lounges-home .nurseslounge-lounges-home-right .lounge-ads\")\n });\n },\n};\n","var nurseslounge_lounge = {\r\n overview:function($params){\r\n nurseslounge_myDashboard_recommendations.init($params);\r\n nurseslounge_myDashboard_accountSettings.init($params);\r\n nurseslounge_lounge_header.init($params, 'nurseslounge_lounge', 'overview');\r\n nurseslounge_lounge.submenu($params, function(){\r\n $(\".nav-underline a[data-id='overview']\").click();\r\n });\r\n },\r\n overview_sub:function($params){\r\n nurseslounge_lounge_overview.init($params);\r\n },\r\n activity:function($params){\r\n nurseslounge_myDashboard_recommendations.init($params);\r\n nurseslounge_myDashboard_accountSettings.init($params);\r\n nurseslounge_lounge_header.init($params, 'nurseslounge_lounge', 'activity');\r\n nurseslounge_lounge.submenu($params, function(){\r\n $(\".nav-underline a[data-id='activity']\").click();\r\n });\r\n },\r\n activity_sub:function($params){\r\n nurseslounge_lounge_activity.init($params);\r\n },\r\n nursingJobs:function($params){\r\n nurseslounge_myDashboard_recommendations.init($params);\r\n nurseslounge_myDashboard_accountSettings.init($params);\r\n nurseslounge_lounge_header.init($params, 'nurseslounge_lounge', 'nursingJobs');\r\n nurseslounge_lounge.submenu($params, function(){\r\n $(\".nav-underline a[data-id='nursingJobs']\").click();\r\n });\r\n },\r\n nursingJobs_sub:function($params){\r\n nurseslounge_lounge_nursingJobs.init($params);\r\n },\r\n nursingFacultyJobs:function($params){\r\n nurseslounge_myDashboard_recommendations.init($params);\r\n nurseslounge_myDashboard_accountSettings.init($params);\r\n nurseslounge_lounge_header.init($params, 'nurseslounge_lounge', 'nursingFacultyJobs');\r\n nurseslounge_lounge.submenu($params, function(){\r\n $(\".nav-underline a[data-id='nursingFacultyJobs']\").click();\r\n });\r\n },\r\n nursingFacultyJobs_sub:function($params){\r\n nurseslounge_lounge_nursingJobs.init($params);\r\n },\r\n ratingReviews:function($params){\r\n nurseslounge_myDashboard_recommendations.init($params);\r\n nurseslounge_myDashboard_accountSettings.init($params);\r\n nurseslounge_lounge_header.init($params, 'nurseslounge_lounge', 'ratingReviews');\r\n nurseslounge_lounge.submenu($params, function(){\r\n $(\".nav-underline a[data-id='ratingReviews']\").click();\r\n });\r\n },\r\n ratingReviews_sub:function($params){\r\n nurseslounge_lounge_ratingReviews.init($params);\r\n },\r\n calendar:function($params){\r\n nurseslounge_myDashboard_recommendations.init($params);\r\n nurseslounge_myDashboard_accountSettings.init($params);\r\n nurseslounge_lounge_header.init($params, 'nurseslounge_lounge', 'calendar');\r\n nurseslounge_lounge.submenu($params, function(){\r\n $(\".nav-underline a[data-id='calendar']\").click();\r\n });\r\n },\r\n calendar_sub:function($params){\r\n nurseslounge_lounge_calendar.init($params);\r\n },\r\n followers:function($params){\r\n nurseslounge_myDashboard_recommendations.init($params);\r\n nurseslounge_myDashboard_accountSettings.init($params);\r\n nurseslounge_lounge_header.init($params, 'nurseslounge_lounge', 'followers');\r\n nurseslounge_lounge.submenu($params, function(){\r\n $(\".nav-underline a[data-id='followers']\").click();\r\n });\r\n },\r\n followers_sub:function($params){\r\n nurseslounge_lounge_followers.init($params);\r\n },\r\n degrees:function($params){\r\n nurseslounge_myDashboard_recommendations.init($params);\r\n nurseslounge_myDashboard_accountSettings.init($params);\r\n nurseslounge_lounge_header.init($params, 'nurseslounge_lounge', 'degrees');\r\n nurseslounge_lounge.submenu($params, function(){\r\n $(\".nav-underline a[data-id='degrees']\").click();\r\n });\r\n },\r\n degrees_sub:function($params){\r\n nurseslounge_lounge_degrees.init($params);\r\n },\r\n submenu:function($params, cback){\r\n $(\".nav-underline a\").unbind().click(function(){\r\n $(\".nav-underline a\").removeClass('active');\r\n nurseslounge_lounge.submenu_open(this, $(this).data('url'), $(this).data('id')+'_sub', $params);\r\n });\r\n nurseslounge_lounge.menu_selector();\r\n var $notification = nurseslounge_lounge.notification_open($params, window.location.href.toString());\r\n if($notification.valid){\r\n var $open = '';\r\n switch($params.notification_type){\r\n case 'loungeWall':{$open = 'activity';break;}\r\n case 'loungeFollowers':{$open = 'followers';break;}\r\n case 'loungeReviews':{$open = 'ratingReviews';break;}\r\n //case 'degreeReviews':{$open = 'reviews';break;}\r\n }\r\n $(\".nav-underline a\").each(function(){\r\n var $that = $(this);\r\n if($that.data('id') == $open){\r\n $that.addClass('active')\r\n }\r\n });\r\n $params = $.extend({}, $params, {user_id:libs.memoryGet('user_id')});\r\n libs.subrender($notification.url, 'nurseslounge_lounge', $notification.module+'_sub', $params, 'POST');\r\n }else{\r\n cback();\r\n }\r\n },\r\n submenu_open:function($this, $url, $module, $params){\r\n $params = $.extend({}, $params, {\r\n user_id:libs.memoryGet('user_id'),\r\n notification_key:null,\r\n notification_type:null,\r\n notification_type_key:null,\r\n });\r\n $($this).addClass('active');\r\n router.pause();\r\n router.navigate($url);\r\n router.resume();\r\n libs.subrender($url, 'nurseslounge_lounge', $module, $params, 'POST');\r\n },\r\n notification_open:function($params, $location){\r\n var $notification = {};\r\n var $notificationData = [];\r\n if($params.notification_key){$notificationData.push($params.notification_key);}\r\n if($params.notification_type){$notificationData.push($params.notification_type);}\r\n if($params.notification_type_key){$notificationData.push($params.notification_type_key);}\r\n $notification.valid = $notificationData.length == 3;\r\n $notification.url = $location.replace('/notification/'+$notificationData.join('/'), '');\r\n var $url = $notification.url.split('/');\r\n $notification.module = $url[$url.length-1];\r\n return $notification;\r\n },\r\n menu_selector:function(){\r\n libs.globalUrl();\r\n }\r\n};\r\n","var nurseslounge_lounge_header = {\r\n init:function($params, $module, $submodule){\r\n $params = $.extend({}, $params, {user_id:libs.memoryGet('user_id')});\r\n nurseslounge_lounge_header.followers($params, $module, $submodule)\r\n },\r\n followers:function($params, $module, $submodule){\r\n var $followButton = $(\"#nurseslounge-lounge .follow-button\");\r\n $followButton.unbind().click(function(){\r\n nurseslounge_lounge_header.followers_request($params, function($data){\r\n if($data.status == 'success') {\r\n nurseslounge_lounge_header.followers_reload($params, $module, $submodule);\r\n }else{\r\n router.navigate('/lounges');\r\n }\r\n })\r\n });\r\n libs.memorySave('nurseslounge_lounge_header', {\r\n params:$params,\r\n module:$module,\r\n submodule:$submodule\r\n });\r\n },\r\n followers_request:function($params, cback){\r\n $.ajax({\r\n url: \"/lounge/header/followers/set\",\r\n method: \"POST\",\r\n cache:false,\r\n dataType: \"json\",\r\n data:$params,\r\n success: function ($data) {\r\n libs.expire($data);\r\n cback($data);\r\n }\r\n });\r\n },\r\n followers_reload:function($params, $module, $submodule){\r\n libs.refreshBoxFrom('.top-nav-menu', $params, function () {\r\n nurseslounge_lounge.submenu($params, function(){\r\n if($module && $submodule){\r\n eval($module + '.' + $submodule +'($params)');\r\n }\r\n if($(\"#nurseslounge-lounge-followers\").length > 0){\r\n nurseslounge_lounge_followers.init($params);\r\n }\r\n });\r\n });\r\n },\r\n followers_reload_last:function(){\r\n var $nursesloungeLoungeHeader = libs.memoryGet('nurseslounge_lounge_header');\r\n if($nursesloungeLoungeHeader){\r\n nurseslounge_lounge_header.followers_reload($nursesloungeLoungeHeader.params, $nursesloungeLoungeHeader.module, $nursesloungeLoungeHeader.submodule);\r\n }\r\n }\r\n};\r\n","var nurseslounge_lounge_overview = {\n init:function($params, cback){\n $params = $.extend({},$params, {tab:'init'});\n nurseslounge_lounge_overview.information_lounge_get('init', $params, function($data){\n switch ($data.data.lounge.lounge_type_id){\n case 1:\n $params = $.extend({},$params, {typeName:'employers'});\n break;\n case 2:\n $params = $.extend({},$params, {typeName:'schools'});\n break;\n case 3:\n $params = $.extend({},$params, {typeName:'states'});\n break;\n case 6:\n $params = $.extend({},$params, {typeName:'nurseAssociations'});\n break;\n case 8:\n $params = $.extend({},$params, {typeName:'specialties'});\n break;\n case 9:\n $params = $.extend({},$params, {typeName:'thoughtLeaders'});\n break;\n }\n nurseslounge_lounge_overview.information_administrator_edit($params, $data);\n nurseslounge_lounge_overview.information_location_video($data);\n nurseslounge_lounge_overview.information_virtual_tour($data);\n if(\n $data.data.lounge.lounge_type_id == 1 || //employer\n $data.data.lounge.lounge_type_id == 2 //school\n ){\n nurseslounge_lounge_overview.information_rating($params, $data);\n }\n try{\n google.maps.event.addListener(window, \"load\", nurseslounge_lounge_overview.information_location_map($data));\n }catch (e) {\n\n }\n if(cback != undefined){\n cback($data);\n }\n });\n nurseslounge_lounge_overview.banners_location(function($config){\n nurseslounge_myDashboard_myProfile.banners_engine($config);\n });\n nurseslounge_lounge_overview.task_list_container(function($container){\n $params = $.extend({}, $params, {only:'owners'});\n nurseslounge_myDashboard_myProfile.task_list($container, $params);\n });\n nurseslounge_lounge_overview.claim_lounge_container(function($container){\n nurseslounge_lounge_overview.claim_lounge($container, $params);\n });\n nurseslounge_lounge_overview.information_meet_our_recruiters(function($config){\n nurseslounge_lounge_overview.information_meet_our_recruiters_engine($config);\n });\n nurseslounge_lounge_overview.report_container(function($container){\n nurseslounge_lounge_overview.report($container, $params);\n });\n nurseslounge_lounge_overview.lounge_ads_location(function($config){\n nurseslounge_lounge_overview.lounge_ads_engine($config);\n });\n },\n information_lounge_get:function($action, $params, cback){\n $.ajax({\n url: \"/lounge/get\",\n method: \"POST\",\n cache:false,\n dataType: \"json\",\n data:$.extend({},$params, {action:$action}),\n success: function ($data) {\n libs.expire($data);\n if($data.status == 'error'){\n $(\"#nurseslounge-lounge-information-edit-modal\").modal('hide');\n $(\"#nurseslounge-lounge-information-review-modal\").modal('hide');\n }\n cback($data);\n }\n });\n },\n information_rating:function($params, $data){\n var $typeId = $data.data.lounge.lounge_type_id ? $data.data.lounge.lounge_type_id : 0;\n var $nursesloungeLoungeInformation = $(\"#nurseslounge-lounge-information\");\n var $reviewModal = $(\"#nurseslounge-lounge-information-review-modal\");\n var $loungeInformationRight = $nursesloungeLoungeInformation.find('.nurseslounge-lounge-information-right:first');\n var $ratingFirst = $loungeInformationRight.find('.rating-stars:first');\n var $ratingCount = $loungeInformationRight.find('.rating-count:first');\n var $addReviewFirst = $loungeInformationRight.find('.add-review:first');\n var $deleteReviewFirst = $loungeInformationRight.find('.delete-review:first');\n $ratingFirst.unbind().click(function(){\n router.navigate('/lounge/'+$params.key+'/ratingReviews');\n });\n $ratingCount.unbind().click(function(){\n nurseslounge_lounge_overview.information_review($typeId, $params, $data, function(){\n libs.refreshBoxFrom('.review-box', $params, function(){\n nurseslounge_lounge_overview.init($params);\n $reviewModal.modal('hide');\n });\n });\n });\n $addReviewFirst.unbind().click(function(){\n nurseslounge_lounge_overview.information_review($typeId, $params, $data, function(){\n libs.refreshBoxFrom('.review-box', $params, function(){\n nurseslounge_lounge_overview.init($params);\n $reviewModal.modal('hide');\n });\n });\n });\n $deleteReviewFirst.unbind().click(function(){\n if(confirm('Are you sure you want to delete your review?')){\n nurseslounge_lounge_overview.information_remove_review($params, function(){\n libs.refreshBoxFrom('.review-box', $params, function(){\n nurseslounge_lounge_overview.init($params);\n $reviewModal.modal('hide');\n });\n });\n }\n });\n },\n information_review:function($typeId, $params, $data, executed){\n var $reviewModal = $(\"#nurseslounge-lounge-information-review-modal\");\n var $contentDiv = $reviewModal.find('.content:first');\n nurseslounge_lounge_overview.information_review_form($params, 'msg',function($chtml){\n $contentDiv.html($chtml).promise().done(function(){\n var $agreeCheckbox = $reviewModal.find('input[name=\"agree\"]');\n var $startBtn = $reviewModal.find('.start-btn');\n $agreeCheckbox.unbind().click(function(){\n if($agreeCheckbox.is(':checked')){\n nurseslounge_lounge_overview.information_review_count_down(function(){\n var $part;\n switch($typeId){\n case 1:\n $part = 'employer';\n break;\n case 2:\n $part = 'school';\n break;\n }\n $params = $.extend({},$params, {type:$part});\n nurseslounge_lounge_overview.information_review_form($params, $part,function($chtml){\n var $userId = libs.memoryGet('user_id');\n $contentDiv.html($chtml).promise().done(function(){\n if($part == 'employer'){\n nurseslounge_lounge_overview.information_review_employer_events($params, $data, null, function(){\n nurseslounge_myDashboard_accountSettings.coins({user_id:$userId});\n executed();\n });\n }\n if($part == 'school'){\n nurseslounge_lounge_overview.information_review_school_events($params, $data, null, function(){\n nurseslounge_myDashboard_accountSettings.coins({user_id:$userId});\n executed();\n });\n }\n });\n });\n });\n }else{\n $startBtn.prop('disabled', true);\n }\n });\n $reviewModal.modal('show');\n });\n });\n },\n information_remove_review:function($params, cback){\n $.ajax({\n url: \"/lounge/reviews/delete\",\n method: \"POST\",\n cache:false,\n dataType: \"json\",\n data:$params,\n success: function ($data) {\n libs.expire($data);\n if($data.status == 'error'){\n $(\"#nurseslounge-lounge-information-edit-modal\").modal('hide');\n $(\"#nurseslounge-lounge-information-review-modal\").modal('hide');\n }\n cback($data);\n }\n });\n },\n information_review_count_down:function(cback){\n var $reviewModal = $(\"#nurseslounge-lounge-information-review-modal\");\n var $startBtn = $reviewModal.find('.start-btn');\n $startBtn.prop('disabled', false);\n $startBtn.unbind().click(function(){\n cback();\n });\n },\n information_review_form:function($params, $part, cback){\n $params = $.extend({},$params, {user_id:libs.memoryGet('user_id'),part:$part});\n $.ajax({\n type: 'POST',\n url: '/lounge/informationReviewView/get',\n data:$params,\n method: \"POST\",\n cache:false,\n dataType: \"html\",\n success: function ($data) {\n libs.expire($data);\n if($data.status == 'error'){\n $(\"#nurseslounge-lounge-information-edit-modal\").modal('hide');\n $(\"#nurseslounge-lounge-information-review-modal\").modal('hide');\n }\n cback($data);\n }\n });\n },\n\n information_review_employer_events:function($params, $data, cback, executed){\n var $lounge = $data.data.lounge;\n var $myReview = $lounge.my_review;\n var $reviewModal = $(\"#nurseslounge-lounge-information-review-modal\");\n var $ratingStars = $reviewModal.find('.rating-stars:first');\n var $ratingCount = $reviewModal.find('.rating-count:first');\n var $overallInput = $reviewModal.find('input[name=\"overallRating\"]');\n var $form = $reviewModal.find('form:first');\n //Fill\n var $loungeReview = libs.memoryGet('review');\n var $overallRatingVal = $loungeReview.overallRating ? $loungeReview.overallRating : $myReview && $myReview.overall_rating ? $myReview.overall_rating : 0;\n var $recommendToFriendVal = $loungeReview.recommendToFriend ? $loungeReview.recommendToFriend : $myReview && $myReview.recommend_to_friend ? $myReview.recommend_to_friend : '';\n var $jobTitle = $loungeReview.jobTitle ? $loungeReview.jobTitle : $myReview && $myReview.job_title ? $myReview.job_title : '';\n var $facility = $loungeReview.facility ? $loungeReview.facility : $myReview && $myReview.facility ? $myReview.facility : '';\n $facility = $facility == 'Other' && $loungeReview.otherFacility ? $loungeReview.otherFacility : $facility;\n var $prosCons = $loungeReview.prosCons ? $loungeReview.prosCons : $myReview && $myReview.pros_cons ? $myReview.pros_cons : '';\n var $otherFacilityDiv = $reviewModal.find('.other-facility');\n var $selectFacility = $reviewModal.find('select[name=\"facility\"]');\n var $otherFacility = $reviewModal.find('input[name=\"otherFacility\"]');\n if($recommendToFriendVal != ''){\n $reviewModal.find('input[name=\"recommendToFriend\"][value='+$recommendToFriendVal+']').attr('checked', 'checked');\n }\n if($jobTitle != ''){\n $reviewModal.find('input[name=\"jobTitle\"]').val($jobTitle);\n }\n if($prosCons != ''){\n $reviewModal.find('textarea[name=\"prosCons\"]').val($prosCons);\n }\n if($facility != ''){\n var $facilityOption = $selectFacility.find('option');\n var $facilities = $.map($facilityOption ,function($option) {\n return $option.value;\n });\n var $facilityExist = $.inArray($facility, $facilities) != -1 ? true : false;\n if($facilityExist){\n if(!$otherFacilityDiv.hasClass('d-none')){\n $otherFacilityDiv.addClass('d-none');\n }\n $selectFacility.val($facility);\n }else{\n if($otherFacilityDiv.hasClass('d-none')){\n $otherFacilityDiv.removeClass('d-none');\n }\n $selectFacility.val('Other');\n $otherFacility.val($facility);\n }\n }\n $selectFacility.unbind().change(function(){\n var $that = $(this);\n var $val = $that.val();\n if($val != ''){\n if($val == 'Other'){\n if($otherFacilityDiv.hasClass('d-none')){\n $otherFacilityDiv.removeClass('d-none');\n }\n }else{\n if(!$otherFacilityDiv.hasClass('d-none')){\n $otherFacilityDiv.addClass('d-none');\n }\n }\n $otherFacility.val('');\n }\n });\n $ratingStars.html(nurseslounge_lounge_overview.add_stars($overallRatingVal));\n $ratingCount.html('

    '+$overallRatingVal+' / 5 Star

    ');\n $overallInput.val($overallRatingVal);\n //Events\n nurseslounge_lounge_overview.information_review_employer_events_validate(function($form){\n $params = $.extend({}, $params, libs.getObjForm($form));\n nurseslounge_lounge_overview.information_form_request($params, function($data){\n executed();\n });\n });\n var $ratingStarsSvg = $ratingStars.find('svg');\n $ratingStarsSvg.unbind().click(function($event){\n var $that = $(this);\n var $left = $event.clientX - $that.offset().left;\n var $width = $that.width();\n var $leftColor = ($left * 100) / $width;\n var $rightColor = 100 - $leftColor;\n var $url = $that.attr('fill');\n $url = $url.replace('url(#','').replace(')','');\n var $percentReviewId = $url.replace('percentReview','');\n var $totalPercent = 500;\n var $actualPercent = 0;\n for(var $x=1;$x<=5;$x++){\n var $chtml = '';\n var $leftPercent;\n var $rightPercent;\n if($x == $percentReviewId){\n //$leftPercent = $leftColor < 15 ? 0 : $leftColor > 85 ? 100 : $leftColor;\n $leftPercent = $leftColor < 15 ? 0 : 100;\n $rightPercent = $rightColor;\n $actualPercent+= $leftPercent;\n }\n if($x < $percentReviewId){\n $leftPercent = 100;\n $rightPercent = 0;\n //$actualPercent+= $leftPercent;\n $actualPercent+= 100;\n }\n if($x > $percentReviewId){\n $leftPercent = 0;\n $rightPercent = 100;\n //$actualPercent+= $leftPercent;\n $actualPercent+= 0;\n }\n if($leftPercent > 10) {\n $chtml += '' +\n '';\n }\n if($rightPercent > 10) {\n $chtml += '' +\n '';\n }\n $(\"#percentReview\"+$x).html($chtml);\n }\n var $selectedPercent = ($actualPercent/$totalPercent) * 5;\n $selectedPercent = Math.ceil($selectedPercent * 10) / 10;\n $selectedPercent > 0 ? $selectedPercent.toFixed(1) : 0;\n $ratingCount.html('

    '+$selectedPercent+' / 5 Star

    ');\n $overallInput.val($selectedPercent);\n $form.find('.invalid-feedback').hide();\n $form.find('.error').removeClass('error');\n $form.find('.is-invalid').removeClass('is-invalid');\n });\n if(cback != undefined){\n cback();\n }\n },\n add_stars:function($rating){\n var $chtml = '';\n for(var $i=1; $i<=5; $i++) {\n var $star = $rating - $i;\n var $offsetOn;\n var $offsetOff;\n if($star >= 0){\n $offsetOn = 100;\n $offsetOff = 0;\n }else if($star < 0 && $star > -1){\n $star = ($star * -1);\n $offsetOff = ($star * 100);\n $offsetOn = (100 - $offsetOff);\n }else{\n $offsetOn = 0;\n $offsetOff = 100;\n }\n $chtml += '' +\n '' +\n ' ' +\n ' ';\n if($offsetOn > 0) {\n $chtml += '' +\n '';\n }\n if($offsetOff > 0){\n $chtml += '' +\n '';\n }\n $chtml += '' +\n ' ' +\n ' ' +\n ' ' +\n '';\n }\n return $chtml;\n },\n information_review_employer_events_validate:function(cback){\n $.validator.addMethod(\"greaterThanZero\", function($val) {\n return parseFloat($val) > 0;\n },'Must be greater than zero.');\n var $validator;\n try {\n $validator = $(\"#nurseslounge-lounge-information-review-modal form:first\").validate();\n $validator.destroy();\n }catch (e) {\n\n }\n $validator = $(\"#nurseslounge-lounge-information-review-modal form:first\").validate({\n onsubmit: true,\n debug: true,\n ignore: \"*:not(.validate)\",\n rules: {\n overallRating: {\n required: true,\n greaterThanZero: true\n },\n recommendToFriend: {\n required: true\n },\n jobTitle: {\n required: true\n },\n facility: {\n required: true\n },\n otherFacility: {\n required: function(){\n var $form = $(\"#nurseslounge-lounge-information-review-modal form:first\");\n return $form.find('select[name=\"facility\"]').val() == 'Other';\n }\n },\n prosCons: {\n required: false\n }\n },\n messages: {\n overallRating: {\n required: \"The overall rating is not required\",\n greaterThanZero: \"The overall rating must be greater than 0\",\n },\n recommendToFriend: {\n required: \"The recommend to a friend is required\"\n },\n jobTitle: {\n required: \"The job title is required\"\n },\n facility: {\n required: \"The facility is required\"\n },\n otherFacility: {\n required: \"The other facility is required\"\n },\n prosCons: {\n required: \"The pros and cons is not required\"\n },\n },\n errorPlacement: function($error, $element){\n var $ele = $($element);\n var $name = $ele.attr(\"name\");\n if(!$ele.hasClass('is-invalid')){\n $ele.addClass('is-invalid');\n }\n $(\".\"+$name+\"_validate\").html($($error).text()).show();\n },\n success: function($error, $element) {\n var $ele = $($element);\n var $name = $ele.attr(\"name\");\n if($ele.hasClass('is-invalid')){\n $ele.removeClass('is-invalid');\n }\n $(\".\"+$name+\"_validate\").html('').hide();\n },\n submitHandler: function($form) {\n cback($form);\n return false;\n }\n });\n },\n information_review_school_events:function($params, $data, cback, executed){\n var $userProfileId = $data.data.user_profile_id;\n var $lounge = $data.data.lounge;\n var $myReview = $lounge.my_review;\n var $reviewModal = $(\"#nurseslounge-lounge-information-review-modal\");\n var $ratingStars = $reviewModal.find('.rating-stars:first');\n var $ratingCount = $reviewModal.find('.rating-count:first');\n var $overallInput = $reviewModal.find('input[name=\"overallRating\"]');\n var $form = $reviewModal.find('form:first');\n //Fill\n var $loungeReview = libs.memoryGet('review');\n var $currentProfileId = $loungeReview.currentProfileId ? $loungeReview.currentProfileId : $myReview && $myReview.current_profile_id ? $myReview.current_profile_id : $userProfileId;\n var $jobTitle = $loungeReview.jobTitle ? $loungeReview.jobTitle : $myReview && $myReview.job_title ? $myReview.job_title : '';\n var $overallRatingVal = $loungeReview.overallRating ? $loungeReview.overallRating : $myReview && $myReview.overall_rating ? $myReview.overall_rating : 0;\n var $recommendToFriendVal = $loungeReview.recommendToFriend ? $loungeReview.recommendToFriend : $myReview && $myReview.recommend_to_friend ? $myReview.recommend_to_friend : '';\n var $schoolDegreeVal = $loungeReview.schoolDegree ? $loungeReview.schoolDegree : $myReview && $myReview.school_degree ? $myReview.school_degree : '';\n $schoolDegreeVal = $schoolDegreeVal == 'Other' && $loungeReview.otherSchoolDegree ? $loungeReview.otherSchoolDegree : $schoolDegreeVal;\n var $prosCons = $loungeReview.prosCons ? $loungeReview.prosCons : $myReview && $myReview.pros_cons ? $myReview.pros_cons : '';\n var $otherDegreeDiv = $reviewModal.find('.other-degree');\n var $schoolRelationship = $reviewModal.find('select[name=\"schoolRelationship\"]');\n var $selectDegree = $reviewModal.find('select[name=\"schoolDegree\"]');\n var $otherDegree = $reviewModal.find('input[name=\"otherSchoolDegree\"]');\n var $nurseWrapperDiv = $reviewModal.find('.nurse-wrapper');\n var $nurseFacultyWrapperDiv = $reviewModal.find('.nurse-faculty-wrapper');\n if($recommendToFriendVal != ''){\n $reviewModal.find('input[name=\"recommendToFriend\"][value='+$recommendToFriendVal+']').attr('checked', 'checked');\n }\n if($prosCons != ''){\n $reviewModal.find('textarea[name=\"prosCons\"]').val($prosCons);\n }\n if($jobTitle != ''){\n $reviewModal.find('input[name=\"jobTitle\"]').val($jobTitle);\n }\n if($schoolDegreeVal != ''){\n var $degreeOption = $selectDegree.find('option');\n var $degrees = $.map($degreeOption ,function($option) {\n return $option.value;\n });\n var $degreeExist = $.inArray($schoolDegreeVal, $degrees) != -1 ? true : false;\n if($degreeExist){\n if(!$otherDegreeDiv.hasClass('d-none')){\n $otherDegreeDiv.addClass('d-none');\n }\n $selectDegree.val($schoolDegreeVal);\n }else{\n if($otherDegreeDiv.hasClass('d-none')){\n $otherDegreeDiv.removeClass('d-none');\n }\n $selectDegree.val('Other');\n $otherDegree.val($schoolDegreeVal);\n }\n }\n $selectDegree.unbind().change(function(){\n var $that = $(this);\n var $val = $that.val();\n if($val != ''){\n if($val == 'Other'){\n if($otherDegreeDiv.hasClass('d-none')){\n $otherDegreeDiv.removeClass('d-none');\n }\n }else{\n if(!$otherDegreeDiv.hasClass('d-none')){\n $otherDegreeDiv.addClass('d-none');\n }\n }\n $otherDegree.val('');\n }\n });\n $ratingStars.html(nurseslounge_lounge_overview.add_stars($overallRatingVal));\n $ratingCount.html('

    '+$overallRatingVal+' / 5 Star

    ');\n $overallInput.val($overallRatingVal);\n $schoolRelationship.unbind().change(function(){\n var $that = $(this);\n var $val = $that.val();\n $nurseFacultyWrapperDiv.hide();\n $nurseWrapperDiv.hide();\n switch($val){\n case 'nurse_faculty':\n $nurseFacultyWrapperDiv.show();\n break;\n case 'nurse':\n $nurseWrapperDiv.show();\n break;\n }\n });\n if($currentProfileId == 5){\n $schoolRelationship.val('nurse_faculty').change();\n }else{\n $schoolRelationship.val('nurse').change();\n }\n //Events\n nurseslounge_lounge_overview.information_review_school_events_validate(function($form){\n $params = $.extend({}, $params, libs.getObjForm($form));\n nurseslounge_lounge_overview.information_form_request($params, function($data){\n executed();\n });\n });\n var $ratingStarsSvg = $ratingStars.find('svg');\n $ratingStarsSvg.unbind().click(function($event){\n var $that = $(this);\n var $left = $event.clientX - $that.offset().left;\n var $width = $that.width();\n var $leftColor = ($left * 100) / $width;\n var $rightColor = 100 - $leftColor;\n var $url = $that.attr('fill');\n $url = $url.replace('url(#','').replace(')','');\n var $percentReviewId = $url.replace('percentReview','');\n var $totalPercent = 500;\n var $actualPercent = 0;\n for(var $x=1;$x<=5;$x++){\n var $chtml = '';\n var $leftPercent;\n var $rightPercent;\n if($x == $percentReviewId){\n //$leftPercent = $leftColor < 15 ? 0 : $leftColor > 85 ? 100 : $leftColor;\n $leftPercent = $leftColor < 15 ? 0 : 100;\n $rightPercent = $rightColor;\n $actualPercent+= $leftPercent;\n }\n if($x < $percentReviewId){\n $leftPercent = 100;\n $rightPercent = 0;\n //$actualPercent+= $leftPercent;\n $actualPercent+= 100;\n }\n if($x > $percentReviewId){\n $leftPercent = 0;\n $rightPercent = 100;\n //$actualPercent+= $leftPercent;\n $actualPercent+= 0;\n }\n if($leftPercent > 10) {\n $chtml += '' +\n '';\n }\n if($rightPercent > 10) {\n $chtml += '' +\n '';\n }\n $(\"#percentReview\"+$x).html($chtml);\n }\n var $selectedPercent = ($actualPercent/$totalPercent) * 5;\n $selectedPercent = Math.ceil($selectedPercent * 10) / 10;\n $selectedPercent > 0 ? $selectedPercent.toFixed(1) : 0;\n $ratingCount.html('

    '+$selectedPercent+' / 5 Star

    ');\n $overallInput.val($selectedPercent);\n $form.find('.invalid-feedback').hide();\n $form.find('.error').removeClass('error');\n $form.find('.is-invalid').removeClass('is-invalid');\n });\n if(cback != undefined){\n cback();\n }\n },\n information_review_school_events_validate:function(cback){\n $.validator.addMethod(\"greaterThanZero\", function($val) {\n return parseFloat($val) > 0;\n },'Must be greater than zero.');\n var $validator;\n try {\n $validator = $(\"#nurseslounge-lounge-information-review-modal form:first\").validate();\n $validator.destroy();\n }catch (e) {\n\n }\n $validator = $(\"#nurseslounge-lounge-information-review-modal form:first\").validate({\n onsubmit: true,\n debug: true,\n ignore: \"*:not(.validate)\",\n rules: {\n overallRating: {\n required: true,\n greaterThanZero: true\n },\n recommendToFriend: {\n required: true\n },\n schoolDegree: {\n required: function(){\n return $(\"#nurseslounge-lounge-information-review-modal form:first .nurse-wrapper:first\").is(':visible');\n }\n },\n otherSchoolDegree: {\n required: function(){\n var $form = $(\"#nurseslounge-lounge-information-review-modal form:first\");\n return $form.find('select[name=\"schoolDegree\"]').val() == 'Other';\n }\n },\n jobTitle:{\n required: function(){\n return $(\"#nurseslounge-lounge-information-review-modal form:first .nurse-faculty-wrapper:first\").is(':visible');\n }\n },\n prosCons: {\n required: false\n },\n },\n messages: {\n overallRating: {\n required: \"The overall rating is required\",\n greaterThanZero: \"The overall rating must be greater than 0\",\n },\n recommendToFriend: {\n required: \"The recommend to a friend is required\"\n },\n schoolDegree: {\n required: \"The school degree is required\"\n },\n otherSchoolDegree: {\n required: \"The other school degree is required\"\n },\n jobTitle: {\n required: \"The job title is required\"\n },\n prosCons: {\n required: \"The pros and cons is not required\"\n },\n },\n errorPlacement: function($error, $element){\n var $ele = $($element);\n var $name = $ele.attr(\"name\");\n if(!$ele.hasClass('is-invalid')){\n $ele.addClass('is-invalid');\n }\n $(\".\"+$name+\"_validate\").html($($error).text()).show();\n },\n success: function($error, $element) {\n var $ele = $($element);\n var $name = $ele.attr(\"name\");\n if($ele.hasClass('is-invalid')){\n $ele.removeClass('is-invalid');\n }\n $(\".\"+$name+\"_validate\").html('').hide();\n },\n submitHandler: function($form) {\n cback($form);\n return false;\n }\n });\n },\n\n information_form_request:function($params, cback){\n $.ajax({\n url: \"/lounge/reviews/set\",\n method: \"POST\",\n cache:false,\n dataType: \"json\",\n data:$params,\n success: function ($data) {\n libs.expire($data);\n if($data.status == 'error'){\n $(\"#nurseslounge-lounge-information-edit-modal\").modal('hide');\n $(\"#nurseslounge-lounge-information-review-modal\").modal('hide');\n }\n cback($data);\n }\n });\n },\n\n information_location_map:function($data){\n var $location = $data && $data.data && $data.data.lounge && $data.data.lounge.location ? $data.data.lounge.location : null;\n if($location && $location.address_latitude && $location.address_longitude && $location.address_is_unmappable == 0){\n var $position = new google.maps.LatLng(parseFloat($location.address_latitude), parseFloat($location.address_longitude));\n var $iconUrl = './../../bimg/NursesLounge/active.png';\n var $map = new google.maps.Map(document.getElementById('nurseslounge-lounge-information-right-map'), {\n center:$position,\n mapTypeId: google.maps.MapTypeId.ROADMAP,\n mapTypeControl: false,\n streetViewControl: false,\n fullscreenControl: false,\n zoom: 15\n });\n $map.setTilt(0);\n var $marker = new google.maps.Marker({\n position:$position,\n map: $map,\n animation: google.maps.Animation.DROP,\n icon: {url:$iconUrl, scaledSize: (new google.maps.Size(20, 35))},\n });\n }\n },\n information_location_video:function($data){\n var $lounge = $data.data.lounge;\n var $nursesloungeLoungeInformation = $(\"#nurseslounge-lounge-information\");\n var $loungeInformationLeft = $nursesloungeLoungeInformation.find('.nurseslounge-lounge-information-left:first');\n var $youtubeVideo = $loungeInformationLeft.find('.youtube-video:first');\n var $myVideo = $loungeInformationLeft.find('.my-video:first');\n var $youtubePlayer;\n var $myPlayer;\n var $vimeoRegex = new RegExp ('(vimeo)','gi');\n var $youtubeRegex = new RegExp ('(youtube)','gi');\n if($lounge.video_url && $lounge.video_url != '' && $lounge.video_url.match($vimeoRegex)){\n var $url = $lounge.video_url.split('/');\n var $vimeoId = $url[$url.length - 1];\n var $vimeoPlayer = new Vimeo.Player($youtubeVideo[0], {\n id:$vimeoId,\n width: 680,\n loop: false,\n autoplay:true,\n muted:true\n });\n }\n if($lounge.video_url && $lounge.video_url != '' && $lounge.video_url.match($youtubeRegex)){\n var $url = new URL($lounge.video_url);\n window.YT.ready(function() {\n $youtubePlayer = new YT.Player($youtubeVideo[0], {\n height: '360',\n width: '100%',\n videoId: $url.searchParams.get('v'),\n events: {\n 'onReady': function () {\n $youtubePlayer.mute();\n $youtubePlayer.playVideo();\n },\n 'onError': function () {\n $youtubeVideo.hide();\n }\n }\n });\n });\n }\n if($lounge.video_root_lounge && $lounge.name){\n $myVideo.height(480);\n $myPlayer = new Artplayer({\n width: '100%',\n height: '480px',\n destroy:true,\n container: $myVideo[0],\n title: $lounge.name,\n url: $lounge.video_root_lounge,\n mutex: true,\n muted:true,\n play: true,\n controls: [\n {\n position: 'right',\n html: 'Fullscreen',\n click: function() {\n nurseslounge_lounge_overview.information_location_video_fullscreen($myPlayer, $lounge, true);\n },\n },\n ],\n moreVideoAttr: {\n crossOrigin: 'anonymous'\n }\n }).on('ready', function() {\n $myPlayer.player.pause = true;\n $myPlayer.player.play = true;\n }).on('pause', function(){\n $myPlayer.mask.show = false;\n });\n }\n },\n information_location_video_fullscreen:function($myPlayer, $lounge, $scroll){\n var $gallery;\n var $chtml = '' +\n '
    ' +\n '
    ' +\n '
    ' +\n '
    ';\n $gallery = new PhotoSwipe($('#nurseslounge-lounge-information-video')[0], PhotoSwipeUI_Default,\n [\n {\n html: $chtml\n }\n ],\n {\n index: 0,\n clickToCloseNonZoomable: false,\n closeOnScroll: false,\n closeOnVerticalDrag:false,\n closeElClasses: [],\n history:false\n }\n );\n $gallery.init();\n if($myPlayer){\n $myPlayer.player.pause = true;\n }\n var $container = $('#nurseslounge-lounge-information-video .preview-video-container');\n var $target = $container.find('.video:first');\n $target.width($(window).width());\n $target.height($(window).height());\n var $previewPlayer = new Artplayer({\n destroy:true,\n container: $target[0],\n title: $lounge.name,\n url: $lounge.video_root_lounge,\n mutex: true,\n muted:true,\n play: true\n }).on('ready', function() {\n $previewPlayer.player.pause = true;\n $previewPlayer.player.play = true;\n $previewPlayer.mask.show = false;\n }).on('pause', function(){\n $previewPlayer.mask.show = false;\n });\n $previewPlayer.mask.show = false;\n var $fullscreen = false;\n //var $api = $gallery.ui.getFullscreenAPI();\n //$api.enter();\n $(\"body\").css('overflowY', 'hidden');\n $gallery.listen('close', function() {\n if($scroll){\n $(\"body\").css('overflowY', 'scroll');\n }\n $container.remove();\n $previewPlayer.player.pause = true;\n $previewPlayer.destroy();\n if($myPlayer) {\n $myPlayer.player.play = true;\n }\n });\n $gallery.listen('beforeResize', function() {\n if($fullscreen){\n $target.height($(window).height());\n }else{\n $target.height($(window).height());\n }\n $fullscreen = !$fullscreen;\n });\n },\n\n information_virtual_tour:function($data){\n $(\".virtualTourOverview\").panorama({\n control_display: 'auto',\n direction: 'left',\n autostar: 1,\n container: $('.virtualTourOverviewContainer'),\n selectionEvent: function ($e, $start) {\n\n }\n });\n },\n\n information_administrator_edit:function($params, $data){\n var $modal = $(\"#nurseslounge-lounge-information-edit-modal\");\n var $isEmployer = $data && $data.data && $data.data.lounge && $data.data.lounge.lounge_type_id ? $data.data.lounge.lounge_type_id == 1 : false;\n var $isSchool = $data && $data.data && $data.data.lounge && $data.data.lounge.lounge_type_id ? $data.data.lounge.lounge_type_id == 2 : false;\n var $isSpecialty = $data && $data.data && $data.data.lounge && $data.data.lounge.lounge_type_id ? $data.data.lounge.lounge_type_id == 8 : false;\n var $thoughtLeaders = $data && $data.data && $data.data.lounge && $data.data.lounge.lounge_type_id ? $data.data.lounge.lounge_type_id == 9 : false;\n var $credential = $data && $data.data && $data.data.user_credential ? $data.data.user_credential : [];\n $isEmployer = !$isEmployer ? $params.typeName == 'employers' : $isEmployer;\n $isSchool = !$isSchool ? $params.typeName == 'schools' : $isSchool;\n $isSpecialty = !$isSpecialty ? $params.typeName == 'specialties' : $isSpecialty;\n $thoughtLeaders = !$thoughtLeaders ? $params.typeName == 'thoughtLeaders' : $thoughtLeaders;\n $credential = $credential.map(function($x){return parseInt($x);});\n var $createNewLoungeAccess = $.inArray(5, $credential) != -1 ? true : false;\n var $editNewLoungeAccess = $.inArray(6, $credential) != -1 ? true : false;\n var $deleteNewLoungeAccess = $.inArray(15, $credential) != -1 ? true : false;\n var $helpVideos = $.inArray(37, $credential) != -1 ? true : false;\n var $allowTabs = {\n 'information': $.inArray(7, $credential) != -1 ? true : false,\n 'otherNames': $.inArray(62, $credential) != -1 && !$thoughtLeaders ? true : false,\n 'specialties': $.inArray(80, $credential) != -1 && $isSpecialty || $.inArray(80, $credential) != -1 && $thoughtLeaders ? true : false,\n 'location': $.inArray(8, $credential) != -1 && !$thoughtLeaders ? true : false,\n 'multimedia': $.inArray(9, $credential) != -1 ? true : false,\n 'virtualTour': $.inArray(83, $credential) != -1 && !$thoughtLeaders ? true : false,\n 'recruiters': $.inArray(10, $credential) != -1 && !$thoughtLeaders ? true : false,\n 'owners': $.inArray(11, $credential) != -1 ? true : false,\n 'jobs': $.inArray(12, $credential) != -1 && $isEmployer || $.inArray(12, $credential) != -1 && $isSchool ? true : false,\n 'import': $.inArray(13, $credential) != -1 && $isEmployer || $.inArray(13, $credential) != -1 && $isSchool ? true : false,\n 'api': $.inArray(13, $credential) != -1 && $isEmployer || $.inArray(13, $credential) != -1 && $isSchool ? true : false,\n 'statistics': $.inArray(14, $credential) != -1 ? true : false,\n 'degrees': $.inArray(17, $credential) != -1 && $isSchool ? true : false,\n 'invite': $.inArray(24, $credential) != -1 ? true : false,\n 'inviteStatistics': $.inArray(28, $credential) != -1 ? true : false,\n 'inviteTemplates': $.inArray(66, $credential) != -1 ? true : false,\n 'createLogo': $.inArray(67, $credential) != -1 ? true : false,\n 'buyAds': $.inArray(71, $credential) != -1 && $isSchool ? true : false,\n 'sponsorDegrees': $.inArray(75, $credential) != -1 && $isSchool ? true : false,\n 'spotlightJobs': $.inArray(77, $credential) != -1 && !$isSchool && !$thoughtLeaders ? true : false,\n };\n var $allowTabsFiltered = $allowTabs;\n $allowTabs = {};\n $.each($allowTabsFiltered, function($k, $v) {var $newObj = {};$newObj[$k]=$v;if($v){$.extend($allowTabs, $newObj);}});\n var $information = $(\"#nurseslounge-lounge-information\");\n var $informationRight = $information.find('.nurseslounge-lounge-information-right:first .administrator:first');\n var $options = $informationRight.find('.option');\n $options.each(function(){\n var $that = $(this);\n var $action = $that.data('action');\n if(\n $createNewLoungeAccess && $action == 'create' ||\n $editNewLoungeAccess && $action == 'edit' ||\n $deleteNewLoungeAccess && $action == 'delete' ||\n $helpVideos && $action == 'help-videos' ||\n $helpVideos && $action == 'create-pin-it' ||\n $helpVideos && $action == 'create-event' ||\n $helpVideos && $action == 'send-invitation' ||\n $helpVideos && $action == 'examples-posts'\n ) {\n $that.unbind().click(function () {\n var $tab = null;\n $.each($allowTabs, function($i, $v){\n if($v){\n $tab = $i;\n return false;\n }\n });\n if(\n $tab && $action == 'create' ||\n $tab && $action == 'edit'\n ){\n nurseslounge_lounge_overview.information_administrator_select_tab($action, $tab, $allowTabs, $params, function () {\n $modal.scrollTop(0);\n $modal.modal('show');\n });\n }else\n if($tab && $action == 'help-videos'){\n window.open('https://www.home.nurseslounge.com/help-center', '_blank', '');\n }else\n if($tab && $action == 'create-pin-it'){\n nurseslounge_lounge_overview.information_administrator_tab_open_video('https://www.youtube.com/watch?v=NedHuxskMV8');\n }else\n if($tab && $action == 'create-event'){\n nurseslounge_lounge_overview.information_administrator_tab_open_video('https://www.youtube.com/watch?v=Dd4XKeHIAo0');\n }else\n if($tab && $action == 'send-invitation'){\n nurseslounge_lounge_overview.information_administrator_tab_open_video('https://www.youtube.com/watch?v=FbQw8gA_KmU');\n }else\n if($tab && $action == 'examples-posts'){\n nurseslounge_lounge_overview.information_administrator_tab_open_images();\n }else\n if($action == 'delete'){\n if(confirm('Are you sure you want to delete this lounge?')){\n $params = $.extend({},$params, {action:$action,tab:$action});\n nurseslounge_lounge_overview.information_administrator_tab_request($params, function($data){\n if($data.status == 'success'){\n router.navigate('/lounges');\n }\n });\n }\n }\n });\n }\n });\n if($isEmployer){\n $modal.find('.nav-pills .nav-link[data-target=\"#otherNames\"]').html(\"Facility Names\");\n }else{\n $modal.find('.nav-pills .nav-link[data-target=\"#otherNames\"]').html(\"Other Names\");\n }\n },\n information_administrator_tab_open_video($video){\n var $modal = $(\"#nurseslounge-overview-menu-modal\");\n var $videoDiv = $modal.find('.video:first');\n $videoDiv.replaceWith('
    ');\n $videoDiv = $modal.find('.video:first');\n var $urlVideo = new URL($video);\n var $videoId = $urlVideo.searchParams.get('v');\n var $youtubePlayer = libs.memoryGet('youtubePlayer');\n if($youtubePlayer){\n $youtubePlayer.destroy();\n }\n try{\n $youtubePlayer = new YT.Player($videoDiv[0], {\n height: '360',\n width: '100%',\n videoId: $videoId,\n playerVars: {'autoplay': 1, 'controls': 1},\n events: {\n 'onReady': function () {\n $youtubePlayer.mute();\n $youtubePlayer.playVideoAt(0);\n },\n 'onError': function () {\n $videoDiv.hide();\n libs.memorySave('youtubePlayer', null);\n nurseslounge_lounge_overview.information_administrator_tab_open_video($video);\n }\n }\n });\n }catch ($e) {\n\n }\n libs.memorySave('youtubePlayer', $youtubePlayer);\n $modal.modal('show');\n },\n information_administrator_tab_open_images(){\n var $modal = $(\"#nurseslounge-overview-menu-modal\");\n var $chtml = '
    ';\n for(var $i=1; $i<9; $i++){\n $chtml+='' +\n '
    ' +\n '
    ' +\n ' ' +\n '
    ' +\n '
    ';\n }\n $chtml+='
    ';\n var $videoDiv = $modal.find('.video:first');\n libs.checkImageLoad($($chtml).find('img'), function(){\n $videoDiv.replaceWith($chtml);\n $modal.modal('show');\n });\n },\n information_administrator_select_tab:function($action, $tab, $allowTabs, $params, cback){\n nurseslounge_lounge_overview.information_administrator_tabs_events($action, $tab, $allowTabs, $params,function(){\n $params = $.extend({},$params, {user_id:libs.memoryGet('user_id'),tab:$tab,action:$action});\n nurseslounge_lounge_overview.information_administrator_load($tab, $params, function(){\n switch ($tab) {\n case 'information':\n nurseslounge_lounge_overview.information_lounge_get($action, $params, function($data){\n if($data.data.purchase_clicks == 0 && $data.data.lounge.lounge_type_id == 1){\n nurseslounge_lounge_overview.information_administrator_tab_information_buy_clicks($params, function(){\n nurseslounge_lounge_overview.information_administrator_tab_information($action, $tab, $allowTabs, $params, $data, cback);\n });\n }else{\n nurseslounge_lounge_overview.information_administrator_tab_information($action, $tab, $allowTabs, $params, $data, cback);\n }\n });\n break;\n case 'otherNames':\n nurseslounge_lounge_overview.information_lounge_get($action, $params, function($data){\n nurseslounge_lounge_overview.information_administrator_tab_otherNames($action, $tab, $allowTabs, $params, $data, cback);\n });\n break;\n case 'specialties':\n nurseslounge_lounge_overview.information_lounge_get($action, $params, function($data){\n nurseslounge_lounge_overview.information_administrator_tab_specialties($action, $tab, $allowTabs, $params, $data, cback);\n });\n break;\n case 'location':\n nurseslounge_lounge_overview.information_lounge_get($action, $params, function($data) {\n nurseslounge_lounge_overview.information_administrator_tab_location($action, $tab, $allowTabs, $params, $data, cback);\n });\n break;\n case 'multimedia':\n nurseslounge_lounge_overview.information_lounge_get($action, $params, function($data) {\n nurseslounge_lounge_overview.information_administrator_tab_multimedia($action, $tab, $allowTabs, $params, $data, cback);\n });\n break;\n case 'virtualTour':\n nurseslounge_lounge_overview.information_lounge_get($action, $params, function($data) {\n nurseslounge_lounge_overview.information_administrator_tab_virtual_tour($action, $tab, $allowTabs, $params, $data, cback);\n });\n break;\n case 'recruiters':\n nurseslounge_lounge_overview.information_administrator_tab_recruiters($action, $tab, $allowTabs, $params, null, cback);\n break;\n case 'owners':\n nurseslounge_lounge_overview.information_administrator_tab_owners($action, $tab, $allowTabs, $params, null, cback);\n break;\n case 'jobs':\n nurseslounge_lounge_overview.information_lounge_get($action, $params, function($data) {\n nurseslounge_lounge_overview.information_administrator_tab_jobs($action, $tab, $params, $data, cback);\n });\n break;\n case 'degrees':\n nurseslounge_lounge_overview.information_lounge_get($action, $params, function($data) {\n nurseslounge_lounge_overview.information_administrator_tab_degrees($action, $tab, $params, $data, cback);\n });\n break;\n case 'import':\n nurseslounge_lounge_overview.information_administrator_tab_import($action, $tab, $params, null, cback);\n break;\n case 'api':\n nurseslounge_lounge_overview.information_administrator_tab_api($action, $tab, $params, null, cback);\n break;\n case 'statistics':\n //nurseslounge_lounge_overview.information_lounge_get($action, $params, function($data) {\n nurseslounge_lounge_overview.information_administrator_tab_statistics($action, $tab, $params, null, cback);\n //});\n break;\n case 'invite':\n nurseslounge_lounge_overview.information_tab_invite($action, $tab, $params, null, cback);\n break;\n case 'inviteStatistics':\n nurseslounge_lounge_overview.information_tab_invite_statistics($action, $tab, $params, null, cback);\n break;\n case 'inviteTemplates':\n nurseslounge_lounge_overview.information_tab_invite_templates($action, $tab, $allowTabs, $params, null, cback);\n break;\n case 'createLogo':\n nurseslounge_lounge_overview.information_lounge_get($action, $params, function($data) {\n nurseslounge_lounge_overview.information_tab_create_logo($action, $tab, $allowTabs, $params, $data, cback);\n });\n break;\n case 'buyAds':\n nurseslounge_lounge_overview.information_tab_buy_ads($action, $tab, $allowTabs, $params, null, cback);\n break;\n case 'sponsorDegrees':\n nurseslounge_lounge_overview.information_tab_sponsor_degrees($action, $tab, $allowTabs, $params, null, cback);\n break;\n case 'spotlightJobs':\n nurseslounge_lounge_overview.information_tab_spotlight_jobs($action, $tab, $allowTabs, $params, null, cback);\n break;\n }\n });\n });\n },\n information_administrator_tabs_events:function($action, $tab, $allowTabs, $params, cback){\n //Disable All\n $('#nurseslounge-lounge-information-edit-modal .nav-pills .nav-link').addClass('disabled').removeClass('active');\n $('#nurseslounge-lounge-information-edit-modal .lounge-information-modal-container .tab-pane .container').html('');\n //Events\n $('#nurseslounge-lounge-information-edit-modal .nav-pills a[data-toggle=\"tab\"]').unbind().on('shown.bs.tab', function ($e) {\n var $selectedTab = $e.currentTarget.dataset.target.replace('#','');\n if($.inArray($selectedTab, Object.keys($allowTabs)) > -1){\n nurseslounge_lounge_overview.information_administrator_select_tab($action, $selectedTab, $allowTabs, $params, function(){\n $(\"#nurseslounge-lounge-information-edit-modal\").scrollTop(0);\n });\n }\n });\n //Enable selected\n $.each($allowTabs, function ($i, $v) {\n $(\"#\"+$v).removeClass('active').removeClass('show');\n $('#nurseslounge-lounge-information-edit-modal .nav-pills .nav-link[data-target=\"#'+$i+'\"]').removeClass('disabled');\n });\n $('#nurseslounge-lounge-information-edit-modal .nav-pills .nav-link[data-target=\"#'+$tab+'\"]').addClass('active');\n $(\"#\"+$tab).addClass('active').addClass('show');\n if($action == 'create'){\n $(\"#nurseslounge-lounge-information-edit-modal .modal-title\").html('Create');\n }\n if($action == 'edit'){\n $(\"#nurseslounge-lounge-information-edit-modal .modal-title\").html('Click through the tabs to navigate your Lounge Manager.');\n }\n if(cback != undefined){\n cback();\n }\n },\n information_administrator_load:function($tab, $params, cback){\n nurseslounge_lounge_overview.information_administrator_edit_view_get($tab, $params, function($chtml){\n var $images = $($chtml).find('img');\n libs.checkImageLoad($images, function(){\n $(\"#\"+$tab+\" .container\").html($chtml).promise().done(function(){\n if(cback != undefined){\n cback();\n }\n });\n });\n });\n },\n information_administrator_edit_view_get:function($tab, $params, cback){\n $params = $.extend({},$params,{user_id:libs.memoryGet('user_id'),tab:$tab});\n $.ajax({\n type: 'POST',\n url: '/lounge/informationView/get',\n data: $params,\n method: \"POST\",\n cache:false,\n dataType: \"html\",\n success: function ($data) {\n libs.expire($data);\n cback($data);\n }\n });\n },\n\n information_administrator_tab_information_buy_clicks:function($params, cback){\n var $modal = $(\"#nurseslounge-lounge-overview-buy-clicks-modal\");\n nurseslounge_lounge_overview.information_administrator_tab_information_buy_clicks_request($params, function($chtml){\n var $paymentForm = $modal.find('.payment-form');\n $paymentForm.html($chtml).promise().done(function(){\n nurseslounge_lounge_overview.information_administrator_tab_information_buy_clicks_events($params, cback);\n $modal.modal('show');\n });\n });\n },\n information_administrator_tab_information_buy_clicks_request:function($params, cback){\n $.ajax({\n type: 'POST',\n url: '/lounge/buyClicks/get',\n data: $params,\n method: \"POST\",\n cache:false,\n dataType: \"html\",\n success: function ($data) {\n libs.expire($data);\n cback($data);\n }\n });\n\n },\n information_administrator_tab_information_buy_clicks_events:function($params, cback){\n try{\n var $cardSaved = libs.memoryGet('nurseslounge_lounge_overview_card');\n if($cardSaved){\n $cardSaved.destroy();\n }\n }catch ($e){\n\n }\n var $modal = $(\"#nurseslounge-lounge-overview-buy-clicks-modal\");\n var $paymentForm = $modal.find(\"form[name='stripe-form-popup']\")\n var $paymentFormWrapper = $paymentForm.find('.payment-form-wrapper');\n var $onProgressWrapper = $paymentForm.find('.on-progress-checkmark-wrapper');\n var $successWrapper = $paymentForm.find('.success-checkmark-wrapper');\n var $inputClicks = $paymentForm.find('input[name=\"clicks\"]');\n var $clicksAmount = $paymentForm.find('.clicks-amount');\n var $btnContinue = $paymentForm.find('.continue');\n var $submitButton = $paymentForm.find('button[type=\"submit\"]');\n $paymentFormWrapper.show();\n $onProgressWrapper.hide();\n $successWrapper.hide();\n $submitButton.prop('disabled', false);\n $inputClicks.unbind().change(function(){\n $clicksAmount.html('clicks = $'+($inputClicks.val() * 3)+'.00');\n });\n var $card = stripe.elements();\n var $style = {\n base: {\n 'lineHeight': '1.5',\n 'fontSize': '1.09em',\n 'color': '#00184A',\n 'fontFamily': \"sans-serif\",\n 'height':'100%',\n 'fontWeight':'100',\n 'opacity': '0.9',\n '::placeholder': {\n 'color':'#636c72',\n 'opacity':'0.9'\n }\n },\n invalid: {\n color: \"#fa755a\",\n iconColor: \"#fa755a\"\n },\n };\n var $cardDom = $paymentForm.find('.card:first')[0];\n var $cardEle = $card.create('card', {style:$style});\n $cardEle.mount($cardDom);\n libs.memorySave('nurseslounge_lounge_overview_card', $cardEle);\n nurseslounge_lounge_overview.information_administrator_tab_information_buy_clicks_validate(function($form){\n var $objForm = libs.getObjForm($form);\n $submitButton.prop('disabled', true);\n $paymentFormWrapper.hide();\n $onProgressWrapper.show();\n stripe.createToken($cardEle, {\n name:$objForm.name,\n address_country:'US',\n currency:'usd'\n }).then(function($res) {\n if($res.token && $res.token.id){\n var $newParams = $.extend({}, $objForm, $res, $params, {autocharge:0});\n nurseslounge_lounge_overview.information_administrator_tab_jobs_stripe_request($newParams, function($data){\n if($data.status == 'success'){\n $paymentFormWrapper.hide();\n $onProgressWrapper.hide();\n $successWrapper.show();\n $btnContinue.unbind().click(function(){\n $paymentForm[0].reset();\n $inputClicks.change();\n $successWrapper.hide();\n $modal.on('hidden.bs.modal',function($e){\n cback();\n }).modal('hide');\n });\n }else{\n var $validator = $paymentForm.validate();\n $validator.showErrors({\"card\": $data.data.msg});\n $paymentForm.find(\"input[name='card']\").val('');\n $submitButton.prop('disabled', false);\n $onProgressWrapper.hide();\n $paymentFormWrapper.show();\n }\n });\n }else{\n $submitButton.prop('disabled', false);\n $onProgressWrapper.hide();\n $paymentFormWrapper.show();\n }\n });\n });\n $cardEle.on('change', function($e){\n if(!$e.complete && $e.error && $e.error.message){\n var $validator = $paymentForm.validate();\n $validator.showErrors({\"card\": $e.error.message});\n $paymentForm.find(\"input[name='card']\").val('');\n $paymentForm.find('.invalid-feedback').hide();\n $paymentForm.find('.error').removeClass('error');\n $paymentForm.find('.is-invalid').removeClass('is-invalid');\n }else{\n $paymentForm.find(\"input[name='card']\").val('complete');\n }\n });\n },\n information_administrator_tab_information_buy_clicks_validate:function(cback){\n $.validator.addMethod('minStrict', function ($val, $el, $par) {\n return $val > $par;\n });\n var $modal = $(\"#nurseslounge-lounge-overview-buy-clicks-modal\");\n var $paymentForm = $modal.find(\"form[name='stripe-form-popup']\")\n var $validator;\n try {\n $validator = $paymentForm.validate();\n $validator.destroy();\n }catch (e) {\n\n }\n $validator = $paymentForm.validate({\n onsubmit: true,\n debug: true,\n ignore: '*:not(.validate)',\n rules: {\n clicks: {\n required: true,\n minStrict: 99,\n number: true\n },\n name: {\n required: true,\n minlength: 3,\n maxlength: 191,\n },\n card: {\n required: true\n }\n },\n messages: {\n clicks:{\n required: \"The clicks is required\",\n minStrict:\"The clicks should be greater than 99\",\n number: \"The clicks should be a number\"\n },\n name:{\n required: \"The name is required\",\n minlength: \"The name must have at least 3 characters\",\n maxlength: \"The name cannot exceed 191 characters\"\n },\n card:{\n required: \"The card is required\"\n }\n },\n errorPlacement: function($error, $element){\n var $ele = $($element);\n var $name = $ele.attr(\"name\");\n if(!$ele.hasClass('is-invalid')){\n $ele.addClass('is-invalid');\n }\n $(\".\"+$name+\"_validate\").html($($error).text()).show();\n },\n success: function($error, $element) {\n var $ele = $($element);\n var $name = $ele.attr(\"name\");\n if($ele.hasClass('is-invalid')){\n $ele.removeClass('is-invalid');\n }\n $(\".\"+$name+\"_validate\").html('').hide();\n },\n submitHandler: function($form) {\n cback($form);\n return false;\n }\n });\n },\n\n information_administrator_tab_information:function($action, $tab, $allowTabs, $params, $data, cback){\n var $loungeSchoolClass = $data && $data.data && $data.data.lounge_school_class ? $data.data.lounge_school_class : null;\n var $loungeSchoolType = $data && $data.data && $data.data.lounge_school_type ? $data.data.lounge_school_type : null;\n var $loungeType = $data && $data.data && $data.data.lounge_type ? $data.data.lounge_type : null;\n var $lounge = $data && $data.data && $data.data.lounge ? $data.data.lounge : null;\n var $modal = $(\"#nurseslounge-lounge-information-edit-modal\");\n var $information = $modal.find(\".lounge-information-modal-container #information .container\");\n var $informationForm = $information.find('form:first');\n var $overview = $informationForm.find('.overview');\n var $schoolClassDiv = $informationForm.find('.lounge-school-class');\n var $schoolTypeDiv = $informationForm.find('.lounge-school-type');\n $informationForm.find(\"input[name='phoneNumber']\").mask('+(00) 000-000-0000');\n var $loungeTypeOptions = '';\n $loungeTypeOptions += '';\n $.each($loungeType, function($i, $v){\n $loungeTypeOptions += '';\n });\n var $loungeClassOptions = '';\n $loungeClassOptions += '';\n var $loungeSchoolClassValue = '';\n $.each($loungeSchoolClass, function($i, $v){\n switch($v){\n case 'Campus Only':\n $loungeSchoolClassValue = 'Campus Only: Degree Programs are only offered for on campus learning.';\n break;\n case 'Online Only':\n $loungeSchoolClassValue = 'Online Only: All Degree Programs offered are 100% online.';\n break;\n case 'Hybrid':\n $loungeSchoolClassValue = 'Both: Degrees offered for both campus learning and distance learning.';\n break;\n }\n $loungeClassOptions += '';\n });\n var $loungeSchoolTypeOptions = '';\n $loungeSchoolTypeOptions += '';\n var $loungeSchoolTypeValue = '';\n $.each($loungeSchoolType, function($i, $v){\n switch($v){\n case 'ADN/ASN School':\n $loungeSchoolTypeValue = 'ADN School: The maximum degree level we offer is a 2-year nursing degree program such as ADN.';\n break;\n case 'BS/BSN School':\n $loungeSchoolTypeValue = 'BS/BSN School: We offer a minimum of a B.S. or Bachelor\\'s Degree in Nursing.';\n break;\n case 'Graduate School Only':\n $loungeSchoolTypeValue = 'Graduate School Only: We only offer graduate degree programs.';\n break;\n }\n $loungeSchoolTypeOptions += '';\n });\n $informationForm.find(\"select[name='loungeType']\").html($loungeTypeOptions).promise().done(function(){\n $(this).unbind().change(function(){\n if($(this).val() == '2'){\n $schoolClassDiv.show();\n $schoolTypeDiv.show();\n $schoolClassDiv.parent().show();\n $schoolTypeDiv.parent().show();\n }else{\n $schoolClassDiv.hide();\n $schoolTypeDiv.hide();\n $schoolClassDiv.parent().hide();\n $schoolTypeDiv.parent().hide();\n }\n });\n });\n $informationForm.find(\"select[name='loungeSchoolClass']\").html($loungeClassOptions);\n $informationForm.find(\"select[name='loungeSchoolType']\").html($loungeSchoolTypeOptions).promise().done(function(){\n nurseslounge_lounge_overview.information_administrator_tab_information_validate(function($form){\n var $formObj = libs.getObjForm($form);\n var $formOverview = $overview.summernote('code');\n var $newParams = $.extend({},$params, $formObj);\n $newParams = $.extend({},$newParams, {overview:$formOverview,action:$action,tab:$tab});\n $information.html('' +\n '
    ' +\n '
    ' +\n ' ' +\n '
    ' +\n '
    ');\n nurseslounge_lounge_overview.information_administrator_tab_request($newParams, function($data){\n var $action = $data.data.action;\n var $key = $data.data.key;\n $params = $.extend({},$params, {key:$key,action:$action});\n if($data.status == 'success'){\n if($newParams.action == 'create'){\n router.navigate($data.data.link,true);\n nurseslounge_lounge_overview.init($params, function ($data) {\n nurseslounge_lounge_overview.information_administrator_select_tab($action, $tab, $allowTabs, $params, cback);\n });\n }\n if($newParams.action == 'edit'){\n libs.refreshBoxFrom('.page-contents', $params, function(){\n nurseslounge_lounge.submenu($params, function(){\n nurseslounge_lounge_overview.init($params, function($data){\n nurseslounge_lounge_overview.information_administrator_select_tab($action, $tab, $allowTabs, $params, cback);\n });\n });\n });\n }\n }else{\n $modal.modal('hide');\n }\n });\n });\n try{\n $overview.summernote('destroy');\n }catch (e) {\n\n }\n var $stripTags = function ($context) {\n var $ui = $.summernote.ui;\n var $button = $ui.button({\n contents: 'Remove Formatting',\n tooltip: 'Strip Tags',\n click: function () {\n var $text = [];\n var $code = $overview.summernote(\"code\");\n $($code).each(function(){\n $text.push('

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

    ');\n });\n $code = $text.join('');\n $overview.summernote(\"code\", $code);\n }\n });\n return $button.render();\n }\n $overview.summernote({\n placeholder: 'Overview ...',\n height: '400px',\n width: '100%',\n focus: true,\n disableResizeEditor: true,\n dialogsInBody: true,\n dialogsFade: true,\n codeviewFilter: true,\n codeviewIframeFilter: true,\n spellCheck: true,\n disableGrammar: false,\n styleTags: [\n 'p',\n 'pre', 'h1', 'h2', 'h3', 'h4', 'h5', 'h6'\n ],\n fontNames: ['Arial', 'Arial Black', 'Comic Sans MS', 'Courier New'],\n fontSizeUnits: ['pt', 'px'],\n toolbar: [\n ['style', ['style']],\n ['font', ['fontname', 'fontsize', 'fontsizeunit']],\n ['font', ['forecolor', 'backcolor']],\n ['font', ['bold', 'italic', 'underline']],\n ['para', ['ul', 'ol', 'paragraph']],\n ['para', ['height']],\n ['hr', ['hr']],\n ['stripTags', ['stripTags']]\n ],\n buttons: {\n stripTags: $stripTags\n }\n });\n //Set values\n if($lounge.lounge_type_id) {\n $informationForm.find(\"select[name='loungeType']\").val($lounge.lounge_type_id).attr('disabled', 'disabled');\n }\n if($lounge.school_class_id) {\n $informationForm.find(\"select[name='loungeSchoolClass']\").val($lounge.school_class_id);\n }\n if($lounge.school_type_id) {\n $informationForm.find(\"select[name='loungeSchoolType']\").val($lounge.school_type_id);\n }\n if($lounge.lounge_type_id == 2){\n $schoolClassDiv.show();\n $schoolTypeDiv.show();\n $schoolClassDiv.parent().show();\n $schoolTypeDiv.parent().show();\n }else{\n $schoolClassDiv.hide();\n $schoolTypeDiv.hide();\n $schoolClassDiv.parent().hide();\n $schoolTypeDiv.parent().hide();\n }\n if($lounge.name) {\n $informationForm.find(\"input[name='loungeName']\").val($lounge.name);\n }\n if($lounge.description) {\n $overview.summernote('code', $lounge.description);\n }\n if($lounge.tagline) {\n $informationForm.find(\"input[name='tagline']\").val($lounge.tagline);\n }\n if($lounge.url) {\n $informationForm.find(\"input[name='website']\").val($lounge.url);\n }\n if($lounge.website_data){\n var $websiteData = $lounge.website_data;\n $informationForm.find('.website-thumb').hide();\n $informationForm.find(\".website-thumb .logo img\").attr('src', '/bimg/NursesLounge/wa-loader.gif');\n $informationForm.find(\".website-thumb .logo\").hide();\n $informationForm.find(\".website-thumb .title\").hide();\n $informationForm.find(\".website-thumb .description\").hide();\n if ($websiteData != null && $websiteData[1] != '') {\n $informationForm.find(\".website-thumb .logo img\").attr('src', $websiteData[1]);\n $informationForm.find(\".website-thumb .logo\").show();\n }\n if ($websiteData != null && $websiteData[3] != '') {\n $informationForm.find(\".website-thumb .title\").html($websiteData[3]);\n $informationForm.find(\".website-thumb .title\").show();\n }\n if ($websiteData != null && $websiteData[4] != '') {\n $informationForm.find(\".website-thumb .description\").html($websiteData[4]);\n $informationForm.find(\".website-thumb .description\").show();\n }\n if ($websiteData != null && $websiteData[1] != '' ||\n $websiteData != null && $websiteData[3] != '' ||\n $websiteData != null && $websiteData[4] != '') {\n $informationForm.find('.website-thumb').show();\n }\n }\n if($lounge.email) {\n $informationForm.find(\"input[name='email']\").val($lounge.email);\n }\n if($lounge.phone) {\n $informationForm.find(\"input[name='phoneNumber']\").val($lounge.phone);\n }\n });\n if(cback != undefined){\n cback();\n }\n },\n information_administrator_tab_information_validate:function(cback){\n var $validator;\n try {\n $validator = $(\"#information form\").validate();\n $validator.destroy();\n }catch (e) {\n\n }\n $validator = $(\"#information form\").validate({\n onsubmit: true,\n debug: true,\n ignore: '*:not(.validate)',\n rules: {\n loungeType: {\n required: true\n },\n loungeSchoolClass: {\n required: function(){\n return $(\"#information form select[name='loungeType']\").val() == 2\n }\n },\n loungeSchoolType: {\n required: function(){\n return $(\"#information form select[name='loungeType']\").val() == 2\n }\n },\n loungeName: {\n required: true,\n minlength: 3,\n maxlength: 191\n },\n tagline: {\n required: false,\n minlength: 3,\n maxlength: 191\n },\n website: {\n required: false,\n minlength: 3,\n maxlength: 191\n },\n email: {\n required: false,\n minlength: 3,\n maxlength: 191,\n email:true\n }\n },\n messages: {\n loungeType:{\n required: \"The lounge type is required\"\n },\n loungeSchoolClass: {\n required: \"The lounge school class is required\"\n },\n loungeSchoolType: {\n required: \"The lounge school type is required\"\n },\n loungeName: {\n required: \"The lounge name is required\",\n minlength: \"The lounge name must have at least 3 characters\",\n maxlength: \"The lounge name cannot exceed 191 characters\"\n },\n tagline: {\n required: \"The tagline is not required\",\n minlength: \"The tagline must have at least 3 characters\",\n maxlength: \"The tagline cannot exceed 191 characters\"\n },\n website: {\n required: \"The website is not required\",\n minlength: \"The website must have at least 3 characters\",\n maxlength: \"The website cannot exceed 191 characters\"\n },\n email: {\n required: \"The email is not required\",\n minlength: \"The email must have at least 3 characters\",\n maxlength: \"The email cannot exceed 191 characters\",\n email:\"The email is invalid\"\n }\n },\n errorPlacement: function($error, $element){\n var $ele = $($element);\n var $name = $ele.attr(\"name\");\n if(!$ele.hasClass('is-invalid')){\n $ele.addClass('is-invalid');\n }\n $(\".\"+$name+\"_validate\").html($($error).text()).show();\n },\n success: function($error, $element) {\n var $ele = $($element);\n var $name = $ele.attr(\"name\");\n if($ele.hasClass('is-invalid')){\n $ele.removeClass('is-invalid');\n }\n $(\".\"+$name+\"_validate\").html('').hide();\n },\n submitHandler: function($form) {\n cback($form);\n return false;\n }\n });\n },\n\n information_administrator_tab_specialties:function($action, $tab, $allowTabs, $params, $data, cback){\n var $specialtiesVal = $data && $data.data && $data.data.lounge && $data.data.lounge.specialties ? $data.data.lounge.specialties : [];\n $specialtiesVal = libs.pluck($specialtiesVal, 'specialty_id');\n var $modal = $(\"#nurseslounge-lounge-information-edit-modal\");\n var $specialtiesForm = $modal.find(\".lounge-information-modal-container #specialties .container\");\n var $specialties = $specialtiesForm.find(\"select[name='specialties']\");\n try{\n $specialties.chosen('destroy');\n }catch (e) {}\n $specialties.chosen();\n $specialties.val($specialtiesVal).trigger(\"chosen:updated\");\n $specialties.unbind();\n nurseslounge_lounge_overview.information_administrator_tab_specialties_validate(function($form){\n var $formObj = libs.getObjForm($form);\n var $newParams = $.extend({},$params, $formObj);\n nurseslounge_lounge_overview.information_administrator_tab_request($newParams, function($data){\n if($data.status == 'success'){\n nurseslounge_lounge_overview.init($params, function($data){\n nurseslounge_lounge_overview.information_administrator_select_tab($action, $tab, $allowTabs, $params, cback);\n });\n }else{\n $modal.modal('hide');\n }\n });\n });\n if(cback != undefined){\n cback();\n }\n },\n information_administrator_tab_specialties_validate:function(cback){\n var $validator;\n try {\n $validator = $(\"#specialties form\").validate();\n $validator.destroy();\n }catch (e) {\n\n }\n $validator = $(\"#specialties form\").validate({\n onsubmit: true,\n debug: true,\n ignore: '*:not(.validate)',\n rules: {\n specialties: {\n required: false\n }\n },\n messages: {\n specialties:{\n required: \"The specialties is not required\"\n }\n },\n errorPlacement: function($error, $element){\n var $ele = $($element);\n var $name = $ele.attr(\"name\");\n if(!$ele.hasClass('is-invalid')){\n $ele.addClass('is-invalid');\n }\n $(\".\"+$name+\"_validate\").html($($error).text()).show();\n },\n success: function($error, $element) {\n var $ele = $($element);\n var $name = $ele.attr(\"name\");\n if($ele.hasClass('is-invalid')){\n $ele.removeClass('is-invalid');\n }\n $(\".\"+$name+\"_validate\").html('').hide();\n },\n submitHandler: function($form) {\n cback($form);\n return false;\n }\n });\n },\n\n information_administrator_tab_otherNames:function($action, $tab, $allowTabs, $params, $data, cback){\n var $lounge = $data && $data.data && $data.data.lounge ? $data.data.lounge : null;\n var $modal = $(\"#nurseslounge-lounge-information-edit-modal\");\n var $otherNamesForm = $modal.find(\".lounge-information-modal-container #otherNames .container\");\n var $otherNames = $otherNamesForm.find(\"input[name='otherNames']\");\n var $tagify = libs.memoryGet('nurseslounge_lounge_overview_tagify');\n if($tagify){\n try{\n $tagify.removeAllTags();\n $tagify.destroy();\n $otherNamesForm.find(\".tagify__input--outside\").remove();\n }catch ($e) {\n\n }\n }\n $tagify = new Tagify($otherNames[0]);\n $tagify.DOM.input.classList.add('tagify__input--outside');\n $tagify.DOM.scope.parentNode.insertBefore($tagify.DOM.input, $tagify.DOM.scope);\n if($lounge.lounge_name){\n if ($lounge.lounge_name.length > 0) {\n $.each($lounge.lounge_name, function ($i, $v) {\n $tagify.addTags($v.name);\n });\n }\n }\n libs.memorySave('nurseslounge_lounge_overview_tagify', $tagify);\n nurseslounge_lounge_overview.information_administrator_tab_otherNames_validate(function($form){\n var $formObj = libs.getObjForm($form);\n if($formObj.otherNames != ''){\n $formObj = JSON.parse($formObj.otherNames);\n }\n var $newParams = $.extend({},$params, {otherNames:$formObj});\n $otherNamesForm.html('' +\n '
    ' +\n '
    ' +\n ' ' +\n '
    ' +\n '
    ');\n nurseslounge_lounge_overview.information_administrator_tab_request($newParams, function($data){\n if($data.status == 'success'){\n nurseslounge_lounge_overview.init($params, function($data){\n nurseslounge_lounge_overview.information_administrator_select_tab($action, $tab, $allowTabs, $params, cback);\n });\n }else{\n $modal.modal('hide');\n }\n });\n });\n if(cback != undefined){\n cback();\n }\n },\n information_administrator_tab_otherNames_validate:function(cback){\n var $validator;\n try {\n $validator = $(\"#otherNames form\").validate();\n $validator.destroy();\n }catch (e) {\n\n }\n $validator = $(\"#otherNames form\").validate({\n onsubmit: true,\n debug: true,\n ignore: '*:not(.validate)',\n rules: {\n otherNames: {\n required: false\n }\n },\n messages: {\n otherNames:{\n required: \"The lounge other names is not required\"\n }\n },\n errorPlacement: function($error, $element){\n var $ele = $($element);\n var $name = $ele.attr(\"name\");\n if(!$ele.hasClass('is-invalid')){\n $ele.addClass('is-invalid');\n }\n $(\".\"+$name+\"_validate\").html($($error).text()).show();\n },\n success: function($error, $element) {\n var $ele = $($element);\n var $name = $ele.attr(\"name\");\n if($ele.hasClass('is-invalid')){\n $ele.removeClass('is-invalid');\n }\n $(\".\"+$name+\"_validate\").html('').hide();\n },\n submitHandler: function($form) {\n cback($form);\n return false;\n }\n });\n },\n\n information_administrator_tab_location:function($action, $tab, $allowTabs, $params, $data, cback){\n var $location = $data && $data.data && $data.data.lounge && $data.data.lounge.location ? $data.data.lounge.location : null;\n var $addressStateId = $data && $data.data && $data.data.address_state_id ? $data.data.address_state_id : null;\n var $states = $data && $data.data && $data.data.states ? $data.data.states :null;\n var $modal = $(\"#nurseslounge-lounge-information-edit-modal\");\n var $locationContainer = $modal.find(\".lounge-information-modal-container #location .container\");\n var $locationForm = $locationContainer.find('form:first');\n nurseslounge_lounge_overview.information_administrator_tab_location_validate(function($form){\n var $formObj = libs.getObjForm($form);\n var $newParams = $.extend({},$params, $formObj);\n $newParams = $.extend({},$newParams, {action:$action,tab:$tab});\n $locationContainer.html('' +\n '
    ' +\n '
    ' +\n ' ' +\n '
    ' +\n '
    ');\n nurseslounge_lounge_overview.information_administrator_tab_request($newParams, function($data){\n if($data.status == 'success'){\n libs.refreshBoxFrom('.page-contents', $params, function(){\n nurseslounge_lounge.submenu($params, function(){\n nurseslounge_lounge_overview.init($params, function($data){\n nurseslounge_lounge_overview.information_administrator_select_tab($action, $tab, $allowTabs, $params, cback);\n });\n });\n });\n }else{\n $modal.modal('hide');\n }\n });\n });\n var $stateArr = [];\n $.each($states, function($i, $v){\n $stateArr.push([$i, $v]);\n });\n $stateArr.sort(function($a, $b) {\n if($a[1] < $b[1]) { return -1; }\n if($a[1] > $b[1]) { return 1; }\n return 0;\n });\n var $stateChtml = '';\n $stateChtml += '';\n $.each($stateArr, function($i, $v){\n $stateChtml += '';\n });\n $locationForm.find('select[name=\"state\"]').html($stateChtml).promise().done(function(){\n if($location && $location.address_street) {\n $locationForm.find('input[name=\"street\"]').val($location.address_street);\n }\n if($location && $location.address_city) {\n $locationForm.find('input[name=\"city\"]').val($location.address_city);\n }\n if($addressStateId) {\n $locationForm.find('select[name=\"state\"]').val($addressStateId);\n }\n if($location && $location.address_zip_code) {\n $locationForm.find('input[name=\"zipCode\"]').val($location.address_zip_code);\n }\n if($location && $location.address_latitude && $location.address_longitude) {\n nurseslounge_lounge_overview.information_administrator_tab_location_map($location, function () {\n if ($location.address_is_unmappable == 0) {\n $locationForm.find('.lat').html($location.address_latitude).show();\n $locationForm.find('.lng').html($location.address_longitude).show();\n $locationForm.find('#edit-location-map').show();\n } else {\n $locationForm.find('.lat').hide();\n $locationForm.find('.lng').hide();\n $locationForm.find('#edit-location-map').hide();\n }\n });\n }\n if(cback != undefined){\n cback();\n }\n });\n },\n information_administrator_tab_location_validate:function(cback){\n var $validator;\n try {\n $validator = $(\"#location form\").validate();\n $validator.destroy();\n }catch (e) {\n\n }\n $validator = $(\"#location form\").validate({\n onsubmit: true,\n debug: true,\n ignore: '*:not(.validate)',\n rules: {\n street: {\n required: false,\n minlength: 3,\n maxlength: 191\n },\n city: {\n required: false,\n minlength: 3,\n maxlength: 191\n },\n state: {\n required: true\n },\n zipCode: {\n required: false,\n minlength: 3,\n maxlength: 191\n }\n },\n messages: {\n street: {\n required: \"The street is not required\",\n minlength: \"The street must have at least 3 characters\",\n maxlength: \"The street cannot exceed 191 characters\"\n },\n city: {\n required: \"The city is not required\",\n minlength: \"The city must have at least 3 characters\",\n maxlength: \"The city cannot exceed 191 characters\"\n },\n state: {\n required: \"The state is required\"\n },\n zipCode: {\n required: \"The zip code is not required\",\n minlength: \"The zip code must have at least 3 characters\",\n maxlength: \"The zip code cannot exceed 191 characters\"\n }\n },\n errorPlacement: function($error, $element){\n var $ele = $($element);\n var $name = $ele.attr(\"name\");\n if(!$ele.hasClass('is-invalid')){\n $ele.addClass('is-invalid');\n }\n $(\".\"+$name+\"_validate\").html($($error).text()).show();\n },\n success: function($error, $element) {\n var $ele = $($element);\n var $name = $ele.attr(\"name\");\n if($ele.hasClass('is-invalid')){\n $ele.removeClass('is-invalid');\n }\n $(\".\"+$name+\"_validate\").html('').hide();\n },\n submitHandler: function($form) {\n cback($form);\n return false;\n }\n });\n },\n information_administrator_tab_location_map:function($location, cback){\n if($location && $location.address_latitude && $location.address_longitude && $location.address_is_unmappable == 0){\n try{\n var $position = new google.maps.LatLng(parseFloat($location.address_latitude), parseFloat($location.address_longitude));\n var $iconUrl = './../../bimg/NursesLounge/active.png';\n var $map = new google.maps.Map(document.getElementById('edit-location-map'), {\n center:$position,\n mapTypeId: google.maps.MapTypeId.ROADMAP,\n mapTypeControl: false,\n streetViewControl: false,\n fullscreenControl: false,\n zoom: 15\n });\n $map.setTilt(0);\n var $marker = new google.maps.Marker({\n position:$position,\n map: $map,\n animation: google.maps.Animation.DROP,\n icon: {url:$iconUrl, scaledSize: (new google.maps.Size(20, 35))},\n });\n }catch (e) {\n\n }\n }\n if(cback != undefined){\n cback();\n }\n },\n\n information_administrator_tab_multimedia:function($action, $tab, $allowTabs, $params, $data, cback){\n var $lounge = $data && $data.data && $data.data.lounge ? $data.data.lounge : null;\n var $modal = $(\"#nurseslounge-lounge-information-edit-modal\");\n var $multimedia = $modal.find(\".lounge-information-modal-container #multimedia .container\");\n var $form = $multimedia.find('form');\n var $logoFileInput = $multimedia.find('input[name=\"logo\"]');\n var $changeLogoButton = $multimedia.find('.logo-change:first');\n var $logoImage = $multimedia.find('.logo:first');\n var $thumbnailImg = $multimedia.find('.thumbnail-img:first');\n var $photoFileInput = $multimedia.find('input[name=\"photo\"]');\n var $changePhotoButton = $multimedia.find('.photo-change:first');\n var $photoImage = $multimedia.find('.photo:first');\n var $youtubeVideo = $multimedia.find('input[name=\"youtubeVideo\"]');\n var $myVideoFileInput = $multimedia.find('input[name=\"video\"]');\n var $myVideoButton = $multimedia.find('.update-my-video');\n var $myVideoDelete = $multimedia.find('.delete-my-video');\n var $videoRoot = '';\n var $urlBindind;\n var $originalLogoImage = $logoImage;\n $logoFileInput.unbind().change(function(){\n var $that = this;\n $logoImage = $multimedia.find('.logo:first');\n libs.renderImage($that, $logoImage);\n var $image = $logoImage.cropme({\n \"container\": {\n \"width\": $logoImage.width(),\n \"height\": $logoImage.height()\n },\n \"viewport\": {\n \"width\": $logoImage.width(),\n \"height\": $logoImage.width(),\n \"type\": \"circle\",\n \"border\": {\n \"width\": 0,\n \"enable\": true,\n \"color\": \"#ffffff\"\n }\n },\n \"zoom\": {\n \"enable\": true,\n \"mouseWheel\": true,\n \"slider\": false\n },\n \"rotation\": {\n \"slider\": false,\n \"enable\": false,\n \"position\": \"left\"\n },\n \"transformOrigin\": \"viewport\"\n });\n $thumbnailImg.find('.cropme-wrapper').prependTo($thumbnailImg);\n if($($that)[0].files != ''){\n $changeLogoButton.unbind().click(function(){\n $image.cropme('crop', {\n type: 'base64'\n }).then(function($imageBase64) {\n $image.cropme('destroy');\n $thumbnailImg.find('div:first').remove();\n $thumbnailImg.prepend($originalLogoImage);\n $logoImage = $multimedia.find('.logo:first');\n $logoImage.attr('src', $imageBase64);\n $changeLogoButton.unbind().click(function(){\n $logoFileInput.click();\n });\n });\n });\n }else{\n $changeLogoButton.unbind().click(function(){\n $logoFileInput.click();\n });\n }\n\n });\n $changeLogoButton.unbind().click(function(){\n $logoFileInput.click();\n });\n $photoFileInput.unbind().change(function(){\n libs.renderImage(this, $photoImage);\n });\n $changePhotoButton.unbind().click(function(){\n $photoFileInput.click();\n });\n $myVideoDelete.unbind().click(function(){\n var $myVideo = libs.memoryGet('my-video') ? libs.memoryGet('my-video') : false;\n try {\n $myVideo.destroy();\n } catch (e) {\n\n }\n $videoRoot = '';\n $myVideoButton.show();\n $myVideoDelete.hide();\n });\n $myVideoFileInput.unbind().change(function(){\n if(this.files && this.files[0]){\n var $formData = new FormData();\n $formData.append('_token', $('meta[name=\"csrf-token\"]').attr('content'));\n $formData.append('user_id', libs.memoryGet('user_id'));\n $formData.append('tab', $tab);\n $formData.append('key', $params.key);\n $formData.append('action', 'previewVideo');\n $formData.append('video', this.files[0]);\n nurseslounge_lounge_overview.information_administrator_tab_request_files($formData, function($data){\n $videoRoot = $data.data.video_root;\n nurseslounge_lounge_overview.information_administrator_tab_multimedia_videos('myVideo', $data.data);\n });\n }\n });\n $myVideoButton.unbind().click(function(){\n $myVideoFileInput.click();\n });\n $youtubeVideo.unbind().on('keypress keyup keydown blur', function(){\n var $text = $(this).val();\n try{\n clearTimeout($urlBindind);\n }catch(e){\n\n }\n $urlBindind = setTimeout(function(){\n nurseslounge_lounge_overview.information_administrator_tab_multimedia_videos('youtubeVideoOrVimeo', {video_url:$text});\n }, 1500);\n });\n $form.unbind().on('submit', function($e){\n $e.preventDefault();\n var $formData = new FormData();\n $formData.append('_token', $('meta[name=\"csrf-token\"]').attr('content'));\n $formData.append('user_id', libs.memoryGet('user_id'));\n $formData.append('tab', $tab);\n $formData.append('key', $params.key);\n $formData.append('action', $action);\n if($logoFileInput[0].files[0]){\n $formData.append('logo', $logoFileInput[0].files[0]);\n }\n if($photoFileInput[0].files[0]){\n $formData.append('photo', $photoFileInput[0].files[0]);\n }\n $formData.append('youtube_video', $youtubeVideo.val());\n $formData.append('my_video', $videoRoot);\n nurseslounge_lounge_overview.information_administrator_tab_request_files($formData, function($data){\n if($data.status == 'success') {\n $(\".nav.nav-underline [data-id='overview']\").click();\n libs.refreshBoxFrom(\".top-nav-menu\", $params, function () {\n $(\"#nurseslounge-lounge .nav-underline a:eq(0)\").addClass('active');\n nurseslounge_lounge_header.followers($params);\n libs.refreshBoxFrom(\".page-contents\", $params, function () {\n nurseslounge_lounge.submenu($params, function(){\n nurseslounge_lounge_overview.init($params, function($data){\n nurseslounge_lounge_overview.information_administrator_select_tab($action, $tab, $allowTabs, $params, cback);\n });\n });\n });\n });\n }else{\n $modal.modal('hide');\n }\n });\n });\n if ($lounge.video_url) {\n nurseslounge_lounge_overview.information_administrator_tab_multimedia_videos('youtubeVideoOrVimeo', $lounge);\n }\n if ($lounge.video_root_lounge) {\n nurseslounge_lounge_overview.information_administrator_tab_multimedia_videos('myVideo', $lounge);\n }\n if($lounge.video_url) {\n $youtubeVideo.val($lounge.video_url);\n }\n if($lounge.video_root) {\n $videoRoot = libs.isEmptyReturnNull($lounge.video_root) != null ? $lounge.video_root : '';\n }\n if($lounge.logo_root_lounge) {\n $multimedia.find('.logo').attr('src', $lounge.logo_root_lounge);\n }\n if($lounge.photo_root_lounge) {\n $multimedia.find('.photo').attr('src', $lounge.photo_root_lounge);\n }\n libs.checkImageLoad($multimedia.find('img'), function () {\n if (cback != undefined) {\n cback();\n }\n });\n },\n information_administrator_tab_multimedia_videos:function($type, $lounge){\n var $modal = $(\"#nurseslounge-lounge-information-edit-modal\");\n var $multimedia = $modal.find(\".lounge-information-modal-container #multimedia .container\");\n var $youtubeVideo = $multimedia.find('.youtube-video:first');\n var $myVideo = $multimedia.find('.my-video:first');\n var $myVideoDelete = $multimedia.find('.delete-my-video');\n var $myVideoButton = $multimedia.find('.update-my-video');\n var $youtubePlayer;\n switch($type){\n case 'youtubeVideoOrVimeo':\n var $vimeoRegex = new RegExp ('(vimeo)','gi');\n var $youtubeRegex = new RegExp ('(youtube)','gi');\n $youtubePlayer = libs.memoryGet('youtube-video') ? libs.memoryGet('youtube-video') : false;\n try {\n $youtubePlayer.destroy();\n } catch (e) {\n\n }\n if($lounge.video_url && $lounge.video_url != '' && $lounge.video_url.match($vimeoRegex)){\n var $url = $lounge.video_url.split('/');\n var $vimeoId = $url[$url.length - 1];\n var $vimeoPlayer = new Vimeo.Player($youtubeVideo[0], {\n id:$vimeoId,\n height: 360,\n loop: false,\n autoplay:true,\n muted:true\n });\n }\n if($lounge.video_url && $lounge.video_url != '' && $lounge.video_url.match($youtubeRegex)){\n var $url = new URL($lounge.video_url);\n window.YT.ready(function() {\n $youtubePlayer = new YT.Player($youtubeVideo[0], {\n height: '360',\n width: '100%',\n videoId: $url.searchParams.get('v'),\n events: {\n 'onReady': function () {\n $youtubePlayer.mute();\n $youtubePlayer.playVideo();\n },\n 'onError': function () {\n $youtubeVideo.hide();\n }\n }\n });\n });\n }\n libs.memorySave('youtube-video', $youtubePlayer);\n break;\n case 'myVideo':\n var $myPlayer = libs.memoryGet('my-video') ? libs.memoryGet('my-video') : false;\n try {\n $myPlayer.destroy();\n } catch (e) {\n\n }\n $myPlayer = new Artplayer({\n width: '100%',\n height: '360px',\n destroy:true,\n container: $myVideo[0],\n title: $lounge.name,\n url: $lounge.video_root_lounge,\n mutex: true,\n muted:true,\n play: true,\n controls: [\n {\n position: 'right',\n html: 'Fullscreen',\n click: function() {\n nurseslounge_lounge_overview.information_location_video_fullscreen($myPlayer, $lounge, false);\n },\n },\n ],\n moreVideoAttr: {\n crossOrigin: 'anonymous'\n }\n }).on('ready', function() {\n $myPlayer.player.pause = true;\n $myPlayer.player.play = true;\n $myVideoButton.hide();\n $myVideoDelete.show();\n }).on('pause', function(){\n $myPlayer.mask.show = false;\n });\n libs.memorySave('my-video', $myPlayer);\n break;\n }\n },\n information_administrator_tab_request_files:function($formData, cback){\n $.ajax({\n type: 'POST',\n url: '/lounge/set',\n data: $formData,\n cache: false,\n contentType: false,\n processData: false,\n success: function ($data) {\n libs.expire($data);\n cback($data);\n }\n });\n },\n information_administrator_tab_request:function($params, cback){\n $.ajax({\n url: \"/lounge/set\",\n method: \"POST\",\n cache:false,\n dataType: \"json\",\n data:$params,\n success: function ($data) {\n libs.expire($data);\n cback($data);\n }\n });\n },\n\n information_administrator_tab_virtual_tour:function($action, $tab, $allowTabs, $params, $data, cback){\n var $virtualTourTitle = $data.data && $data.data.lounge && $data.data.lounge.virtual_tour ? $data.data.lounge.virtual_tour : null;\n var $virtualTourRootLounge = $data.data && $data.data.lounge && $data.data.lounge.virtual_tour_root_lounge ? $data.data.lounge.virtual_tour_root_lounge : null;\n var $modal = $(\"#nurseslounge-lounge-information-edit-modal\");\n var $virtualTour = $modal.find(\".lounge-information-modal-container #virtualTour .container\");\n var $virtualTourWidget = $virtualTour.find('.virtualTour');\n var $updateImage = $virtualTour.find(\".update-my-image\");\n var $deleteImage = $virtualTour.find(\".delete\");\n var $title = $virtualTour.find(\"input[name='title']\");\n var $file = $virtualTour.find(\"input[name='file']\");\n $deleteImage.hide();\n if($virtualTourTitle && $virtualTourRootLounge) {\n $title.val($virtualTourTitle);\n $virtualTourWidget.html('').promise().done(function () {\n $virtualTourWidget.append('' +\n '')\n .ready(function () {\n $virtualTourWidget.panorama({\n control_display: 'auto',\n direction: 'left',\n autostar: 1,\n container: $('.virtualTourContainer'),\n selectionEvent: function ($e, $start) {\n\n }\n });\n });\n });\n $deleteImage.unbind().click(function(){\n nurseslounge_lounge_overview.information_administrator_tab_virtual_tour_delete($params, function(){\n libs.refreshBoxFrom('.page-contents', $params, function(){\n nurseslounge_lounge.submenu($params, function(){\n nurseslounge_lounge_overview.init($params, function($data){\n nurseslounge_lounge_overview.information_administrator_select_tab($action, $tab, $allowTabs, $params, cback);\n });\n });\n });\n });\n });\n $deleteImage.show();\n }\n $title.unbind().on('keyup keydown keypress',function(){\n $(\".virtualTourContainer\").find('.panorama-title').html($title.val());\n });\n $file.unbind().change(function(){\n var $reader = new FileReader();\n $reader.onload = function($e) {\n $virtualTourWidget.html('').append('' +\n '')\n .ready(function(){\n $virtualTourWidget.panorama({\n control_display: 'auto',\n direction:'left',\n autostar: 1,\n container:$('.virtualTourContainer'),\n selectionEvent:function($e, $start){\n\n }\n });\n });\n };\n $reader.readAsDataURL(this.files[0]);\n });\n $updateImage.unbind().click(function(){\n $file.click();\n });\n nurseslounge_lounge_overview.information_administrator_tab_virtual_tour_validate(function($validator){\n if (!$file[0].files[0]) {\n $validator.showErrors({file: \"Update a Panoramic Image\"});\n return false;\n }\n var $formData = new FormData();\n $formData.append('_token', $('meta[name=\"csrf-token\"]').attr('content'));\n $formData.append('user_id', $params.user_id);\n $formData.append('key', $params.key);\n $formData.append('title', $title.val());\n $formData.append('file', $file[0].files[0]);\n nurseslounge_lounge_overview.information_administrator_tab_virtual_tour_request($formData, function($data){\n libs.refreshBoxFrom('.page-contents', $params, function(){\n nurseslounge_lounge.submenu($params, function(){\n nurseslounge_lounge_overview.init($params, function($data){\n nurseslounge_lounge_overview.information_administrator_select_tab($action, $tab, $allowTabs, $params, cback);\n });\n });\n });\n });\n });\n cback();\n },\n information_administrator_tab_virtual_tour_validate:function(cback){\n var $validator;\n try {\n $validator = $(\"#nurseslounge-lounge-information-edit-modal .lounge-information-modal-container #virtualTour .container form\").validate();\n $validator.destroy();\n } catch (e) {\n\n }\n $validator = $(\"#nurseslounge-lounge-information-edit-modal .lounge-information-modal-container #virtualTour .container form\").validate({\n onsubmit: true,\n debug: true,\n rules: {\n title: {\n required: true,\n minlength: 3,\n maxlength: 191\n },\n file: {\n required: false\n }\n },\n messages: {\n title: {\n required: \"The title is required\",\n minlength: \"The title must have at least 3 characters\",\n maxlength: \"The title cannot exceed 191 characters\"\n },\n file: {\n required: \"The image is not required\"\n }\n },\n errorPlacement: function($error, $element){\n var $ele = $($element);\n var $name = $ele.attr(\"name\");\n if(!$ele.hasClass('is-invalid')){\n $ele.addClass('is-invalid');\n }\n $(\".\"+$name+\"_validate\").html($($error).text()).show();\n },\n success: function($error, $element) {\n var $ele = $($element);\n var $name = $ele.attr(\"name\");\n if($ele.hasClass('is-invalid')){\n $ele.removeClass('is-invalid');\n }\n $(\".\"+$name+\"_validate\").html('').hide();\n },\n submitHandler: function ($form) {\n cback($validator);\n return false;\n }\n });\n },\n information_administrator_tab_virtual_tour_request: function ($data, cback) {\n $.ajax({\n url: \"/lounge/virualTour/update\",\n type: \"POST\",\n cache: false,\n contentType: false,\n processData: false,\n data: $data,\n success: function ($data) {\n libs.expire($data);\n if ($data.status == 'success') {\n cback();\n }\n }\n });\n },\n information_administrator_tab_virtual_tour_delete:function($params, cback){\n $.ajax({\n url: \"/lounge/virualTour/delete\",\n method: \"POST\",\n cache:false,\n dataType: \"json\",\n data:$params,\n success: function ($data) {\n libs.expire($data);\n cback($data);\n }\n });\n },\n\n information_administrator_tab_recruiters:function($action, $tab, $allowTabs, $params, $data, cback){\n var $modal = $(\"#nurseslounge-lounge-information-edit-modal\");\n var $recruiters = $modal.find(\".lounge-information-modal-container #recruiters .container\");\n var $datatableSearchButton = $recruiters.find('.search');\n var $datatableFollowers = $recruiters.find('.datatable-followers');\n var $datatableRecruiters = $recruiters.find('.datatable-recruiters');\n var $datatableSearch = $recruiters.find(\"input[name='search']\");\n var $datatableSearchBinding;\n nurseslounge_lounge_overview.information_administrator_tab_datatable(\n $datatableFollowers,\n \"/lounge/followersRecruiters/datatable\",\n \"POST\",\n $params,\n function(){\n $datatableFollowers.find('.add').unbind().click(function(){\n var $id = $(this).data('id');\n $params = $.extend({},$params, {action:\"add\",id:$id,tab:'recruiters'});\n nurseslounge_lounge_overview.information_administrator_tab_recruiters_events($params, function($data){\n if($data.status == 'success') {\n libs.refreshBoxFrom(\".page-contents\", $params, function () {\n nurseslounge_lounge.submenu($params, function(){\n nurseslounge_lounge_overview.init($params, function($data){\n dataTable.reload($datatableFollowers);\n dataTable.reload($datatableRecruiters);\n });\n });\n });\n }\n });\n });\n },function($nRow){\n return $nRow;\n }, function($datatableFollowersTable){\n nurseslounge_lounge_overview.information_administrator_tab_datatable(\n $datatableRecruiters,\n \"/lounge/recruiters/datatable\",\n \"POST\",\n $params,\n function(){\n $datatableRecruiters.find('.delete').unbind().click(function(){\n var $id = $(this).data('id');\n $params = $.extend({},$params, {action:\"delete\",id:$id,tab:'recruiters'});\n nurseslounge_lounge_overview.information_administrator_tab_recruiters_events($params, function($data){\n if($data.status == 'success'){\n libs.refreshBoxFrom(\".page-contents\", $params, function () {\n nurseslounge_lounge.submenu($params, function(){\n nurseslounge_lounge_overview.init($params, function($data){\n dataTable.reload($datatableFollowers);\n dataTable.reload($datatableRecruiters);\n });\n });\n });\n }\n });\n });\n },function($nRow){\n return $nRow;\n }, function($datatableRecruitersTable){\n $datatableSearchButton.unbind().click(function () {\n $datatableFollowersTable.search($datatableSearch.val());\n $datatableRecruitersTable.search($datatableSearch.val());\n $datatableFollowersTable.draw();\n $datatableRecruitersTable.draw();\n });\n $datatableSearch.unbind().on('keypress keyup keydown blur', function () {\n try{\n clearTimeout($datatableSearchBinding);\n }catch (e) {\n\n }\n $datatableSearchBinding = setTimeout(function(){\n $datatableFollowersTable.search($datatableSearch.val());\n $datatableRecruitersTable.search($datatableSearch.val());\n $datatableFollowersTable.draw();\n $datatableRecruitersTable.draw();\n }, 1000);\n });\n if(cback != undefined){\n cback();\n }\n });\n });\n },\n information_administrator_tab_recruiters_events:function($params, cback){\n $.ajax({\n url: \"/lounge/recruiters/set\",\n method: \"POST\",\n cache:false,\n dataType: \"json\",\n data:$params,\n success: function ($data) {\n libs.expire($data);\n cback($data);\n }\n });\n },\n\n information_administrator_tab_owners:function($action, $tab, $allowTabs, $params, $data, cback){\n var $modal = $(\"#nurseslounge-lounge-information-edit-modal\");\n var $owners = $modal.find(\".lounge-information-modal-container #owners .container\");\n var $datatableSearchButton = $owners.find('.search');\n var $datatableFollowers = $owners.find('.datatable-followers');\n var $datatableOwners = $owners.find('.datatable-owners');\n var $datatableSearch = $owners.find(\"input[name='search']\");\n var $datatableSearchBinding;\n nurseslounge_lounge_overview.information_administrator_tab_datatable(\n $datatableFollowers,\n \"/lounge/followersOwners/datatable\",\n \"POST\",\n $params,\n function(){\n $datatableFollowers.find('.add').unbind().click(function(){\n var $id = $(this).data('id');\n $params = $.extend({},$params, {action:\"add\",id:$id,tab:'owners'});\n nurseslounge_lounge_overview.information_administrator_tab_owners_events($params, function($data){\n if($data.status == 'success') {\n libs.refreshBoxFrom(\".page-contents\", $params, function () {\n nurseslounge_lounge.submenu($params, function(){\n nurseslounge_lounge_overview.init($params, function($data){\n dataTable.reload($datatableFollowers);\n dataTable.reload($datatableOwners);\n });\n });\n });\n }\n });\n });\n },function($nRow){\n return $nRow;\n }, function($datatableFollowersTable){\n nurseslounge_lounge_overview.information_administrator_tab_datatable(\n $datatableOwners,\n \"/lounge/owners/datatable\",\n \"POST\",\n $params,\n function(){\n $datatableOwners.find('.delete').unbind().click(function(){\n var $id = $(this).data('id');\n $params = $.extend({},$params, {action:\"delete\",id:$id,tab:'owners'});\n nurseslounge_lounge_overview.information_administrator_tab_owners_events($params, function($data){\n if($data.status == 'success') {\n libs.refreshBoxFrom(\".page-contents\", $params, function () {\n nurseslounge_lounge.submenu($params, function(){\n nurseslounge_lounge_overview.init($params, function($data){\n dataTable.reload($datatableFollowers);\n dataTable.reload($datatableOwners);\n });\n });\n });\n }\n });\n });\n },function($nRow){\n return $nRow;\n }, function($datatableOwnersTable){\n $datatableSearchButton.unbind().click(function () {\n $datatableFollowersTable.search($datatableSearch.val());\n $datatableOwnersTable.search($datatableSearch.val());\n $datatableFollowersTable.draw();\n $datatableOwnersTable.draw();\n });\n $datatableSearch.unbind().on('keypress keyup keydown blur', function () {\n try{\n clearTimeout($datatableSearchBinding);\n }catch (e) {\n\n }\n $datatableSearchBinding = setTimeout(function(){\n $datatableFollowersTable.search($datatableSearch.val());\n $datatableOwnersTable.search($datatableSearch.val());\n $datatableFollowersTable.draw();\n $datatableOwnersTable.draw();\n }, 1000);\n });\n if(cback != undefined){\n cback();\n }\n });\n });\n },\n information_administrator_tab_owners_events:function($params, cback){\n $.ajax({\n url: \"/lounge/owners/set\",\n method: \"POST\",\n cache:false,\n dataType: \"json\",\n data:$params,\n success: function ($data) {\n libs.expire($data);\n cback($data);\n }\n });\n },\n\n //Datatable for recruiters and owners\n information_administrator_tab_datatable:function($element, $url, $method, $data, drawCallback, fnRowCallback, initComplete){\n var $table = $($element).DataTable({\n \"dom\": \"<'row'<'col-sm-3'l><'col-sm-3'f><'col-sm-6'p>>\" +\n \"<'row'<'col-sm-12'tr>>\" +\n \"<'row'<'col-sm-5'i><'col-sm-7'p>>\",\n \"iDisplayLength\": 3,\n \"aLengthMenu\": [[3],[3]],\n \"sPaginationType\": \"full_numbers\",\n \"bInfo\": false,\n \"bLengthChange\": false,\n \"autoWidth\": false,\n \"responsive\": true,\n \"bDestroy\": true,\n \"cache\": false,\n \"pageLength\": 3,\n \"pagingType\" : \"full_numbers\",\n \"searching\": true,\n \"processing\": true,\n \"stateSave\": false,\n \"serverSide\": true,\n \"initComplete\": function () {\n initComplete($table);\n },\n \"drawCallback\": function () {\n drawCallback($table);\n },\n \"fnRowCallback\": function($nRow){\n fnRowCallback($nRow);\n },\n \"ajax\": {\n \"data\":$data,\n \"url\":$url,\n \"type\":$method,\n \"datatype\":\"json\"\n }\n });\n $table.columns.adjust().draw();\n },\n\n information_administrator_tab_jobs:function($action, $tab, $params, $data, cback){\n nurseslounge_lounge_overview.information_administrator_tab_jobs_payment_control_form($data, $params, function(){\n nurseslounge_lounge_overview.information_administrator_tab_jobs_payment_graph_form($params, function(){\n nurseslounge_lounge_overview.information_administrator_tab_jobs_payment_table_form($action, $params, $data, function(){\n cback();\n });\n });\n });\n },\n information_administrator_tab_jobs_payment_control_form:function($data, $params, cback){\n var $modal = $(\"#nurseslounge-lounge-information-edit-modal\");\n var $jobs = $modal.find(\".lounge-information-modal-container #jobs .container\");\n var $controlForm = $jobs.find(\"form[name='control-form']\");\n var $buyMoreClicks = $controlForm.find(\".buy-more-clicks\");\n var $autoChargeToggleWrapper = $controlForm.find(\".autocharge-toggle-wrapper\");\n var $stripeForm = $jobs.find(\"form[name='stripe-form']\");\n var $paymentFormWrapper = $stripeForm.find(\".payment-form-wrapper\");\n $buyMoreClicks.unbind().click(function(){\n var $that = $(this);\n if(!$paymentFormWrapper.is(':visible')){\n nurseslounge_lounge_overview.information_administrator_tab_jobs_stripe($params, function(){\n $paymentFormWrapper.show();\n $autoChargeToggleWrapper.hide();\n $that.html('Close Payment Form');\n });\n }else{\n $paymentFormWrapper.hide();\n $autoChargeToggleWrapper.show();\n $that.html('Buy More Clicks');\n }\n });\n var $autoChargeToggle = $controlForm.find(\"#autochargeToggle\");\n $autoChargeToggle.unbind().change(function(){\n var $that = $(this);\n var $autocharge = $that.is(':checked') == true ? 1 : 0;\n var $newParams = $.extend({}, $params, {autocharge:$autocharge});\n nurseslounge_lounge_overview.information_administrator_tab_jobs_autopayment_request($newParams, function($data){\n if($data.data.autocharge == 1){\n if(!$controlForm.find('#autochargeToggle').is(':checked')){\n $controlForm.find('#autochargeToggle').prop('checked', true);\n }\n if(!$stripeForm.find('#autocharge').is(':checked')){\n $stripeForm.find('#autocharge').prop('checked', true);\n }\n }else{\n if($controlForm.find('#autochargeToggle').is(':checked')){\n $controlForm.find('#autochargeToggle').prop('checked', false);\n }\n if($stripeForm.find('#autocharge').is(':checked')){\n $stripeForm.find('#autocharge').prop('checked', false);\n }\n }\n });\n });\n if($data.data.lounge.lounge_type_id == 1 || $data.data.lounge.lounge_type_id == 2){\n $autoChargeToggleWrapper.show();\n $buyMoreClicks.show();\n }\n if(cback != undefined){\n cback();\n }\n },\n information_administrator_tab_jobs_autopayment_request:function($params, cback){\n $.ajax({\n url: \"/lounge/jobs/autopayment\",\n method: \"POST\",\n cache:false,\n dataType: \"json\",\n data:$params,\n success: function ($data) {\n libs.expire($data);\n cback($data);\n }\n });\n },\n information_administrator_tab_jobs_stripe:function($params, cback){\n try{\n var $cardSaved = libs.memoryGet('nurseslounge_lounge_overview_card');\n if($cardSaved){\n $cardSaved.destroy();\n }\n }catch ($e){\n\n }\n var $modal = $(\"#nurseslounge-lounge-information-edit-modal\");\n var $jobs = $modal.find(\".lounge-information-modal-container #jobs .container\");\n var $stripeForm = $jobs.find(\"form[name='stripe-form']\");\n var $controlForm = $jobs.find(\"form[name='control-form']\");\n var $buyMoreClicks = $controlForm.find(\".buy-more-clicks\");\n var $autoChargeToggleWrapper = $controlForm.find(\".autocharge-toggle-wrapper\");\n var $inputClicks = $stripeForm.find('input[name=\"clicks\"]');\n var $clicksAmount = $stripeForm.find('.clicks-amount');\n var $paymentFormWrapper = $stripeForm.find('.payment-form-wrapper');\n var $onProgressWrapper = $stripeForm.find('.on-progress-checkmark-wrapper');\n var $successWrapper = $stripeForm.find('.success-checkmark-wrapper');\n var $btnContinue = $stripeForm.find('.continue');\n var $submitButton = $stripeForm.find('button[type=\"submit\"]');\n $paymentFormWrapper.show();\n $successWrapper.hide();\n $onProgressWrapper.hide();\n $submitButton.prop('disabled', false);\n $inputClicks.unbind().change(function(){\n $clicksAmount.html('clicks = $'+($inputClicks.val() * 3)+'.00');\n });\n var $card = stripe.elements();\n var $style = {\n base: {\n 'lineHeight': '1.5',\n 'fontSize': '1.09em',\n 'color': '#00184A',\n 'fontFamily': \"sans-serif\",\n 'height':'100%',\n 'fontWeight':'100',\n 'opacity': '0.9',\n '::placeholder': {\n 'color':'#636c72',\n 'opacity':'0.9'\n }\n },\n invalid: {\n color: \"#fa755a\",\n iconColor: \"#fa755a\"\n },\n };\n var $cardDom = $stripeForm.find('.card:first')[0];\n var $cardEle = $card.create('card', {style:$style});\n $cardEle.mount($cardDom);\n libs.memorySave('nurseslounge_lounge_overview_card', $cardEle);\n nurseslounge_lounge_overview.information_administrator_tab_jobs_stripe_validate(function($form){\n var $objForm = libs.getObjForm($form);\n $buyMoreClicks.prop('disabled', true);\n $submitButton.prop('disabled', true);\n $paymentFormWrapper.hide();\n $onProgressWrapper.show();\n stripe.createToken($cardEle, {\n name:$objForm.name,\n address_country:'US',\n currency:'usd'\n }).then(function($res) {\n if($res.token && $res.token.id){\n var $newParams = $.extend({}, $objForm, $res, $params, {\n autocharge:$stripeForm.find('#autocharge').is(':checked') == true ? 1 : 0\n });\n nurseslounge_lounge_overview.information_administrator_tab_jobs_stripe_request($newParams, function($data){\n if($data.status == 'success'){\n $paymentFormWrapper.hide();\n $onProgressWrapper.hide();\n $successWrapper.show();\n $btnContinue.unbind().click(function(){\n $stripeForm[0].reset();\n $inputClicks.change();\n $buyMoreClicks.html('Buy More Clicks');\n $buyMoreClicks.prop('disabled', false);\n $successWrapper.hide();\n $autoChargeToggleWrapper.show();\n if($data.data.autocharge == 1){\n if(!$controlForm.find('#autochargeToggle').is(':checked')){\n $controlForm.find('#autochargeToggle').prop('checked', true);\n }\n if(!$stripeForm.find('#autocharge').is(':checked')){\n $stripeForm.find('#autocharge').prop('checked', true);\n }\n }else{\n if($controlForm.find('#autochargeToggle').is(':checked')){\n $controlForm.find('#autochargeToggle').prop('checked', false);\n }\n if($stripeForm.find('#autocharge').is(':checked')){\n $stripeForm.find('#autocharge').prop('checked', false);\n }\n }\n nurseslounge_lounge_overview.information_administrator_tab_jobs_payment_graph_form($params);\n });\n }else{\n var $validator = $stripeForm.validate();\n $validator.showErrors({\"card\": $data.data.msg});\n $stripeForm.find(\"input[name='card']\").val('');\n $submitButton.prop('disabled', false);\n $buyMoreClicks.prop('disabled', false);\n $onProgressWrapper.hide();\n $paymentFormWrapper.show();\n }\n });\n }else{\n $submitButton.prop('disabled', false);\n $buyMoreClicks.prop('disabled', false);\n $onProgressWrapper.hide();\n $paymentFormWrapper.show();\n }\n });\n });\n $cardEle.on('change', function($e){\n if(!$e.complete && $e.error && $e.error.message){\n var $validator = $stripeForm.validate();\n $validator.showErrors({\"card\": $e.error.message});\n $stripeForm.find(\"input[name='card']\").val('');\n $stripeForm.find('.invalid-feedback').hide();\n $stripeForm.find('.error').removeClass('error');\n $stripeForm.find('.is-invalid').removeClass('is-invalid');\n }else{\n $stripeForm.find(\"input[name='card']\").val('complete');\n }\n });\n if(cback != undefined){\n cback();\n }\n },\n information_administrator_tab_jobs_stripe_validate:function(cback){\n $.validator.addMethod('minStrict', function ($val, $el, $par) {\n return $val > $par;\n });\n var $modal = $(\"#nurseslounge-lounge-information-edit-modal\");\n var $jobs = $modal.find(\".lounge-information-modal-container #jobs .container\");\n var $stripeForm = $jobs.find(\"form[name='stripe-form']\")\n var $validator;\n try {\n $validator = $stripeForm.validate();\n $validator.destroy();\n }catch (e) {\n\n }\n $validator = $stripeForm.validate({\n onsubmit: true,\n debug: true,\n ignore: '*:not(.validate)',\n rules: {\n clicks: {\n required: true,\n minStrict: 99,\n number: true\n },\n name: {\n required: true,\n minlength: 3,\n maxlength: 191,\n },\n card: {\n required: true\n }\n },\n messages: {\n clicks:{\n required: \"The clicks is required\",\n minStrict:\"The clicks should be greater than 99\",\n number: \"The clicks should be a number\"\n },\n name:{\n required: \"The name is required\",\n minlength: \"The name must have at least 3 characters\",\n maxlength: \"The name cannot exceed 191 characters\"\n },\n card:{\n required: \"The card is required\"\n }\n },\n errorPlacement: function($error, $element){\n var $ele = $($element);\n var $name = $ele.attr(\"name\");\n if(!$ele.hasClass('is-invalid')){\n $ele.addClass('is-invalid');\n }\n $(\".\"+$name+\"_validate\").html($($error).text()).show();\n },\n success: function($error, $element) {\n var $ele = $($element);\n var $name = $ele.attr(\"name\");\n if($ele.hasClass('is-invalid')){\n $ele.removeClass('is-invalid');\n }\n $(\".\"+$name+\"_validate\").html('').hide();\n },\n submitHandler: function($form) {\n cback($form);\n return false;\n }\n });\n },\n information_administrator_tab_jobs_stripe_request:function($params, cback){\n $.ajax({\n url: \"/lounge/jobs/payment\",\n method: \"POST\",\n cache:false,\n dataType: \"json\",\n data:$params,\n success: function ($data) {\n libs.expire($data);\n cback($data);\n }\n });\n },\n information_administrator_tab_jobs_payment_graph_form:function($params, cback){\n var $modal = $(\"#nurseslounge-lounge-information-edit-modal\");\n var $jobs = $modal.find(\".lounge-information-modal-container #jobs .container\");\n var $graphForm = $jobs.find(\"form[name='graph-form']\");\n var $graphType = $graphForm.find(\"select[name='graphType']\");\n var $filterFromDate = $graphForm.find(\".filter_from_date:first\");\n var $resetFromDate = $graphForm.find(\".reset_from_date:first\");\n var $filterToDate = $graphForm.find(\".filter_to_date:first\");\n var $resetToDate = $graphForm.find(\".reset_to_date:first\");\n var $createJob = $graphForm.find(\".create-job\");\n $graphType.unbind().change(function(){\n nurseslounge_lounge_overview.information_administrator_tab_jobs_payment_statistics($params);\n });\n $filterFromDate.datepicker('clearDates').on('changeDate', function ($e) {\n nurseslounge_lounge_overview.information_administrator_tab_jobs_payment_statistics($params);\n });\n $filterToDate.datepicker('clearDates').on('changeDate', function ($e) {\n nurseslounge_lounge_overview.information_administrator_tab_jobs_payment_statistics($params);\n });\n $resetFromDate.unbind().click(function(){\n $filterFromDate.val(\"\").datepicker(\"update\");\n nurseslounge_lounge_overview.information_administrator_tab_jobs_payment_statistics($params);\n });\n $resetToDate.unbind().click(function(){\n $filterToDate.val(\"\").datepicker(\"update\");\n nurseslounge_lounge_overview.information_administrator_tab_jobs_payment_statistics($params);\n });\n $createJob.unbind().click(function(){\n $modal.modal('hide');\n nurseslounge_job_jobDetail.information_request_select_tab('create', 'job_information', {\n 'job_information': true,\n 'job_location': true\n }, $params, function () {\n $(\"#nurseslounge-job-information-edit-modal\").scrollTop(0);\n $(\"#nurseslounge-job-information-edit-modal\").modal('show');\n });\n });\n var $today = new Date();\n var $firstDay = new Date($today.getFullYear(), $today.getMonth(), 1);\n $firstDay = String($firstDay.getDate()).padStart(2, '0');\n var $lastDay = new Date($today.getFullYear(), $today.getMonth() + 1, 0);\n $lastDay = String($lastDay.getDate()).padStart(2, '0');\n var $mm = String($today.getMonth() + 1).padStart(2, '0');\n var $yyyy = $today.getFullYear();\n $filterFromDate.val($mm+'/'+$firstDay+'/'+$yyyy).datepicker(\"update\");\n $filterToDate.val($mm+'/'+$lastDay+'/'+$yyyy).datepicker(\"update\");\n nurseslounge_lounge_overview.information_administrator_tab_jobs_payment_statistics($params);\n if(cback != undefined){\n cback();\n }\n },\n information_administrator_tab_jobs_payment_statistics:function($params){\n var $modal = $(\"#nurseslounge-lounge-information-edit-modal\");\n var $jobs = $modal.find(\".lounge-information-modal-container #jobs .container\");\n var $graphForm = $jobs.find(\"form[name='graph-form']\");\n var $graphType = $graphForm.find(\"select[name='graphType']\");\n var $filterFromDate = $graphForm.find(\".filter_from_date:first\");\n var $filterToDate = $graphForm.find(\".filter_to_date:first\");\n var $sqOne = $graphForm.find(\".sq-one\");\n var $sqOneText = $graphForm.find(\".sq-one-text\");\n var $sqOneVal = $graphForm.find(\".sq-one-val\");\n var $sqTwo = $graphForm.find(\".sq-two\");\n var $sqTwoText = $graphForm.find(\".sq-two-text\");\n var $sqTwoVal = $graphForm.find(\".sq-two-val\");\n var $sqThree = $graphForm.find(\".sq-three\");\n var $sqThreeText = $graphForm.find(\".sq-three-text\");\n var $sqThreeVal = $graphForm.find(\".sq-three-val\");\n var $sqFour = $graphForm.find(\".sq-four\");\n var $sqFourText = $graphForm.find(\".sq-four-text\");\n var $sqFourVal = $graphForm.find(\".sq-four-val\");\n var $morrisConfig;\n $params = $.extend({}, $params,\n {\n filter_from_date:$filterFromDate.val(),\n filter_to_date:$filterToDate.val(),\n }\n );\n nurseslounge_lounge_overview.information_administrator_tab_jobs_payment_statistics_request($params, function($data) {\n if($data.data.one_txt != ''){\n $sqOne.show();\n }else{\n $sqOne.hide();\n }\n $sqOneText.html($data.data.one_txt);\n $sqOneVal.html($data.data.one_val);\n if($data.data.two_txt != ''){\n $sqTwo.show();\n }else{\n $sqTwo.hide();\n }\n $sqTwoText.html($data.data.two_txt);\n $sqTwoVal.html($data.data.two_val);\n if($data.data.three_txt != ''){\n $sqThree.show();\n }else{\n $sqThree.hide();\n }\n $sqThreeText.html($data.data.three_txt);\n $sqThreeVal.html($data.data.three_val);\n if($data.data.four_txt != ''){\n $sqFour.show();\n }else{\n $sqFour.hide();\n }\n $sqFourText.html($data.data.four_txt);\n $sqFourVal.html($data.data.four_val);\n try {\n $(\"#nurseslounge-lounge-information-jobs-statistics-graph\").empty();\n } catch (e) {\n\n }\n var $lineColors = ['gray', 'red', 'blue'];\n for(var $s = 0; $s < $data.data.ykeys.length; $s++){\n var $randomColor = '#'+Math.floor(Math.random()*16777215).toString(16);\n $lineColors.push($randomColor);\n }\n $morrisConfig = {\n data: $data.data.graph,\n element: 'nurseslounge-lounge-information-jobs-statistics-graph',\n xkey: 'date',\n ykeys: $data.data.ykeys,\n xLabelAngle: 45,\n parseTime: false,\n labels: $data.data.labels,\n fillOpacity: 0.6,\n hideHover: 'auto',\n behaveLikeLine: true,\n resize: true,\n pointFillColors: ['#ffffff'],\n pointStrokeColors: ['black'],\n lineColors: $lineColors\n };\n $graphType = $graphType.val();\n nurseslounge_lounge_overview.morris_graph_type($graphType, $morrisConfig)\n });\n },\n morris_graph_type:function($graphType, $morrisConfig){\n switch ($graphType) {\n case 'area':\n new Morris.Area($morrisConfig);\n break;\n case 'line':\n new Morris.Line($morrisConfig);\n break;\n case 'bar':\n new Morris.Bar($morrisConfig);\n break;\n case 'tower':\n $morrisConfig.stacked = true;\n new Morris.Bar($morrisConfig);\n break;\n }\n },\n information_administrator_tab_jobs_payment_statistics_request:function($params, cback){\n $.ajax({\n url: \"/lounge/jobs/payment/statistics\",\n method: \"POST\",\n cache:false,\n dataType: \"json\",\n data:$params,\n success: function ($data) {\n libs.expire($data);\n cback($data);\n }\n });\n },\n information_administrator_tab_jobs_payment_table_form:function($action, $params, $data, cback){\n var $jobsCount = $data.data.jobs_count;\n var $jobsVisitsCount = $data.data.jobs_visits_count;\n var $jobsApplicationsCount = $data.data.jobs_applications_count;\n var $jobsRequestsInfoCount = $data.data.jobs_requests_info_count;\n var $modal = $(\"#nurseslounge-lounge-information-edit-modal\");\n var $jobs = $modal.find(\".lounge-information-modal-container #jobs .container\");\n var $tableForm = $jobs.find(\"form[name='table-form']\");\n var $datatableJobs = $tableForm.find(\".datatable-jobs\");\n var $datatableSearchButton = $tableForm.find(\".search\");\n var $datatableSearch = $tableForm.find(\"input[name='search']\");\n var $datatableSearchBinding;\n var $totalSpan = $tableForm.find(\".total\");\n var $visitsSpan = $tableForm.find(\".visits\");\n var $applicationsSpan = $tableForm.find(\".applications\");\n var $requestsInfoSpan = $tableForm.find(\".request-info\");\n var $filterFromDate = $tableForm.find(\".filter_from_date:first\");\n var $filterToDate = $tableForm.find(\".filter_to_date:first\");\n var $resetFromDate = $tableForm.find(\".reset_from_date:first\");\n var $resetToDate = $tableForm.find(\".reset_to_date:first\");\n var $selectAll = $tableForm.find(\"input[name='selectAll']\");\n var $selectAction = $tableForm.find(\".action\");\n nurseslounge_lounge_overview.information_administrator_tab_jobs_datatable(\n $datatableJobs,\n \"/lounge/jobs/datatable\",\n \"POST\",\n $params,\n function($table){\n $datatableJobs.find('.view').unbind().click(function(){\n var $link = $(this).data('link');\n window.open($link, '_blank', '');\n });\n $selectAll.unbind().click(function(){\n if($selectAll.is(':checked')){\n $datatableJobs.find('.selectRow').prop('checked', true);\n }else{\n $datatableJobs.find('.selectRow').prop('checked', false);\n }\n });\n if($selectAll.is(':checked')){\n $selectAll.prop('checked', false);\n }\n $selectAction.unbind().change(function(){\n var $selectedRows = [];\n $datatableJobs.find('.selectRow').each(function(){\n var $that = $(this);\n if($that.is(':checked')){\n $selectedRows.push($that.data('id'));\n }\n });\n if($selectAction.val() != '') {\n $params = $.extend({},$params, {selected_rows: $selectedRows, selected_action: $selectAction.val()});\n nurseslounge_lounge_overview.information_administrator_tab_jobs_actions($params, function () {\n nurseslounge_lounge_overview.information_lounge_get($action, $params, function($data) {\n $totalSpan.html($data.data.jobs_count);\n $visitsSpan.html($data.data.jobs_visits_count);\n $applicationsSpan.html($data.data.jobs_applications_count);\n $requestsInfoSpan.html($data.data.jobs_requests_info_count);\n dataTable.reload($datatableJobs);\n });\n });\n }\n });\n $selectAction.val('');\n },function($nRow){\n return $nRow;\n }, function($table){\n $datatableSearchButton.unbind().click(function () {\n $table.search($datatableSearch.val());\n $table.draw();\n });\n $datatableSearch.unbind().on('keypress keyup keydown blur', function () {\n try{\n clearTimeout($datatableSearchBinding);\n }catch (e) {\n\n }\n $datatableSearchBinding = setTimeout(function(){\n $table.search($datatableSearch.val());\n $table.draw();\n }, 1000);\n });\n $filterFromDate.datepicker('clearDates').on('changeDate', function ($e) {\n dataTable.reload($datatableJobs);\n });\n $filterToDate.datepicker('clearDates').on('changeDate', function ($e) {\n dataTable.reload($datatableJobs);\n });\n $resetFromDate.unbind().click(function(){\n $filterFromDate.val(\"\").datepicker(\"update\");\n dataTable.reload($datatableJobs);\n });\n $resetToDate.unbind().click(function(){\n $filterToDate.val(\"\").datepicker(\"update\");\n dataTable.reload($datatableJobs);\n });\n $totalSpan.html($jobsCount);\n $visitsSpan.html($jobsVisitsCount);\n $applicationsSpan.html($jobsApplicationsCount);\n $requestsInfoSpan.html($jobsRequestsInfoCount).promise().done(function(){\n if(cback != undefined){\n cback();\n }\n });\n });\n },\n information_administrator_tab_jobs_actions:function($params, cback){\n $.ajax({\n url: \"/lounge/jobs/action\",\n method: \"POST\",\n cache:false,\n dataType: \"json\",\n data:$params,\n success: function ($data) {\n libs.expire($data);\n cback($data);\n }\n });\n },\n information_administrator_tab_jobs_datatable:function($element, $url, $method, $data, drawCallback, fnRowCallback, initComplete){\n var $modal = $(\"#nurseslounge-lounge-information-edit-modal\");\n var $jobs = $modal.find(\".lounge-information-modal-container #jobs .container\");\n var $tableForm = $jobs.find(\"form[name='table-form']\");\n var $filterFromDate = $tableForm.find(\".filter_from_date:first\");\n var $filterToDate = $tableForm.find(\".filter_to_date:first\");\n var $table = $($element).DataTable({\n \"order\": [[1,\"desc\"]],\n \"dom\":\"<'row'<'col-sm-3'l><'col-sm-3'f><'col-sm-6'p>>\" +\n \"<'row'<'col-sm-12'tr>>\" +\n \"<'row'<'col-sm-5'i><'col-sm-7'p>>\",\n \"sScrollXInner\": \"auto\",\n \"bScrollCollapse\": true,\n \"bAutoWidth\": true,\n \"responsive\": false,\n \"scrollX\": true,\n \"paging\": true,\n \"bDestroy\": true,\n \"drawCallback\": function () {\n drawCallback($table);\n },\n \"fnRowCallback\": function($nRow){\n fnRowCallback($nRow);\n },\n \"initComplete\": function () {\n initComplete($table);\n },\n \"cache\": false,\n \"pageLength\": 10,\n \"pagingType\" : \"full_numbers\",\n \"processing\": true,\n \"serverSide\": true,\n \"stateSave\": true,\n \"ajax\": {\n \"data\":function ($d) {\n return $.extend($d, $data, {filter_from_date: $filterFromDate.val()}, {filter_to_date: $filterToDate.val()});\n },\n \"url\":$url,\n \"type\":$method,\n \"datatype\":\"json\"\n }\n });\n $table.columns.adjust().draw();\n },\n\n information_administrator_tab_degrees:function($action, $tab, $params, $data, cback){\n var $degreesCount = $data.data.degrees_count;\n var $degreesVisitsCount = $data.data.degrees_visits_count;\n var $degreesApplicationsCount = $data.data.degrees_applications_count;\n var $degreesRequestsInfoCount = $data.data.degrees_requests_info_count;\n var $modal = $(\"#nurseslounge-lounge-information-edit-modal\");\n var $degrees = $modal.find(\".lounge-information-modal-container #degrees .container\");\n var $datatableApplications = $degrees.find(\".datatable-degrees\");\n var $datatableSearchButton = $degrees.find(\".search\");\n var $datatableSearch = $degrees.find(\"input[name='search']\");\n var $datatableSearchBinding;\n var $totalSpan = $degrees.find(\".total\");\n var $visitsSpan = $degrees.find(\".visits\");\n var $applicationsSpan = $degrees.find(\".applications\");\n var $requestsInfoSpan = $degrees.find(\".request-info\");\n var $filterFromDate = $degrees.find(\".filter_from_date:first\");\n var $filterToDate = $degrees.find(\".filter_to_date:first\");\n var $resetFromDate = $degrees.find(\".reset_from_date:first\");\n var $resetToDate = $degrees.find(\".reset_to_date:first\");\n var $selectAll = $degrees.find(\"input[name='selectAll']\");\n var $selectAction = $degrees.find(\".action\");\n var $createDegree = $degrees.find(\".create-degree\");\n nurseslounge_lounge_overview.information_administrator_tab_degrees_datatable(\n $datatableApplications,\n \"/lounge/degrees/datatable\",\n \"POST\",\n $params,\n function($table){\n $datatableApplications.find('.view').unbind().click(function(){\n var $link = $(this).data('link');\n window.open($link, '_blank', '');\n });\n $selectAll.unbind().click(function(){\n if($selectAll.is(':checked')){\n $datatableApplications.find('.selectRow').attr('checked', true).prop('checked',true);\n }else{\n $datatableApplications.find('.selectRow').attr('checked', false).prop('checked',false);\n }\n });\n if($selectAll.is(':checked')){\n $selectAll.attr('checked', false).prop('checked',false);\n }\n $selectAction.unbind().change(function(){\n var $selectedRows = [];\n $datatableApplications.find('.selectRow').each(function(){\n var $that = $(this);\n if($that.is(':checked')){\n $selectedRows.push($that.data('id'));\n }\n });\n if($selectAction.val() != '') {\n $params = $.extend({},$params, {selected_rows: $selectedRows, selected_action: $selectAction.val()});\n nurseslounge_lounge_overview.information_administrator_tab_degrees_actions($params, function () {\n nurseslounge_lounge_overview.information_lounge_get($action, $params, function($data) {\n $totalSpan.html($data.data.degrees_count);\n $visitsSpan.html($data.data.degrees_visits_count);\n $applicationsSpan.html($data.data.degrees_applications_count);\n $requestsInfoSpan.html($data.data.degrees_requests_info_count);\n dataTable.reload($datatableApplications);\n if($selectAll.is(':checked')){\n $selectAll.attr('checked', false).prop('checked',false);\n }\n $selectAction.val('');\n });\n });\n }\n });\n $selectAction.val('');\n },function($nRow){\n return $nRow;\n }, function($table){\n $datatableSearchButton.unbind().click(function () {\n $table.search($datatableSearch.val());\n $table.draw();\n });\n $datatableSearch.unbind().on('keypress keyup keydown blur', function () {\n try{\n clearTimeout($datatableSearchBinding);\n }catch (e) {\n\n }\n $datatableSearchBinding = setTimeout(function(){\n $table.search($datatableSearch.val());\n $table.draw();\n }, 1000);\n });\n $filterFromDate.datepicker('clearDates').on('changeDate', function ($e) {\n dataTable.reload($datatableApplications);\n });\n $filterToDate.datepicker('clearDates').on('changeDate', function ($e) {\n dataTable.reload($datatableApplications);\n });\n $resetFromDate.unbind().click(function(){\n $filterFromDate.val(\"\").datepicker(\"update\");\n dataTable.reload($datatableApplications);\n });\n $resetToDate.unbind().click(function(){\n $filterToDate.val(\"\").datepicker(\"update\");\n dataTable.reload($datatableApplications);\n });\n $totalSpan.html($degreesCount);\n $visitsSpan.html($degreesVisitsCount);\n $applicationsSpan.html($degreesApplicationsCount);\n $requestsInfoSpan.html($degreesRequestsInfoCount).promise().done(function(){\n $createDegree.unbind().click(function(){\n $modal.modal('hide');\n nurseslounge_degree_information.information_request_select_tab('create', 'degree_information', {\n 'degree_information': true,\n 'degree_sponsor': true\n }, $params, function () {\n $(\"#nurseslounge-degree-information-edit-modal\").scrollTop(0);\n $(\"#nurseslounge-degree-information-edit-modal\").modal('show');\n });\n });\n if(cback != undefined){\n cback();\n }\n });\n });\n },\n information_administrator_tab_degrees_actions:function($params, cback){\n $.ajax({\n url: \"/lounge/degrees/action\",\n method: \"POST\",\n cache:false,\n dataType: \"json\",\n data:$params,\n success: function ($data) {\n libs.expire($data);\n cback($data);\n }\n });\n },\n information_administrator_tab_degrees_datatable:function($element, $url, $method, $data, drawCallback, fnRowCallback, initComplete){\n var $modal = $(\"#nurseslounge-lounge-information-edit-modal\");\n var $degrees = $modal.find(\".lounge-information-modal-container #degrees .container\");\n var $filterFromDate = $degrees.find(\".filter_from_date:first\");\n var $filterToDate = $degrees.find(\".filter_to_date:first\");\n var $table = $($element).DataTable({\n \"order\": [[6,\"desc\"]],\n \"dom\":\"<'row'<'col-sm-3'l><'col-sm-3'f><'col-sm-6'p>>\" +\n \"<'row'<'col-sm-12'tr>>\" +\n \"<'row'<'col-sm-5'i><'col-sm-7'p>>\",\n \"sScrollXInner\": \"auto\",\n \"bScrollCollapse\": true,\n \"bAutoWidth\": true,\n \"responsive\": false,\n \"scrollX\": true,\n \"paging\": true,\n \"bDestroy\": true,\n \"drawCallback\": function () {\n drawCallback($table);\n },\n \"fnRowCallback\": function($nRow){\n fnRowCallback($nRow);\n },\n \"initComplete\": function () {\n initComplete($table);\n },\n \"cache\": false,\n \"pageLength\": 10,\n \"pagingType\" : \"full_numbers\",\n \"processing\": true,\n \"serverSide\": true,\n \"stateSave\": true,\n \"ajax\": {\n \"data\":function ($d) {\n return $.extend($d, $data, {filter_from_date: $filterFromDate.val()}, {filter_to_date: $filterToDate.val()});\n },\n \"url\":$url,\n \"type\":$method,\n \"datatype\":\"json\"\n }\n });\n $table.columns.adjust().draw();\n },\n\n information_administrator_tab_import:function($action, $tab, $params, $data, cback){\n var $modal = $(\"#nurseslounge-lounge-information-edit-modal\");\n var $import = $modal.find(\".lounge-information-modal-container #import .container\");\n var $wizard = $import.find(\".wizard\");\n var $importDashboard = $wizard.find('#importDashboard');\n $params = $.extend({},$params, {action:$action,tab:'import'});\n libs.memorySave('import-wizard', $params);\n $wizard.smartWizard({\n selected: 0,\n theme: 'arrows',\n justified: true,\n autoAdjustHeight: false,\n backButtonSupport: false,\n cycleSteps: false,\n enableURLhash: false,\n keyboardSettings: {\n keyNavigation: false\n },\n anchorSettings: {\n anchorClickable: false,\n enableAllAnchors: false,\n markDoneStep: false,\n markAllPreviousStepsAsDone: false,\n removeDoneStepOnNavigateBack: false,\n enableAnchorOnDoneStep: false\n },\n toolbarSettings: {\n showNextButton: false,\n showPreviousButton: false\n }\n }).on(\"stepContent\", function($e, $anchorObject, $stepIndex, $stepDirection) {\n if($stepIndex == null){\n $stepIndex = 0;\n }\n libs.memoryUpdateObj('import-wizard', {step_index:($stepIndex+1)});\n return new Promise(function($resolve, $reject){\n nurseslounge_lounge_overview.information_administrator_tab_wizard($wizard, function($data) {\n $resolve($data);\n });\n });\n }).on(\"showStep\", function($e, $anchorObject, $stepIndex, $stepDirection) {\n if($stepDirection == 'forward' && $stepIndex != null){\n $stepIndex = ($stepIndex + 2);\n }\n if($stepIndex == null){\n $stepIndex = 1;\n }\n nurseslounge_lounge_overview.information_administrator_tab_import_events($stepIndex, $params, $wizard);\n });\n libs.memoryUpdateObj('import-wizard', {step_index:1});\n nurseslounge_lounge_overview.information_administrator_tab_wizard($wizard, function($data){\n $importDashboard.html($data).promise().done(function(){\n nurseslounge_lounge_overview.information_administrator_tab_import_events(1, $params, $wizard, function(){\n if(cback != undefined){\n cback();\n }\n });\n });\n });\n },\n information_administrator_tab_wizard:function($wizard, cback){\n $.ajax({\n url: \"/lounge/import/wizard\",\n method: \"POST\",\n cache:false,\n dataType: \"html\",\n data:libs.memoryGet('import-wizard'),\n beforeSend: function($xhr) {\n $wizard.smartWizard(\"loader\", \"show\");\n },\n success: function ($data) {\n libs.expire($data);\n $wizard.smartWizard(\"loader\", \"hide\");\n cback($data);\n }\n });\n },\n information_administrator_tab_import_events:function($index, $params, $wizard, cback){\n var $importWizard = libs.memoryGet('import-wizard');\n switch ($index) {\n case 1:\n var $importDashboard = $wizard.find('#importDashboard');\n var $xmlFeedType = $wizard.find('#importDashboard select[name=\"xml_feed_type\"]');\n var $datatableXmlFeedHistory = $wizard.find('#importDashboard .datatable-xml-feed-history:first');\n var $deleteButton = $wizard.find('#importDashboard .delete:first');\n $xmlFeedType.unbind().change(function(){\n libs.memoryUpdateObj('import-wizard', {xml_feed_type_id:$xmlFeedType.val()});\n $wizard.smartWizard(\"next\");\n });\n nurseslounge_lounge_overview.information_administrator_tab_import_history_datatable(\n $datatableXmlFeedHistory,\n \"/lounge/import/datatable\",\n \"POST\",\n $params,\n function(){\n },function($nRow){\n return $nRow;\n }, function($datatableRecruitersTable) {\n });\n nurseslounge_lounge_overview.information_administrator_tab_import_events_xml_feed_history_tables($datatableXmlFeedHistory);\n $deleteButton.unbind().click(function(){\n if(confirm(\"Delete this configuration\")) {\n nurseslounge_lounge_overview.information_administrator_tab_import_dashboard_get(function () {\n libs.memorySave('import-wizard', $params);\n libs.memoryUpdateObj('import-wizard', {step_index: 1});\n nurseslounge_lounge_overview.information_administrator_tab_wizard($wizard, function ($data) {\n $importDashboard.html($data).promise().done(function () {\n nurseslounge_lounge_overview.information_administrator_tab_import_events(1, $params, $wizard);\n });\n });\n });\n }\n });\n break;\n case 2:\n $importWizard = libs.memoryGet('import-wizard');\n var $backButton = $wizard.find('#source .back:first');\n var $analyzeButton = $wizard.find('#source .analyze:first');\n var $xmlFeedFile = $wizard.find('#source input[name=\"xmlFeedFile\"]');\n var $updateXmlFeedButton = $wizard.find('#source .updateXmlFeed:first');\n if($importWizard.xml_feed_type_id == 1){\n $analyzeButton.unbind().click(function(){\n libs.memoryUpdateObj('import-wizard', {xml_feed_url:$wizard.find('#source input[name=\"link\"]').val()});\n $wizard.smartWizard(\"next\");\n });\n }\n if($importWizard.xml_feed_type_id == 2){\n $xmlFeedFile.unbind().change(function(){\n var $that = $(this);\n nurseslounge_lounge_overview.information_administrator_tab_import_source_update_file($that, $importWizard, function($data){\n if($data.status == 'success'){\n libs.memoryUpdateObj('import-wizard', $data.data);\n $wizard.smartWizard(\"next\");\n }\n });\n });\n $updateXmlFeedButton.unbind().click(function() {\n $xmlFeedFile.click();\n });\n }\n if($importWizard.xml_feed_type_id == 3){\n nurseslounge_lounge_overview.information_administrator_tab_import_ftp_validate(function($form){\n var $formObj = libs.getObjForm($form);\n libs.memoryUpdateObj('import-wizard', $formObj);\n $wizard.smartWizard(\"next\");\n });\n }\n $backButton.unbind().click(function(){\n $wizard.smartWizard(\"prev\");\n });\n break;\n case 3:\n var $labelsFields = $wizard.find('#analyze .labels-fields:first');\n var $commandsDiv = $wizard.find('#analyze .commands:first');\n var $refreshXmlFeed = $wizard.find('#analyze .refresh-xml-feed:first');\n var $deleteXmlFeed = $wizard.find('#analyze .delete-xml-feed:first');\n var $backButton = $wizard.find('#analyze .back:first');\n var $autoconfigurationXmlFeed = $wizard.find('#analyze .autoconfiguration-xml-feed:first');\n var $xmlFeedPeriod = $wizard.find('#analyze select[name=\"xmlFeedPeriod\"]');\n var $monthlyWrapper = $wizard.find('#analyze .xmlFeed_period_monthly_wrapper');\n var $weeklyWrapper = $wizard.find('#analyze .xmlFeed_period_weekly_wrapper');\n var $startAtWrapper = $wizard.find('#analyze .xml_feed_start_at_wrapper');\n var $startAtContainer = $wizard.find('#analyze #xml_feed_start_at_container');\n var $xmlFeedTz = $wizard.find('#analyze select[name=\"xmlFeedTz\"]');\n var $xmlFeedStartAtTimeWrapper = $wizard.find('#analyze .xml_feed_start_at_time_wrapper');\n var $xmlFeedPeriodWeekly = $wizard.find('#analyze input[name=\"xmlFeedPeriodWeekly\"]');\n var $weeklyDays = $wizard.find('#analyze .weekly_days');\n $monthlyWrapper.hide();\n $weeklyWrapper.hide();\n $startAtWrapper.hide();\n $refreshXmlFeed.unbind().click(function(){\n nurseslounge_lounge_overview.information_administrator_tab_import_analyze_get(function ($data) {\n var $status = $data.status;\n if($status == 'error'){\n $wizard.smartWizard(\"prev\");\n }else{\n var $xmlFeed = $data.data.xml_feed;\n libs.memoryUpdateObj('import-wizard', {root:$xmlFeed.root});\n var $input = {\n \"options\":{\n \"associationMode\": \"oneToOne\",\n \"lineStyle\":\"square-ends\"\n },\n \"Lists\": [\n {\n \"name\": \"XmlFeed\",\n \"list\": $xmlFeed.labels_availables\n },\n {\n \"name\": \"NL Database\",\n \"list\": $xmlFeed.job_labels\n }\n ],\n \"existingLinks\" : $xmlFeed.set_labels\n };\n $labelsFields.fieldsLinker(\"init\",$input);\n $commandsDiv.html(nurseslounge_lounge_overview.information_administrator_tab_import_map_commands_html($xmlFeed.map)).promise().done(function(){});\n }\n });\n });\n $deleteXmlFeed.unbind().click(function(){\n nurseslounge_lounge_overview.information_administrator_tab_import_analyze_delete(function($data){\n $refreshXmlFeed.click();\n });\n });\n $backButton.unbind().click(function(){\n $wizard.smartWizard(\"prev\");\n });\n $autoconfigurationXmlFeed.unbind().click(function(){\n var $map = $labelsFields.fieldsLinker(\"getLinks\");\n var $stripTags = [\n 'Job Id',\n 'Job Title',\n 'Job Signing Bonus',\n 'Job Education Level',\n 'Job Years of Experience',\n 'Job Listing Type Number',\n 'Job Employer Type Number',\n 'Job Shift',\n 'Job Shift Length',\n 'Job Schedule',\n 'Job Compensation',\n //'Job Description',\n 'Job Email Or Url',\n 'Employer Name',\n 'Facility Name',\n 'Facility Address City',\n 'Facility Address State',\n 'Facility Address Street',\n 'Facility Address Zip Code'\n ];\n var $dateParse = [\n 'Job Date Posted'\n ];\n $.each($map.links, function($i, $v){\n var $input = $commandsDiv.find(\"input[name='\"+$v.from+\"']\");\n if($.inArray($v.to, $stripTags) !== -1 && $input.val() == ''){\n $input.val('=>stripTags');\n }\n if($.inArray($v.to, $dateParse) !== -1 && $input.val() == ''){\n $input.val('=>dateParse');\n }\n });\n });\n $weeklyDays.unbind().change(function(){\n var $weeklySelectedDays = [];\n $weeklyDays.each(function(){\n var $that = $(this);\n var $val = $that.data('value');\n if($that.prop('checked')){\n $weeklySelectedDays.push($val);\n }\n });\n $xmlFeedPeriodWeekly.val($weeklySelectedDays.join(','));\n });\n var $xmlFeedPeriodWeeklyVal = $xmlFeedPeriodWeekly.val();\n if($xmlFeedPeriodWeeklyVal != ''){\n var $xmlFeedPeriodWeeklyDays = $xmlFeedPeriodWeeklyVal.split(',');\n $weeklyDays.prop('checked', false);\n $.each($xmlFeedPeriodWeeklyDays, function($i, $v){\n $wizard.find(\"#analyze .weekly_days[data-value='\"+$v+\"']\").prop('checked', true);\n });\n }else{\n $weeklyDays.prop('checked', false);\n }\n $xmlFeedTz.unbind().change(function(){\n var $that = $(this);\n var $val = $that.val();\n if($val != ''){\n var $now = moment().tz($val);\n $startAtContainer.remove();\n $xmlFeedStartAtTimeWrapper.html('' +\n '
    ' +\n ' ' +\n '
    ' +\n '
    ' +\n ' ' +\n '
    ' +\n '
    ' +\n '
    ').promise().done(function(){\n $startAtContainer = $wizard.find('#analyze #xml_feed_start_at_container');\n $startAtContainer.datetimepicker({\n defaultDate: $now,\n format: 'LT',\n });\n });\n }\n });\n var $xmlFeedTzVal = $xmlFeedTz.val();\n if($xmlFeedTzVal != ''){\n var $val = $startAtContainer.data('value');\n var $utc = moment.utc($val, 'H:mm A')\n var $now = $utc.tz($xmlFeedTzVal);\n $startAtContainer.datetimepicker({\n defaultDate: $now,\n format: 'LT'\n });\n }else{\n var $timezone = moment.tz.guess();\n $xmlFeedTz.val($timezone);\n\n var $now = moment();\n $startAtContainer.datetimepicker({\n defaultDate: $now,\n format: 'LT',\n });\n }\n $xmlFeedPeriod.unbind().change(function(){\n var $that = $(this);\n var $val = $that.val();\n switch($val){\n case 'manually':\n $monthlyWrapper.hide();\n $weeklyWrapper.hide();\n $startAtWrapper.hide();\n break;\n case 'daily':\n $monthlyWrapper.hide();\n $weeklyWrapper.hide();\n $startAtWrapper.show();\n break;\n case 'monthly':\n $monthlyWrapper.show();\n $weeklyWrapper.hide();\n $startAtWrapper.show();\n break;\n case 'weekly':\n $monthlyWrapper.hide();\n $weeklyWrapper.show();\n $startAtWrapper.show();\n break;\n }\n });\n var $xmlFeedPeriodVal = $xmlFeedPeriod.val();\n switch($xmlFeedPeriodVal){\n case 'manually':\n $monthlyWrapper.hide();\n $weeklyWrapper.hide();\n $startAtWrapper.hide();\n break;\n case 'daily':\n $monthlyWrapper.hide();\n $weeklyWrapper.hide();\n $startAtWrapper.show();\n break;\n case 'monthly':\n $monthlyWrapper.show();\n $weeklyWrapper.hide();\n $startAtWrapper.show();\n break;\n case 'weekly':\n $monthlyWrapper.hide();\n $weeklyWrapper.show();\n $startAtWrapper.show();\n break;\n }\n nurseslounge_lounge_overview.information_administrator_tab_import_analyze_validate(function($validator, $form){\n var $map = {links:{}};\n try{\n $map = $labelsFields.fieldsLinker(\"getLinks\");\n }catch(e){\n }\n var $form = libs.getObjForm($form);\n var $xmlFeedDeleteBeforeUpdate = $form.xmlFeedDeleteBeforeUpdate;\n var $xmlFeedDefaultListingTypeId = $form.xmlFeedDefaultListingTypeId;\n var $xmlFeedDefaultEmployerTypeId = $form.xmlFeedDefaultEmployerTypeId;\n var $xmlFeedPeriod = $form.xmlFeedPeriod;\n var $xmlFeedPeriodMonthly = $form.xmlFeedPeriodMonthly;\n var $xmlFeedPeriodWeekly = $form.xmlFeedPeriodWeekly;\n var $xmlFeedTz = $form.xmlFeedTz;\n var $xmlFeedStartAt = $form.xmlFeedStartAt;\n\n delete $form.xmlFeedDeleteBeforeUpdate;\n delete $form.xmlFeedDefaultListingTypeId;\n delete $form.xmlFeedDefaultEmployerTypeId;\n delete $form.xmlFeedPeriod;\n delete $form.xmlFeedPeriodMonthly;\n delete $form.xmlFeedPeriodWeekly;\n delete $form.xmlFeedTz;\n delete $form.xmlFeedStartAt;\n if($map.links.length == 0){\n $validator.showErrors({\n \"labelFields\": \"The links relation are required\"\n });\n }else{\n libs.memoryUpdateObj('import-wizard', {\n map:{},\n commands:{},\n xmlFeedDeleteBeforeUpdate:null,\n xmlFeedDefaultListingTypeId:null,\n xmlFeedDefaultEmployerTypeId:null,\n xmlFeedPeriod:null,\n xmlFeedPeriodMonthly:null,\n xmlFeedPeriodWeekly:null,\n xmlFeedTz:null,\n xmlFeedStartAt:null,\n });\n libs.memoryUpdateObj('import-wizard', {\n map:$map,\n commands:$form,\n xmlFeedDeleteBeforeUpdate:$xmlFeedDeleteBeforeUpdate,\n xmlFeedDefaultListingTypeId:$xmlFeedDefaultListingTypeId,\n xmlFeedDefaultEmployerTypeId:$xmlFeedDefaultEmployerTypeId,\n xmlFeedPeriod:$xmlFeedPeriod,\n xmlFeedPeriodMonthly:$xmlFeedPeriodMonthly,\n xmlFeedPeriodWeekly:$xmlFeedPeriodWeekly,\n xmlFeedTz:$xmlFeedTz,\n xmlFeedStartAt:$xmlFeedStartAt,\n });\n $wizard.smartWizard(\"next\");\n }\n });\n $refreshXmlFeed.click();\n break;\n case 4:\n var $importDashboard = $wizard.find('#importDashboard');\n var $datatableXmlFeedHistory = $wizard.find('#execute .datatable-xml-feed-history:first');\n var $runButton = $wizard.find('#execute .run:first');\n var $initButton = $wizard.find('#execute .init:first');\n var $backButton = $wizard.find('#execute .back:first');\n var $progressBarFirst = $wizard.find('#execute .progress-bar:first');\n nurseslounge_lounge_overview.information_administrator_tab_import_history_datatable(\n $datatableXmlFeedHistory,\n \"/lounge/import/datatable\",\n \"POST\",\n $params,\n function(){\n },function($nRow){\n return $nRow;\n }, function($datatableRecruitersTable) {\n });\n nurseslounge_lounge_overview.information_administrator_tab_import_events_xml_feed_history_tables($datatableXmlFeedHistory);\n $runButton.unbind().click(function(){\n $progressBarFirst.show();\n $runButton.hide();\n libs.memoryUpdateObj('import-wizard', {progress_bar:true});\n nurseslounge_lounge_overview.information_administrator_tab_import_execute_progress($wizard);\n nurseslounge_lounge_overview.information_administrator_tab_import_execute(function(){\n libs.memoryUpdateObj('import-wizard', {progress_bar:false});\n dataTable.reload($datatableXmlFeedHistory);\n $runButton.show();\n $progressBarFirst.hide();\n });\n });\n $initButton.unbind().click(function(){\n $wizard.smartWizard(\"reset\");\n });\n $backButton.unbind().click(function(){\n $wizard.smartWizard(\"prev\");\n });\n break;\n }\n if(cback != undefined){\n cback();\n }\n },\n information_administrator_tab_import_events_xml_feed_history_tables:function($datatableXmlFeedHistory){\n var $reloadXmlFeedHistoryBinding;\n dataTable.reload($datatableXmlFeedHistory);\n $reloadXmlFeedHistoryBinding = setTimeout(function(){\n if($(\"a[data-target='#import']\").hasClass('active')){\n nurseslounge_lounge_overview.information_administrator_tab_import_events_xml_feed_history_tables($datatableXmlFeedHistory);\n }else{\n try{\n clearTimeout($reloadXmlFeedHistoryBinding);\n }catch ($e){\n\n }\n }\n }, 5000);\n },\n information_administrator_tab_import_history_datatable:function($element, $url, $method, $data, drawCallback, fnRowCallback, initComplete){\n var $table = $($element).DataTable({\n \"order\": [[0,\"desc\"]],\n \"dom\": \"<'row'<'col-sm-3'l><'col-sm-3'f><'col-sm-6'p>>\" +\n \"<'row'<'col-sm-12'tr>>\" +\n \"<'row'<'col-sm-5'i><'col-sm-7'p>>\",\n \"sPaginationType\": \"full_numbers\",\n \"bInfo\": true,\n \"bLengthChange\": true,\n \"autoWidth\": false,\n \"responsive\": true,\n \"bDestroy\": true,\n \"cache\": false,\n \"pagingType\" : \"full_numbers\",\n \"searching\": false,\n \"processing\": true,\n \"stateSave\": false,\n \"serverSide\": true,\n \"initComplete\": function () {\n initComplete($table);\n },\n \"drawCallback\": function () {\n drawCallback($table);\n },\n \"fnRowCallback\": function($nRow){\n fnRowCallback($nRow);\n },\n \"ajax\": {\n \"data\":$data,\n \"url\":$url,\n \"type\":$method,\n \"datatype\":\"json\"\n }\n });\n $table.columns.adjust().draw();\n },\n information_administrator_tab_import_dashboard_get:function(cback){\n $.ajax({\n url: \"/lounge/import/dashboard/delete\",\n method: \"POST\",\n cache:false,\n dataType: \"json\",\n data:libs.memoryGet('import-wizard'),\n success: function ($data) {\n libs.expire($data);\n if($data.status == 'success'){\n cback($data);\n }\n }\n });\n },\n information_administrator_tab_import_source_update_file:function($fileInput, $params, cback){\n var $formData = new FormData();\n $formData.append('_token', $('meta[name=\"csrf-token\"]').attr('content'));\n $formData.append('file', $fileInput[0].files[0]);\n $formData.append('key', $params.key);\n $formData.append('user_id', $params.user_id);\n $formData.append('xml_feed_type_id', $params.xml_feed_type_id);\n $formData.append('step_index', $params.step_index);\n $formData.append('tab', 'import');\n $.ajax({\n type: 'POST',\n url: '/lounge/import/source/update',\n data: $formData,\n cache: false,\n contentType: false,\n processData: false,\n success: function ($data) {\n libs.expire($data);\n cback($data);\n }\n });\n },\n information_administrator_tab_import_ftp_validate:function(cback){\n var $validator;\n try {\n $validator = $(\"#source form\").validate();\n $validator.destroy();\n }catch (e) {\n\n }\n $validator = $(\"#source form\").validate({\n onsubmit: true,\n debug: true,\n ignore: '*:not(.validate)',\n rules: {\n ftpProtocol: {\n required: true\n },\n ftpHost: {\n required: true,\n minlength: 2,\n maxlength: 600\n },\n ftpPort: {\n required: false,\n minlength: 3,\n maxlength: 8\n },\n ftpUser: {\n required: false,\n minlength: 3,\n maxlength: 600\n },\n ftpPassword: {\n required: false,\n minlength: 3,\n maxlength: 600\n },\n ftpFile: {\n required: true,\n minlength: 3,\n maxlength: 600\n }\n },\n messages: {\n ftpProtocol:{\n required: \"The protocol is required\"\n },\n ftpHost: {\n required: \"The host is required\",\n minlength: \"The host must have at least 3 characters\",\n maxlength: \"The host cannot exceed 600 characters\"\n },\n ftpPort: {\n required: \"The port is not required\",\n minlength: \"The port must have at least 2 characters\",\n maxlength: \"The port cannot exceed 8 characters\"\n },\n ftpUser: {\n required: \"The user is not required\",\n minlength: \"The user must have at least 3 characters\",\n maxlength: \"The user cannot exceed 600 characters\"\n },\n ftpPassword: {\n required: \"The password is not required\",\n minlength: \"The password must have at least 3 characters\",\n maxlength: \"The password cannot exceed 600 characters\"\n },\n ftpFile: {\n required: \"The file is required\",\n minlength: \"The file must have at least 3 characters\",\n maxlength: \"The file cannot exceed 600 characters\"\n }\n },\n errorPlacement: function($error, $element){\n var $ele = $($element);\n var $name = $ele.attr(\"name\");\n if(!$ele.hasClass('is-invalid')){\n $ele.addClass('is-invalid');\n }\n $(\".\"+$name+\"_validate\").html($($error).text()).show();\n },\n success: function($error, $element) {\n var $ele = $($element);\n var $name = $ele.attr(\"name\");\n if($ele.hasClass('is-invalid')){\n $ele.removeClass('is-invalid');\n }\n $(\".\"+$name+\"_validate\").html('').hide();\n },\n submitHandler: function($form) {\n cback($form);\n return false;\n }\n });\n },\n information_administrator_tab_import_analyze_get:function(cback){\n $.ajax({\n url: \"/lounge/import/analyze/get\",\n method: \"POST\",\n cache:false,\n dataType: \"json\",\n data:libs.memoryGet('import-wizard'),\n success: function ($data) {\n libs.expire($data);\n cback($data);\n }\n });\n },\n information_administrator_tab_import_analyze_delete:function(cback){\n $.ajax({\n url: \"/lounge/import/analyze/delete\",\n method: \"POST\",\n cache:false,\n dataType: \"json\",\n data:libs.memoryGet('import-wizard'),\n success: function ($data) {\n libs.expire($data);\n if($data.status == 'success'){\n cback($data);\n }\n }\n });\n },\n information_administrator_tab_import_analyze_validate:function(cback){\n var $validator;\n try {\n $validator = $(\"#analyze form\").validate();\n $validator.destroy();\n }catch (e) {\n\n }\n $validator = $(\"#analyze form\").validate({\n onsubmit: true,\n debug: true,\n ignore: '*:not(.validate)',\n rules: {\n xmlFeedDeleteBeforeUpdate: {\n required: true\n },\n xmlFeedDefaultListingTypeId: {\n required: true\n },\n xmlFeedDefaultEmployerTypeId: {\n required: true\n },\n xmlFeedPeriod:{\n required: true\n },\n xmlFeedPeriodMonthly:{\n required: function(){\n var $val = $(\"#analyze form select[name='xmlFeedPeriod']\").val();\n return $val == 'monthly';\n }\n },\n xmlFeedPeriodWeekly: {\n required: function(){\n var $val = $(\"#analyze form select[name='xmlFeedPeriod']\").val();\n return $val == 'weekly';\n }\n },\n xmlFeedTz:{\n required: function(){\n var $val = $(\"#analyze form select[name='xmlFeedPeriod']\").val();\n return $val != 'manually';\n }\n },\n xmlFeedStartAt:{\n required: function(){\n var $val = $(\"#analyze form select[name='xmlFeedPeriod']\").val();\n return $val != 'manually';\n }\n },\n labelFields:{\n required: false\n }\n },\n messages: {\n xmlFeedDeleteBeforeUpdate:{\n required: \"The default Update Type is required\"\n },\n xmlFeedDefaultListingTypeId:{\n required: \"The default Listing Type is required\"\n },\n xmlFeedDefaultEmployerTypeId: {\n required: \"The default Employer Type is required\"\n },\n xmlFeedPeriod:{\n required: \"The period is required\"\n },\n xmlFeedPeriodMonthly:{\n required: \"The monthly day is required\"\n },\n xmlFeedPeriodWeekly:{\n required: \"The weekly days are required\"\n },\n xmlFeedTz:{\n required: \"The timezone is required\"\n },\n xmlFeedStartAt:{\n required: \"The start time is required\"\n },\n labelFields: {\n required: \"The links relation are required\"\n }\n },\n errorPlacement: function($error, $element){\n var $ele = $($element);\n var $name = $ele.attr(\"name\");\n if(!$ele.hasClass('is-invalid')){\n $ele.addClass('is-invalid');\n }\n $(\".\"+$name+\"_validate\").html($($error).text()).show();\n },\n success: function($error, $element) {\n var $ele = $($element);\n var $name = $ele.attr(\"name\");\n if($ele.hasClass('is-invalid')){\n $ele.removeClass('is-invalid');\n }\n $(\".\"+$name+\"_validate\").html('').hide();\n },\n submitHandler: function($form) {\n cback($validator, $form);\n return false;\n }\n });\n },\n information_administrator_tab_import_map_commands_html:function($data){\n var $chtml = '' +\n '
    ';\n $($data).each(function($i, $v){\n var $command = libs.isEmptyReturnNull($v.filter_command) == null ? '' : $v.filter_command;\n $chtml += '' +\n '
    ' +\n '
    ' +\n ' ' +\n '
    ' +\n '
    ' +\n ' ' +\n '
    ' +\n '
    ';\n });\n $chtml +='' +\n '
    ';\n return $chtml;\n },\n information_administrator_tab_import_execute:function(cback){\n $.ajax({\n url: \"/lounge/import/execute\",\n method: \"POST\",\n cache:false,\n dataType: \"json\",\n data:libs.memoryGet('import-wizard'),\n success: function ($data) {\n libs.expire($data);\n cback($data);\n }\n });\n },\n information_administrator_tab_import_execute_progress:function($wizard){\n var $progressBarFirst = $wizard.find('#execute .progress-bar:first');\n var $importWizard = libs.memoryGet('import-wizard');\n $.ajax({\n url: \"/lounge/import/execute/progress\",\n method: \"POST\",\n cache:false,\n dataType: \"json\",\n data:$importWizard,\n success: function ($data) {\n libs.expire($data);\n if($data.status == 'success' && $importWizard.progress_bar){\n $progressBarFirst.html($data.data.progress_percent+'%').promise().done(function(){\n $progressBarFirst.attr('aria-valuenow', $data.data.progress_percent);\n $progressBarFirst.width($data.data.progress_percent+'%');\n setTimeout(function(){\n nurseslounge_lounge_overview.information_administrator_tab_import_execute_progress($wizard);\n }, 2500);\n });\n }\n }\n });\n },\n\n information_administrator_tab_api:function($action, $tab, $params, $data, cback){\n var $modal = $(\"#nurseslounge-lounge-information-edit-modal\");\n var $import = $modal.find(\".lounge-information-modal-container #api .container\");\n var $wizard = $import.find(\".wizard\");\n var $apiDashboard = $wizard.find('#apiDashboard');\n $params = $.extend({},$params, {action:$action,tab:'api'});\n libs.memorySave('api-wizard', $params);\n $wizard.smartWizard({\n selected: 0,\n theme: 'arrows',\n justified: true,\n autoAdjustHeight: false,\n backButtonSupport: false,\n cycleSteps: false,\n enableURLhash: false,\n keyboardSettings: {\n keyNavigation: false\n },\n anchorSettings: {\n anchorClickable: false,\n enableAllAnchors: false,\n markDoneStep: false,\n markAllPreviousStepsAsDone: false,\n removeDoneStepOnNavigateBack: false,\n enableAnchorOnDoneStep: false\n },\n toolbarSettings: {\n showNextButton: false,\n showPreviousButton: false\n }\n }).on(\"stepContent\", function($e, $anchorObject, $stepIndex, $stepDirection) {\n if($stepIndex == null){\n $stepIndex = 0;\n }\n libs.memoryUpdateObj('api-wizard', {step_index:($stepIndex+1)});\n return new Promise(function($resolve, $reject){\n nurseslounge_lounge_overview.information_administrator_tab_api_wizard($wizard, function($data) {\n $resolve($data);\n });\n });\n }).on(\"showStep\", function($e, $anchorObject, $stepIndex, $stepDirection) {\n if($stepDirection == 'forward' && $stepIndex != null){\n $stepIndex = ($stepIndex + 2);\n }\n if($stepIndex == null){\n $stepIndex = 1;\n }\n nurseslounge_lounge_overview.information_administrator_tab_api_events($stepIndex, $params, $wizard);\n });\n libs.memoryUpdateObj('api-wizard', {step_index:1});\n nurseslounge_lounge_overview.information_administrator_tab_api_wizard($wizard, function($data){\n $apiDashboard.html($data).promise().done(function(){\n nurseslounge_lounge_overview.information_administrator_tab_api_events(1, $params, $wizard, function(){\n if(cback != undefined){\n cback();\n }\n });\n });\n });\n },\n information_administrator_tab_api_wizard:function($wizard, cback){\n $.ajax({\n url: \"/lounge/api/wizard\",\n method: \"POST\",\n cache:false,\n dataType: \"html\",\n data:libs.memoryGet('api-wizard'),\n beforeSend: function($xhr) {\n $wizard.smartWizard(\"loader\", \"show\");\n },\n success: function ($data) {\n libs.expire($data);\n $wizard.smartWizard(\"loader\", \"hide\");\n cback($data);\n }\n });\n },\n information_administrator_tab_api_events:function($index, $params, $wizard, cback){\n var $importWizard = libs.memoryGet('import-wizard');\n switch ($index) {\n case 1:\n var $apiDashboard = $wizard.find('#apiDashboard');\n var $apiType = $wizard.find('#apiDashboard select[name=\"api_type\"]');\n var $datatableApiHistory = $wizard.find('#apiDashboard .datatable-api-history:first');\n var $deleteButton = $wizard.find('#apiDashboard .delete:first');\n $apiType.unbind().change(function(){\n libs.memoryUpdateObj('api-wizard', {api_type_id:$apiType.val()});\n $wizard.smartWizard(\"next\");\n });\n nurseslounge_lounge_overview.information_administrator_tab_api_history_datatable(\n $datatableApiHistory,\n \"/lounge/api/datatable\",\n \"POST\",\n $params,\n function(){\n },function($nRow){\n return $nRow;\n }, function($datatableRecruitersTable) {\n\n });\n nurseslounge_lounge_overview.information_administrator_tab_api_events_api_history_tables($datatableApiHistory);\n $deleteButton.unbind().click(function(){\n if(confirm(\"Delete this configuration\")) {\n nurseslounge_lounge_overview.information_administrator_tab_api_dashboard_get(function () {\n libs.memorySave('api-wizard', $params);\n libs.memoryUpdateObj('api-wizard', {step_index: 1});\n nurseslounge_lounge_overview.information_administrator_tab_api_wizard($wizard, function ($data) {\n $apiDashboard.html($data).promise().done(function () {\n nurseslounge_lounge_overview.information_administrator_tab_api_events(1, $params, $wizard);\n });\n });\n });\n }\n });\n break;\n case 2:\n $importWizard = libs.memoryGet('import-wizard');\n var $backButton = $wizard.find('#source .back:first');\n var $analyzeButton = $wizard.find('#source .analyze:first');\n var $apiPeriodWeekly = $wizard.find('#source input[name=\"apiPeriodWeekly\"]');\n var $weeklyDays = $wizard.find('#source .weekly_days');\n var $apiTz = $wizard.find('#source select[name=\"apiTz\"]');\n var $startAtContainer = $wizard.find('#source #api_start_at_container');\n var $apiStartAtTimeWrapper = $wizard.find('#source .api_start_at_time_wrapper');\n var $apiPeriod = $wizard.find('#source select[name=\"apiPeriod\"]');\n var $monthlyWrapper = $wizard.find('#source .api_period_monthly_wrapper');\n var $weeklyWrapper = $wizard.find('#source .api_period_weekly_wrapper');\n var $startAtWrapper = $wizard.find('#source .api_start_at_wrapper');\n var $apiTypeId = $wizard.find('#source input[name=\"apiTypeId\"]').val();\n\n\n $weeklyDays.unbind().change(function(){\n var $weeklySelectedDays = [];\n $weeklyDays.each(function(){\n var $that = $(this);\n var $val = $that.data('value');\n if($that.prop('checked')){\n $weeklySelectedDays.push($val);\n }\n });\n $apiPeriodWeekly.val($weeklySelectedDays.join(','));\n });\n var $apiPeriodWeeklyVal = $apiPeriodWeekly.val();\n if($apiPeriodWeeklyVal != ''){\n var $apiPeriodWeeklyDays = $apiPeriodWeeklyVal.split(',');\n $weeklyDays.prop('checked', false);\n $.each($apiPeriodWeeklyDays, function($i, $v){\n $wizard.find(\"#source .weekly_days[data-value='\"+$v+\"']\").prop('checked', true);\n });\n }else{\n $weeklyDays.prop('checked', false);\n }\n $apiTz.unbind().change(function(){\n var $that = $(this);\n var $val = $that.val();\n if($val != ''){\n var $now = moment().tz($val);\n $startAtContainer.remove();\n $apiStartAtTimeWrapper.html('' +\n '
    ' +\n ' ' +\n '
    ' +\n '
    ' +\n ' ' +\n '
    ' +\n '
    ' +\n '
    ').promise().done(function(){\n $startAtContainer = $wizard.find('#source #api_start_at_container');\n $startAtContainer.datetimepicker({\n defaultDate: $now,\n format: 'LT',\n });\n });\n }\n });\n var $apiTzVal = $apiTz.val();\n if($apiTzVal != ''){\n var $val = $startAtContainer.data('value');\n var $utc = moment.utc($val, 'H:mm A')\n var $now = $utc.tz($apiTzVal);\n $startAtContainer.datetimepicker({\n defaultDate: $now,\n format: 'LT',\n });\n }else{\n var $timezone = moment.tz.guess();\n $apiTz.val($timezone);\n\n var $now = moment();\n $startAtContainer.datetimepicker({\n defaultDate: $now,\n format: 'LT',\n });\n }\n $apiPeriod.unbind().change(function(){\n var $that = $(this);\n var $val = $that.val();\n switch($val){\n case 'manually':\n $monthlyWrapper.hide();\n $weeklyWrapper.hide();\n $startAtWrapper.hide();\n break;\n case 'daily':\n $monthlyWrapper.hide();\n $weeklyWrapper.hide();\n $startAtWrapper.show();\n break;\n case 'monthly':\n $monthlyWrapper.show();\n $weeklyWrapper.hide();\n $startAtWrapper.show();\n break;\n case 'weekly':\n $monthlyWrapper.hide();\n $weeklyWrapper.show();\n $startAtWrapper.show();\n break;\n }\n });\n var $apiPeriodVal = $apiPeriod.val();\n switch($apiPeriodVal){\n case 'manually':\n $monthlyWrapper.hide();\n $weeklyWrapper.hide();\n $startAtWrapper.hide();\n break;\n case 'daily':\n $monthlyWrapper.hide();\n $weeklyWrapper.hide();\n $startAtWrapper.show();\n break;\n case 'monthly':\n $monthlyWrapper.show();\n $weeklyWrapper.hide();\n $startAtWrapper.show();\n break;\n case 'weekly':\n $monthlyWrapper.hide();\n $weeklyWrapper.show();\n $startAtWrapper.show();\n break;\n }\n\n nurseslounge_lounge_overview.information_administrator_tab_api_analyze_validate($apiTypeId, function($validator, $form){\n var $form = libs.getObjForm($form);\n libs.memoryUpdateObj('api-wizard', {\n apiConfiguration:$form.apiConfiguration,\n apiDefaultEmployerTypeId:$form.apiDefaultEmployerTypeId,\n apiDefaultListingTypeId:$form.apiDefaultListingTypeId,\n apiDeleteBeforeUpdate:$form.apiDeleteBeforeUpdate,\n apiPeriod:$form.apiPeriod,\n apiPeriodMonthly:$form.apiPeriodMonthly,\n apiPeriodWeekly:$form.apiPeriodWeekly,\n apiStartAt:$form.apiStartAt,\n apiTypeId:$form.apiTypeId,\n apiTz:$form.apiTz,\n companyIdentifier:$form.companyIdentifier,\n });\n $wizard.smartWizard(\"next\");\n });\n $backButton.unbind().click(function(){\n $wizard.smartWizard(\"prev\");\n });\n break;\n case 3:\n var $datatableApiHistory = $wizard.find('#execute .datatable-api-history:first');\n var $runButton = $wizard.find('#execute .run:first');\n var $initButton = $wizard.find('#execute .init:first');\n var $backButton = $wizard.find('#execute .back:first');\n var $progressBarFirst = $wizard.find('#execute .progress-bar:first');\n nurseslounge_lounge_overview.information_administrator_tab_api_history_datatable(\n $datatableApiHistory,\n \"/lounge/api/datatable\",\n \"POST\",\n $params,\n function(){\n },function($nRow){\n return $nRow;\n }, function($datatableRecruitersTable) {\n\n });\n nurseslounge_lounge_overview.information_administrator_tab_api_events_api_history_tables($datatableApiHistory);\n $runButton.unbind().click(function(){\n $progressBarFirst.show();\n $runButton.hide();\n libs.memoryUpdateObj('api-wizard', {progress_bar:true});\n nurseslounge_lounge_overview.information_administrator_tab_api_execute_progress($wizard);\n nurseslounge_lounge_overview.information_administrator_tab_api_execute(function(){\n libs.memoryUpdateObj('api-wizard', {progress_bar:false});\n dataTable.reload($datatableApiHistory);\n $runButton.show();\n $progressBarFirst.hide();\n });\n });\n $initButton.unbind().click(function(){\n $wizard.smartWizard(\"reset\");\n });\n $backButton.unbind().click(function(){\n $wizard.smartWizard(\"prev\");\n });\n break;\n }\n if(cback != undefined){\n cback();\n }\n },\n information_administrator_tab_api_history_datatable:function($element, $url, $method, $data, drawCallback, fnRowCallback, initComplete){\n var $table = $($element).DataTable({\n \"order\": [[0,\"desc\"]],\n \"dom\": \"<'row'<'col-sm-3'l><'col-sm-3'f><'col-sm-6'p>>\" +\n \"<'row'<'col-sm-12'tr>>\" +\n \"<'row'<'col-sm-5'i><'col-sm-7'p>>\",\n \"sPaginationType\": \"full_numbers\",\n \"bInfo\": true,\n \"bLengthChange\": true,\n \"autoWidth\": false,\n \"responsive\": true,\n \"bDestroy\": true,\n \"cache\": false,\n \"pagingType\" : \"full_numbers\",\n \"searching\": false,\n \"processing\": true,\n \"stateSave\": false,\n \"serverSide\": true,\n \"initComplete\": function () {\n initComplete($table);\n },\n \"drawCallback\": function () {\n drawCallback($table);\n },\n \"fnRowCallback\": function($nRow){\n fnRowCallback($nRow);\n },\n \"ajax\": {\n \"data\":$data,\n \"url\":$url,\n \"type\":$method,\n \"datatype\":\"json\"\n }\n });\n $table.columns.adjust().draw();\n },\n information_administrator_tab_api_events_api_history_tables:function($datatableApiHistory){\n var $reloadApiHistoryBinding;\n dataTable.reload($datatableApiHistory);\n $reloadApiHistoryBinding = setTimeout(function(){\n if($(\"a[data-target='#api']\").hasClass('active')){\n nurseslounge_lounge_overview.information_administrator_tab_api_events_api_history_tables($datatableApiHistory);\n }else{\n try{\n clearTimeout($reloadApiHistoryBinding);\n }catch ($e){\n\n }\n }\n }, 5000);\n },\n information_administrator_tab_api_dashboard_get:function(cback){\n $.ajax({\n url: \"/lounge/api/dashboard/delete\",\n method: \"POST\",\n cache:false,\n dataType: \"json\",\n data:libs.memoryGet('api-wizard'),\n success: function ($data) {\n libs.expire($data);\n if($data.status == 'success'){\n cback($data);\n }\n }\n });\n },\n information_administrator_tab_api_analyze_validate:function($apiTypeId, cback){\n var $validator;\n try {\n $validator = $(\"#source form\").validate();\n $validator.destroy();\n }catch (e) {\n\n }\n $validator = $(\"#source form\").validate({\n onsubmit: true,\n debug: true,\n ignore: '*:not(.validate)',\n rules: {\n companyIdentifier:{\n required: $apiTypeId == 1\n },\n apiConfiguration: {\n required: true\n },\n apiDeleteBeforeUpdate: {\n required: true\n },\n apiDefaultListingTypeId: {\n required: true\n },\n apiDefaultEmployerTypeId: {\n required: true\n },\n apiPeriod:{\n required: true\n },\n apiPeriodMonthly:{\n required: function(){\n var $val = $(\"#source form select[name='apiPeriod']\").val();\n return $val == 'monthly';\n }\n },\n apiPeriodWeekly: {\n required: function(){\n var $val = $(\"#source form select[name='apiPeriod']\").val();\n return $val == 'weekly';\n }\n },\n apiTz:{\n required: function(){\n var $val = $(\"#source form select[name='apiPeriod']\").val();\n return $val != 'manually';\n }\n },\n apiStartAt:{\n required: function(){\n var $val = $(\"#source form select[name='apiPeriod']\").val();\n return $val != 'manually';\n }\n }\n },\n messages: {\n companyIdentifier:{\n required: \"The company identifier is required\"\n },\n apiConfiguration:{\n required: \"The api configuration is required\"\n },\n apiDeleteBeforeUpdate:{\n required: \"The default Update Type is required\"\n },\n apiDefaultListingTypeId:{\n required: \"The default Listing Type is required\"\n },\n apiDefaultEmployerTypeId: {\n required: \"The default Employer Type is required\"\n },\n apiPeriod:{\n required: \"The period is required\"\n },\n apiPeriodMonthly:{\n required: \"The monthly day is required\"\n },\n apiPeriodWeekly:{\n required: \"The weekly days are required\"\n },\n apiTz:{\n required: \"The timezone is required\"\n },\n apiStartAt:{\n required: \"The start time is required\"\n }\n },\n errorPlacement: function($error, $element){\n var $ele = $($element);\n var $name = $ele.attr(\"name\");\n if(!$ele.hasClass('is-invalid')){\n $ele.addClass('is-invalid');\n }\n $(\".\"+$name+\"_validate\").html($($error).text()).show();\n },\n success: function($error, $element) {\n var $ele = $($element);\n var $name = $ele.attr(\"name\");\n if($ele.hasClass('is-invalid')){\n $ele.removeClass('is-invalid');\n }\n $(\".\"+$name+\"_validate\").html('').hide();\n },\n submitHandler: function($form) {\n cback($validator, $form);\n return false;\n }\n });\n },\n information_administrator_tab_api_execute:function(cback){\n $.ajax({\n url: \"/lounge/api/execute\",\n method: \"POST\",\n cache:false,\n dataType: \"json\",\n data:libs.memoryGet('api-wizard'),\n success: function ($data) {\n libs.expire($data);\n cback($data);\n }\n });\n },\n information_administrator_tab_api_execute_progress:function($wizard){\n var $progressBarFirst = $wizard.find('#execute .progress-bar:first');\n var $importWizard = libs.memoryGet('api-wizard');\n $.ajax({\n url: \"/lounge/api/execute/progress\",\n method: \"POST\",\n cache:false,\n dataType: \"json\",\n data:$importWizard,\n success: function ($data) {\n libs.expire($data);\n if($data.status == 'success' && $importWizard.progress_bar){\n $progressBarFirst.html($data.data.progress_percent+'%').promise().done(function(){\n $progressBarFirst.attr('aria-valuenow', $data.data.progress_percent);\n $progressBarFirst.width($data.data.progress_percent+'%');\n setTimeout(function(){\n nurseslounge_lounge_overview.information_administrator_tab_api_execute_progress($wizard);\n }, 2500);\n });\n }\n }\n });\n },\n\n information_administrator_tab_statistics:function($action, $tab, $params, $data, cback){\n var $statisticReport = $(\"#statistics .statistic-report:first\");\n var $days = $statisticReport.find('select[name=\"days\"]');\n var $userId = libs.memoryGet('user_id');\n $days.unbind().change(function(){\n var $that = $(this);\n var $key = $that.data('key');\n var $days = $that.val();\n $params = $.extend({}, $params,\n {\n user_id:$userId,\n key:$key,\n days:$days\n }\n );\n nurseslounge_lounge_overview.information_administrator_tab_statistics_request($params, function($chtml){\n $statisticReport.html($chtml).promise().done(function(){\n nurseslounge_lounge_overview.information_administrator_tab_statistics($action, $tab, $params, $data, cback);\n });\n });\n });\n if(cback != undefined){\n cback();\n }\n /*\n var $graphSelection = $(\"#statistics select[name='graphSelection']\");\n var $graphType = $(\"#statistics select[name='graphType']\");\n var $acumulate = $(\"#statistics select[name='acumulate']\");\n var $filterFromDate = $(\"#statistics .filter_from_date\");\n var $resetFromDate = $(\"#statistics .reset_from_date\");\n var $filterToDate = $(\"#statistics .filter_to_date\");\n var $resetToDate = $(\"#statistics .reset_to_date\");\n $graphSelection.unbind().change(function(){\n nurseslounge_lounge_overview.information_administrator_tab_statistics_event($params);\n });\n $graphType.unbind().change(function(){\n nurseslounge_lounge_overview.information_administrator_tab_statistics_event($params);\n });\n $acumulate.unbind().change(function(){\n nurseslounge_lounge_overview.information_administrator_tab_statistics_event($params);\n });\n $filterFromDate.datepicker('clearDates').on('changeDate', function ($e) {\n nurseslounge_lounge_overview.information_administrator_tab_statistics_event($params);\n });\n $filterToDate.datepicker('clearDates').on('changeDate', function ($e) {\n nurseslounge_lounge_overview.information_administrator_tab_statistics_event($params);\n });\n $resetFromDate.unbind().click(function(){\n $filterFromDate.val(\"\").datepicker(\"update\");\n nurseslounge_lounge_overview.information_administrator_tab_statistics_event($params);\n });\n $resetToDate.unbind().click(function(){\n $filterToDate.val(\"\").datepicker(\"update\");\n nurseslounge_lounge_overview.information_administrator_tab_statistics_event($params);\n });\n $filterFromDate.val($data.data.this_month[0]);\n $filterToDate.val($data.data.this_month[1]);\n nurseslounge_lounge_overview.information_administrator_tab_statistics_event($params);\n if(cback != undefined){\n cback();\n }\n */\n },\n /*\n information_administrator_tab_statistics_event:function($params){\n var $graphSelection = $(\"#statistics select[name='graphSelection']\");\n var $graphType = $(\"#statistics select[name='graphType']\");\n var $acumulate = $(\"#statistics select[name='acumulate']\");\n var $filterFromDate = $(\"#statistics .filter_from_date\");\n var $filterToDate = $(\"#statistics .filter_to_date\");\n var $sqOne = $(\"#statistics .sq-one\");\n var $sqOneText = $(\"#statistics .sq-one-text\");\n var $sqOneVal = $(\"#statistics .sq-one-val\");\n var $sqTwo = $(\"#statistics .sq-two\");\n var $sqTwoText = $(\"#statistics .sq-two-text\");\n var $sqTwoVal = $(\"#statistics .sq-two-val\");\n var $sqThree = $(\"#statistics .sq-three\");\n var $sqThreeText = $(\"#statistics .sq-three-text\");\n var $sqThreeVal = $(\"#statistics .sq-three-val\");\n var $sqFour = $(\"#statistics .sq-four\");\n var $sqFourText = $(\"#statistics .sq-four-text\");\n var $sqFourVal = $(\"#statistics .sq-four-val\");\n var $morrisConfig;\n $params = $.extend({},$params,\n {\n graph_selection:$graphSelection.val(),\n filter_from_date:$filterFromDate.val(),\n filter_to_date:$filterToDate.val(),\n acumulate:$acumulate.val()\n }\n );\n nurseslounge_lounge_overview.information_administrator_tab_statistics_request($params, function($data){\n if($data.data.one_txt != ''){\n $sqOne.show();\n }else{\n $sqOne.hide();\n }\n $sqOneText.html($data.data.one_txt);\n $sqOneVal.html($data.data.one_val);\n if($data.data.two_txt != ''){\n $sqTwo.show();\n }else{\n $sqTwo.hide();\n }\n $sqTwoText.html($data.data.two_txt);\n $sqTwoVal.html($data.data.two_val);\n if($data.data.three_txt != ''){\n $sqThree.show();\n }else{\n $sqThree.hide();\n }\n $sqThreeText.html($data.data.three_txt);\n $sqThreeVal.html($data.data.three_val);\n if($data.data.four_txt != ''){\n $sqFour.show();\n }else{\n $sqFour.hide();\n }\n $sqFourText.html($data.data.four_txt);\n $sqFourVal.html($data.data.four_val);\n try{\n $(\"#statistics-graph\").empty();\n }catch (e) {\n\n }\n $morrisConfig = {\n data:$data.data.graph,\n element:'statistics-graph',\n xkey:'date',\n ykeys:$data.data.ykeys,\n xLabelAngle: 45,\n parseTime: false,\n labels:$data.data.labels,\n fillOpacity:0.6,\n hideHover:'auto',\n behaveLikeLine:true,\n resize:true,\n pointFillColors:['#ffffff'],\n pointStrokeColors: ['black'],\n lineColors:['gray','red']\n };\n switch($graphType.val()){\n case 'area':\n new Morris.Area($morrisConfig);\n break;\n case 'line':\n new Morris.Line($morrisConfig);\n break;\n case 'bar':\n new Morris.Bar($morrisConfig);\n break;\n case 'tower':\n $morrisConfig.stacked = true;\n new Morris.Bar($morrisConfig);\n break;\n }\n });\n },\n */\n information_administrator_tab_statistics_request:function($params, cback){\n $.ajax({\n url: \"/lounge/statistics/get\",\n method: \"POST\",\n cache:false,\n dataType: \"html\",\n data:$params,\n success: function ($data) {\n libs.expire($data);\n cback($data);\n }\n });\n },\n\n information_tab_invite:function($action, $tab, $params, $data, cback){\n var $invite = $(\"#invite\");\n var $invitationsInput = $invite.find(\"input[name='invitations']\");\n var $checkInvitationButton = $invite.find(\".check-invitations\");\n var $updateInvitationsButton = $invite.find(\".update-invitations\");\n var $updateInvitationsButtonFile = $invite.find(\".file-update-invitations\");\n var $emailsDetected = $invite.find(\".emails-detected\");\n var $sendMassiveInvitations = $invite.find(\".send-massive-invitations\");\n var $sendInviteList = $invite.find(\".send-invite-list\");\n var $previousEmail = $invite.find(\".previous-email\");\n var $previousEmailSubject = $invite.find(\".previous-email-subject\");\n var $previousEmailContent = $invite.find(\".previous-email-content\");\n var $previousEmailWrapper = $invite.find(\".preview-email-wrapper\");\n var $multiEmail = $invitationsInput.unbind().multiEmail({\n delete: true,\n target:$sendInviteList,\n model:'' +\n '
  • ' +\n ' ' +\n ' ' +\n ' ' +\n ' ' +\n '
    ' +\n ' ' +\n '
    ' +\n '
  • ',\n removeEle:'.email-remove',\n emailSend:'.email-send',\n ajax:{\n method:'POST',\n url:'/myDashboard/myProfile/invite/exist',\n data:{\n user_id:libs.memoryGet('user_id')\n },\n dataType:'json'\n },\n callback:function($emails){\n nurseslounge_lounge_overview.information_tab_invite_invite($params, $emails, function(){\n setTimeout(function(){\n nurseslounge_lounge_overview.task_list_container(function($container){\n $params = $.extend({}, $params, {only:'owners'});\n nurseslounge_myDashboard_myProfile.task_list($container, $params);\n });\n }, 1000);\n });\n },\n });\n $sendInviteList.html('');\n $multiEmail.delete();\n $multiEmail.selector;\n $checkInvitationButton.unbind().click(function () {\n if($invitationsInput.val() != ''){\n var $event = $.Event(\"keydown\",{keyCode:32});\n $invitationsInput.trigger($event);\n }\n });\n $invitationsInput.keydown(function($e){\n var $code = $e.keyCode || $e.which;\n if($code == 13) {\n if($invitationsInput.val() != ''){\n var $event = $.Event(\"keydown\",{keyCode:32});\n $invitationsInput.trigger($event);\n }\n }\n });\n $updateInvitationsButtonFile.unbind().change(function(){\n $emailsDetected.html('');\n if(this.files && this.files[0]){\n var $formData = new FormData();\n $formData.append('_token', $('meta[name=\"csrf-token\"]').attr('content'));\n $formData.append('user_id', libs.memoryGet('user_id'));\n $formData.append('key', $params.key);\n $formData.append('tab', $params.tab);\n $formData.append('file', this.files[0]);\n nurseslounge_lounge_overview.information_tab_invite_massive_update($formData, function($data){\n var $emails = $data.data.emails;\n var $emailsCount = $emails.length;\n if($emailsCount > 0){\n $emailsDetected.html('We detect ' + $data.data.emails.length + ' email(s)').promise().done(function(){\n $updateInvitationsButtonFile.val('');\n $sendMassiveInvitations.unbind().click(function(){\n $(\"body\").append(\n '
    '+\n ''+\n ''+\n ''+\n ''+\n ''+\n '
    '\n );\n var $popUp = window.open(\"\", \"inviteResults\");\n $(\"body\").find(\"form[name='inviteResults']\").submit().remove();\n nurseslounge_lounge_overview.information_tab_invite_invite($params, $emails, function(){\n $updateInvitationsButtonFile.val('');\n $emailsDetected.html('');\n $sendMassiveInvitations.prop('disabled', true);\n setTimeout(function(){\n nurseslounge_lounge_overview.task_list_container(function($container){\n $params = $.extend({}, $params, {only:'owners'});\n nurseslounge_myDashboard_myProfile.task_list($container, $params);\n });\n }, 1000);\n setTimeout(function(){\n $popUp.document.write(\"';\n if($url.split('?')[1] != ''){\n $copyLinkText.val($url);\n }\n var $websitesnames = $data.data.websites_names;\n var $chtml = '';\n $.each($websitesnames, function($i, $v){\n $chtml += '';\n });\n var $logoHashId = $data.data.logoHashId;\n try{\n $websites.chosen(\"destroy\");\n }catch (e) {}\n $websites.html($chtml).promise().done(function(){\n $websites.val($logoHashId);\n $websites.chosen();\n $websites.unbind().change(function(){\n var $that = $(this);\n var $val = $that.val();\n $params = $.extend({}, $params, {logoHashId:$val});\n nurseslounge_lounge_overview.information_tab_create_logo_statistics($params);\n }).change();\n });\n });\n });\n cback();\n },\n information_create_logo_validate:function($params, cback){\n var $validator;\n try {\n $validator = $(\"#createLogo form:first\").validate();\n $validator.destroy();\n }catch (e) {\n\n }\n $validator = $(\"#createLogo form:first\").validate({\n onsubmit: true,\n debug: true,\n ignore: \"*:not(.validate)\",\n rules: {\n websiteName: {\n required: true,\n minlength: 3,\n maxlength: 191,\n remote: {\n url: \"/lounge/create/embed/logo/exist\",\n type: \"post\",\n data: {\n key: $params.key,\n user_id: $params.user_id,\n websiteName: function(){ return $(\"#createLogo form:first input[name='websiteName']\").val(); }\n }\n }\n },\n },\n messages: {\n websiteName: {\n required: \"The website name is required\",\n minlength: \"The website name must have at least 3 characters\",\n maxlength: \"The website name cannot exceed 191 characters\",\n remote:\"The website name exist, choose another\"\n }\n },\n errorPlacement: function($error, $element){\n var $ele = $($element);\n var $name = $ele.attr(\"name\");\n if(!$ele.hasClass('is-invalid')){\n $ele.addClass('is-invalid');\n }\n $(\".\"+$name+\"_validate\").html($($error).text()).show();\n },\n success: function($error, $element) {\n var $ele = $($element);\n var $name = $ele.attr(\"name\");\n if($ele.hasClass('is-invalid')){\n $ele.removeClass('is-invalid');\n }\n $(\".\"+$name+\"_validate\").html('').hide();\n },\n submitHandler: function($form) {\n cback($form);\n return false;\n }\n });\n },\n information_tab_create_logo_request:function($params, cback){\n $.ajax({\n url: \"/lounge/create/embed/logo\",\n method: \"POST\",\n cache:false,\n dataType: \"json\",\n data:$params,\n success: function ($data) {\n libs.expire($data);\n cback($data);\n }\n });\n },\n\n information_tab_create_logo_statistics:function($params){\n var $modal = $(\"#nurseslounge-lounge-information-edit-modal\");\n var $createLogo = $modal.find(\"#createLogo\");\n var $visitGraphType = $createLogo.find(\"select[name='visitGraphType']\");\n var $visitsFilterFromDate = $createLogo.find(\".visits_filter_from_date:first\");\n var $visitsResetFromDate = $createLogo.find(\".visits_reset_from_date:first\");\n var $visitsFilterToDate = $createLogo.find(\".visits_filter_to_date:first\");\n var $visitsResetToDate = $createLogo.find(\".visits_reset_to_date:first\");\n\n $visitGraphType.unbind().change(function(){\n nurseslounge_lounge_overview.information_tab_create_logo_statistics_graph($params);\n });\n $visitsFilterFromDate.datepicker('clearDates').on('changeDate', function ($e) {\n nurseslounge_lounge_overview.information_tab_create_logo_statistics_graph($params);\n });\n $visitsResetFromDate.unbind().click(function(){\n $visitsFilterFromDate.val(\"\").datepicker(\"update\");\n nurseslounge_lounge_overview.information_tab_create_logo_statistics_graph($params);\n });\n $visitsFilterToDate.datepicker('clearDates').on('changeDate', function ($e) {\n nurseslounge_lounge_overview.information_tab_create_logo_statistics_graph($params);\n });\n $visitsResetToDate.unbind().click(function(){\n $visitsFilterToDate.val(\"\").datepicker(\"update\");\n nurseslounge_lounge_overview.information_tab_create_logo_statistics_graph($params);\n });\n\n var $redirectGraphType = $createLogo.find(\"select[name='redirectGraphType']\");\n var $redirectFilterFromDate = $createLogo.find(\".redirect_filter_from_date:first\");\n var $redirectResetFromDate = $createLogo.find(\".redirect_reset_from_date:first\");\n var $redirectFilterToDate = $createLogo.find(\".redirect_filter_to_date:first\");\n var $redirectResetToDate = $createLogo.find(\".redirect_reset_to_date:first\");\n\n $redirectGraphType.unbind().change(function(){\n nurseslounge_lounge_overview.information_tab_create_logo_statistics_graph($params);\n });\n $redirectFilterFromDate.datepicker('clearDates').on('changeDate', function ($e) {\n nurseslounge_lounge_overview.information_tab_create_logo_statistics_graph($params);\n });\n $redirectResetFromDate.unbind().click(function(){\n $redirectFilterFromDate.val(\"\").datepicker(\"update\");\n nurseslounge_lounge_overview.information_tab_create_logo_statistics_graph($params);\n });\n $redirectFilterToDate.datepicker('clearDates').on('changeDate', function ($e) {\n nurseslounge_lounge_overview.information_tab_create_logo_statistics_graph($params);\n });\n $redirectResetToDate.unbind().click(function(){\n $redirectFilterToDate.val(\"\").datepicker(\"update\");\n nurseslounge_lounge_overview.information_tab_create_logo_statistics_graph($params);\n });\n\n var $today = new Date();\n var $firstDay = new Date($today.getFullYear(), $today.getMonth(), 1);\n $firstDay = String($firstDay.getDate()).padStart(2, '0');\n var $lastDay = new Date($today.getFullYear(), $today.getMonth() + 1, 0);\n $lastDay = String($lastDay.getDate()).padStart(2, '0');\n var $mm = String($today.getMonth() + 1).padStart(2, '0');\n var $yyyy = $today.getFullYear();\n $visitsFilterFromDate.val($mm+'/'+$firstDay+'/'+$yyyy).datepicker(\"update\");\n $visitsFilterToDate.val($mm+'/'+$lastDay+'/'+$yyyy).datepicker(\"update\");\n $redirectFilterFromDate.val($mm+'/'+$firstDay+'/'+$yyyy).datepicker(\"update\");\n $redirectFilterToDate.val($mm+'/'+$lastDay+'/'+$yyyy).datepicker(\"update\");\n nurseslounge_lounge_overview.information_tab_create_logo_statistics_graph($params);\n },\n graphBinding:null,\n information_tab_create_logo_statistics_graph:function($params){\n //This function was creating because datepickers fire without event\n try{\n clearTimeout(nurseslounge_lounge_overview.graphBinding);\n }catch ($e){\n\n }\n nurseslounge_lounge_overview.graphBinding = setTimeout(function(){\n nurseslounge_lounge_overview.information_tab_create_logo_statistics_graph_binding($params);\n }, 1000);\n },\n information_tab_create_logo_statistics_graph_binding:function($params){\n var $modal = $(\"#nurseslounge-lounge-information-edit-modal\");\n var $inviteTemplates = $modal.find(\".lounge-information-modal-container #createLogo .container\");\n var $websites = $inviteTemplates.find('select[name=\"websites\"]');\n var $visits = $inviteTemplates.find('.visits');\n var $uniqueVisits = $inviteTemplates.find('.unique-visits');\n var $redirect = $inviteTemplates.find('.redirect');\n var $uniqueRedirect = $inviteTemplates.find('.unique-redirect');\n var $delete = $inviteTemplates.find('.delete');\n var $copyLinkText = $inviteTemplates.find('textarea[name=\"copyLinkText\"]');\n nurseslounge_lounge_overview.information_tab_get_logo_visits($params, function($data) {\n var $imageSrc = $data.data.imageSrc;\n var $imageSize = $data.data.imageSize;\n var $url = $data.data.url;\n var $oneVal = $data.data.one_val;\n var $twoVal = $data.data.two_val;\n var $threeVal = $data.data.three_val;\n var $fourVal = $data.data.four_val;\n\n var $previousLogo = $(\".previous-logo\");\n try {\n $previousLogo.summernote('destroy');\n } catch (e) {\n\n }\n $previousLogo.summernote({\n disableDragAndDrop: true,\n placeholder: '',\n height: '200px',\n width: '100%',\n focus: false,\n disableResizeEditor: true,\n dialogsInBody: false,\n dialogsFade: false,\n codeviewFilter: true,\n codeviewIframeFilter: true,\n spellCheck: false,\n disableGrammar: true,\n toolbar: [],\n });\n\n\n $visits.html($oneVal);\n $uniqueVisits.html($twoVal);\n $redirect.html($threeVal);\n $uniqueRedirect.html($fourVal);\n\n //Logo And Image\n var $chtml = '
    ' +\n '' +\n '
    ';\n $previousLogo.summernote('code', $chtml);\n $url = '';\n if($url.split('?')[1] != ''){\n $copyLinkText.val($url);\n }\n\n $delete.unbind().click(function(){\n nurseslounge_lounge_overview.information_tab_delete_logo($params, function($data){\n var $url = $data.data.url;\n $url = '';\n if($url.split('?')[1] != ''){\n $copyLinkText.val($url);\n }\n var $websitesnames = $data.data.websites_names;\n var $chtml = '';\n $.each($websitesnames, function($i, $v){\n $chtml += '';\n });\n var $logoHashId = $data.data.logoHashId;\n try{\n $websites.chosen(\"destroy\");\n }catch (e) {}\n $websites.html('');\n $websites.html($chtml).promise().done(function(){\n $websites.val($logoHashId);\n $websites.chosen();\n $websites.unbind().change(function(){\n $previousLogo.summernote('code', '');\n $inviteTemplates.find('.visits').html(0);\n $inviteTemplates.find('.unique-visits').html(0);\n $inviteTemplates.find('.redirect').html(0);\n $inviteTemplates.find('.unique-redirect').html(0);\n var $that = $(this);\n var $val = $that.val();\n $params = $.extend({}, $params, {logoHashId:$val});\n nurseslounge_lounge_overview.information_tab_create_logo_statistics($params);\n }).change();\n });\n });\n });\n });\n },\n information_tab_delete_logo:function($params, cback){\n $.ajax({\n url: \"/lounge/logo/delete\",\n method: \"POST\",\n cache:false,\n dataType: \"json\",\n data: $params,\n success: function ($data) {\n libs.expire($data);\n cback($data);\n }\n });\n },\n information_tab_get_logo_visits:function($params, cback){\n $.ajax({\n url: \"/lounge/logo/statistics\",\n method: \"POST\",\n cache:false,\n dataType: \"json\",\n data: $params,\n success: function ($data) {\n libs.expire($data);\n cback($data);\n }\n });\n },\n\n information_tab_buy_ads:function($action, $tab, $allowTabs, $params, $data, cback){\n var $userId = $params.user_id;\n var $modal = $(\"#nurseslounge-lounge-information-edit-modal\");\n var $buyAds = $modal.find(\".lounge-information-modal-container #buyAds .container\");\n var $newImageForm = $buyAds.find('form[name=\"new-image-form\"]');\n var $dropImage = $newImageForm.find('.drop-image');\n var $defaultItem = $newImageForm.find('.default-item');\n var $degrees = $newImageForm.find('select[name=\"degrees\"]');\n var $buyImpressions = $newImageForm.find('.buy-impressions');\n Dropzone.autoDiscover = false;\n var $dropzone = libs.memoryGet('nurseslounge_lounge_overview_dropzone');\n try{\n $dropzone.destroy();\n }catch ($e) {\n\n }\n $dropzone = new Dropzone($dropImage[0], {\n headers: {\n 'X-CSRF-TOKEN': $('meta[name=\"csrf-token\"]').attr('content')\n },\n createImageThumbnails:false,\n acceptedFiles:'image/png,image/jpg,image/jpeg,image/gif',\n url: '/myDashboard/myArticles/fake',\n params:{user_id:$userId},\n method: 'post',\n clickable:[$dropImage[0], $dropImage.find('img:first')[0]],\n init: function() {\n var $that = this;\n $that.on(\"complete\", function(){\n $dropImage.find('.dz-preview').remove();\n });\n $that.on(\"success\", function($file) {\n var $formData = new FormData();\n $formData.append('_token', $('meta[name=\"csrf-token\"]').attr('content'));\n $formData.append('user_id', $userId);\n $formData.append('key', $params.key);\n $formData.append('file', $file);\n nurseslounge_lounge_overview.information_tab_buy_ads_files_request($formData, function($data){\n var $loungeAdId = $data.data.lounge_ad_id;\n var $publicImageRoot = $data.data.public_image_root;\n $dropImage.find('img:first').attr('src', $publicImageRoot);\n $defaultItem.data('image_id', $loungeAdId);\n $defaultItem.data('src', $publicImageRoot);\n $degrees.prop('disabled', false);\n $buyImpressions.prop('disabled', false);\n try{\n $degrees.chosen('destroy');\n }catch (e) {}\n $degrees.chosen();\n $degrees.unbind();\n $degrees.change(function(){\n var $imageId = $defaultItem.data('image_id');\n $params = $.extend({}, $params, {image_id:$imageId, degrees:$degrees.val()});\n nurseslounge_lounge_overview.information_tab_buy_ads_degree_type_request($params, function($data){\n var $publicImageRoot = $data.data.public_image_root;\n var $loungeAdId = $data.data.lounge_ad_id;\n $defaultItem.data('image_id', $loungeAdId);\n $defaultItem.data('src', $publicImageRoot);\n });\n });\n });\n });\n }\n });\n libs.memorySave('nurseslounge_lounge_overview_dropzone', $dropzone);\n try{\n $degrees.chosen('destroy');\n }catch (e) {}\n $degrees.find('option').prop('selected', false);\n $degrees.prop('disabled', true);\n $degrees.chosen();\n $buyImpressions.prop('disabled', true);\n $buyImpressions.unbind().click(function(){\n var $defaultItem = $newImageForm.find('.default-item')\n var $imageId = $defaultItem.data('image_id');\n var $src = $defaultItem.data('src');\n nurseslounge_lounge_overview.information_tab_buy_ads_impression_form($params, $imageId, $src, function(){\n nurseslounge_lounge_overview.information_tab_buy_ads($action, $tab, $allowTabs, $params, $data);\n });\n });\n $dropImage.find('img:first').attr('src', '/bimg/NursesLounge/dragAndDrop.png');\n nurseslounge_lounge_overview.information_tab_buy_ads_list($params);\n if(cback != undefined){\n cback();\n }\n },\n information_tab_buy_ads_files_request:function($formData, cback){\n $.ajax({\n type: 'POST',\n url: '/lounge/buyAds/updateImage',\n data: $formData,\n cache: false,\n contentType: false,\n processData: false,\n success: function ($data) {\n libs.expire($data);\n cback($data);\n }\n });\n },\n information_tab_buy_ads_degree_type_request:function($params, cback){\n $.ajax({\n type: 'POST',\n url: '/lounge/buyAds/updateDegrees',\n data:$params,\n method: \"POST\",\n cache:false,\n dataType: \"json\",\n success: function ($data) {\n libs.expire($data);\n cback($data);\n }\n });\n },\n information_tab_buy_ads_impression_form:function($params, $imageId, $src, cback){\n var $modal = $(\"#nurseslounge-lounge-information-edit-modal\");\n var $buyAds = $modal.find(\".lounge-information-modal-container #buyAds .container\");\n var $adsListForm = $buyAds.find('form[name=\"ads-list-form\"]');\n var $newImageForm = $buyAds.find('form[name=\"new-image-form\"]');\n var $paymentForm = $buyAds.find(\"form[name='stripe-form']\");\n var $paymentFormWrapper = $paymentForm.find('.payment-form-wrapper');\n var $paymentFormImage = $paymentForm.find('.payment-form-image');\n var $onProgressWrapper = $paymentForm.find('.on-progress-checkmark-wrapper');\n var $successWrapper = $paymentForm.find('.success-checkmark-wrapper');\n var $inputImpressions = $paymentForm.find('input[name=\"impressions\"]');\n var $impressionsAmount = $paymentForm.find('.impressions-amount');\n var $btnContinue = $paymentForm.find('.continue');\n var $submitButton = $paymentForm.find('button[type=\"submit\"]');\n var $back = $paymentForm.find('.back');\n var $promo = $paymentForm.find('input[name=\"promo\"]');\n\n $back.unbind().click(function(){\n $adsListForm.show();\n $newImageForm.show();\n $paymentForm.hide();\n });\n\n try{\n var $cardSaved = libs.memoryGet('nurseslounge_lounge_overview_card');\n if($cardSaved){\n $cardSaved.destroy();\n }\n }catch ($e){\n\n }\n $adsListForm.hide();\n $newImageForm.hide();\n $paymentFormImage.attr('src', $src);\n\n $paymentFormWrapper.show();\n $onProgressWrapper.hide();\n $successWrapper.hide();\n\n $submitButton.prop('disabled', false);\n $inputImpressions.unbind().change(function(){\n var $impressions = ((($inputImpressions.val() / 2500) * 50000)/100);\n $impressionsAmount.html('$'+$impressions.toFixed(2));\n $promo.keydown();\n });\n\n var $promoBinding;\n $promo.unbind().on('keyup keydown keypress blur', function(){\n var $code = $(this).val();\n $params = $.extend({}, $params, {code:$code});\n try{\n clearTimeout($promoBinding);\n }catch ($e) {\n\n }\n $promoBinding = setTimeout(function(){\n nurseslounge_lounge_overview.information_tab_buy_ads_promo($params, function($data){\n var $promo = $data.data.promo_code;\n var $discountType = $promo && $promo.discount_type ? $promo.discount_type : null;\n var $discount = $promo && $promo.discount ? $promo.discount : null;\n $params = $.extend({}, $params, {discount_type:$discountType, discount:$discount});\n var $impressions = ((($inputImpressions.val() / 2500) * 50000)/100);\n if($discountType && $discount){\n switch ($discountType){\n case 'percent':\n $discount = ($discount * $impressions)/100;\n $impressions = $impressions - $discount;\n $impressionsAmount.html('$'+$impressions.toFixed(2));\n break;\n case 'money':\n $impressions = $impressions - $discount;\n $impressionsAmount.html('$'+$impressions.toFixed(2));\n break;\n }\n }else{\n $impressionsAmount.html('$'+$impressions.toFixed(2));\n }\n });\n }, 800);\n }).keydown();\n\n var $card = stripe.elements();\n var $style = {\n base: {\n 'lineHeight': '1.5',\n 'fontSize': '1.09em',\n 'color': '#00184A',\n 'fontFamily': \"sans-serif\",\n 'height':'100%',\n 'fontWeight':'100',\n 'opacity': '0.9',\n '::placeholder': {\n 'color':'#636c72',\n 'opacity':'0.9'\n }\n },\n invalid: {\n color: \"#fa755a\",\n iconColor: \"#fa755a\"\n },\n };\n var $cardDom = $paymentForm.find('.card:first')[0];\n var $cardEle = $card.create('card', {style:$style});\n $cardEle.mount($cardDom);\n libs.memorySave('nurseslounge_lounge_overview_card', $cardEle);\n nurseslounge_lounge_overview.information_tab_buy_ads_validate(function($form){\n var $objForm = libs.getObjForm($form);\n $submitButton.prop('disabled', true);\n $paymentFormWrapper.hide();\n $onProgressWrapper.show();\n stripe.createToken($cardEle, {\n name:$objForm.name,\n address_country:'US',\n currency:'usd'\n }).then(function($res) {\n if($res.token && $res.token.id){\n var $newParams = $.extend({}, $objForm, $res, $params, {image_id:$imageId});\n nurseslounge_lounge_overview.information_tab_buy_ads_impressions_request($newParams, function($data){\n if($data.status == 'success'){\n $paymentFormWrapper.hide();\n $onProgressWrapper.hide();\n $successWrapper.show();\n $btnContinue.unbind().click(function(){\n nurseslounge_lounge_overview.information_tab_buy_ads_list($params);\n $submitButton.prop('disabled', false);\n $paymentForm[0].reset();\n $paymentForm.hide();\n $successWrapper.hide();\n $newImageForm.show();\n $adsListForm.show();\n if(cback != undefined){\n cback();\n }\n });\n }else{\n var $validator = $paymentForm.validate();\n $validator.showErrors({\"card\": $data.data.msg});\n $paymentForm.find(\"input[name='card']\").val('');\n $submitButton.prop('disabled', false);\n $onProgressWrapper.hide();\n $paymentFormWrapper.show();\n }\n });\n }else{\n $submitButton.prop('disabled', false);\n $onProgressWrapper.hide();\n $paymentFormWrapper.show();\n }\n });\n });\n $cardEle.on('change', function($e){\n if(!$e.complete && $e.error && $e.error.message){\n var $validator = $paymentForm.validate();\n $validator.showErrors({\"card\": $e.error.message});\n $paymentForm.find(\"input[name='card']\").val('');\n $paymentForm.find('.invalid-feedback').hide();\n $paymentForm.find('.error').removeClass('error');\n $paymentForm.find('.is-invalid').removeClass('is-invalid');\n }else{\n $paymentForm.find(\"input[name='card']\").val('complete');\n }\n });\n $paymentForm.show();\n },\n information_tab_buy_ads_promo:function($params, cback){\n $.ajax({\n type: 'POST',\n url: '/lounge/buyAds/promo',\n data:$params,\n method: \"POST\",\n cache:false,\n dataType: \"json\",\n success: function ($data) {\n libs.expire($data);\n cback($data);\n }\n });\n },\n information_tab_buy_ads_impressions_request:function($params, cback){\n $.ajax({\n type: 'POST',\n url: '/lounge/buyAds/payment',\n data:$params,\n method: \"POST\",\n cache:false,\n dataType: \"json\",\n success: function ($data) {\n libs.expire($data);\n cback($data);\n }\n });\n },\n information_tab_buy_ads_validate:function(cback){\n $.validator.addMethod('minStrict', function ($val, $el, $par) {\n return $val >= $par;\n });\n var $modal = $(\"#nurseslounge-lounge-information-edit-modal\");\n var $buyAds = $modal.find(\".lounge-information-modal-container #buyAds .container\");\n var $paymentForm = $buyAds.find(\"form[name='stripe-form']\")\n var $validator;\n try {\n $validator = $paymentForm.validate();\n $validator.destroy();\n }catch (e) {\n\n }\n $validator = $paymentForm.validate({\n onsubmit: true,\n debug: true,\n ignore: '*:not(.validate)',\n rules: {\n impressions: {\n required: true,\n minStrict: 2500,\n number: true\n },\n name: {\n required: true,\n minlength: 3,\n maxlength: 191,\n },\n card: {\n required: true\n }\n },\n messages: {\n impressions:{\n required: \"The impressions is required\",\n minStrict:\"The impressions should be greater than 5000\",\n number: \"The impressions should be a number\"\n },\n name:{\n required: \"The name is required\",\n minlength: \"The name must have at least 3 characters\",\n maxlength: \"The name cannot exceed 191 characters\"\n },\n card:{\n required: \"The card is required\"\n }\n },\n errorPlacement: function($error, $element){\n var $ele = $($element);\n var $name = $ele.attr(\"name\");\n if(!$ele.hasClass('is-invalid')){\n $ele.addClass('is-invalid');\n }\n $(\".\"+$name+\"_validate\").html($($error).text()).show();\n },\n success: function($error, $element) {\n var $ele = $($element);\n var $name = $ele.attr(\"name\");\n if($ele.hasClass('is-invalid')){\n $ele.removeClass('is-invalid');\n }\n $(\".\"+$name+\"_validate\").html('').hide();\n },\n submitHandler: function($form) {\n cback($form);\n return false;\n }\n });\n },\n information_tab_buy_ads_list:function($params){\n var $reload;\n var $loaded = false;\n var $modal = $(\"#nurseslounge-lounge-information-edit-modal\");\n var $buyAds = $modal.find(\".lounge-information-modal-container #buyAds .container\");\n var $adsListWrapper = $buyAds.find('.ads-list-wrapper');\n var $paginationNav = $buyAds.find('.pagination-nav');\n var $resultInfo = $buyAds.find(\".result-info-count:first\");\n var $paginationObj;\n var $saveParams = $params;\n try{\n $paginationObj = libs.memoryGet('lounges_ads_pagination');\n if($paginationObj){\n $paginationObj.pagination('destroy');\n }\n }catch ($e) {\n }\n $paginationObj = $paginationNav.pagination({\n pageSize: 1,\n showPageNumbers: true,\n showPrevious: true,\n showNext: true,\n showNavigator: true,\n showFirstOnEllipsisShow: true,\n showLastOnEllipsisShow: true,\n dataSource:window.location.protocol +'//'+ window.location.hostname + \"/lounge/buyAds/list\",\n locator: 'data.ads',\n ajax:{\n method: \"POST\",\n cache:false,\n dataType: \"json\",\n data:$params,\n beforeSend: function() {\n $adsListWrapper.html(nurseslounge_lounge_overview.information_tab_buy_ads_list_item_preview());\n },\n complete:function($data){\n libs.expire($data.responseJSON);\n }\n },\n totalNumberLocator: function($data) {\n return $data.data.total;\n },\n callback: function($data, $pagination) {\n $loaded = true;\n var $pageNumber = $pagination.pageNumber;\n var $pageSize = $pagination.pageSize;\n var $totalNumber = $pagination.totalNumber;\n var $first = $totalNumber > 0 ? (($pageNumber-1) * $pageSize) + 1 : 0;\n var $last = $totalNumber > 0 ? ($first + $data.length - 1) : 0;\n $paginationNav.removeClass('nurseslounge-lounge-ads-preload');\n $resultInfo.removeClass('nurseslounge-lounge-ads-preload').html('Showing '+$first+' - '+$last+' of '+$totalNumber+' results for Ads');\n var $chtml = nurseslounge_lounge_overview.information_tab_buy_ads_list_item_html($data);\n libs.checkImageLoad($($chtml).find('img'), function () {\n $adsListWrapper.html('').html($chtml).promise().done(function () {\n nurseslounge_lounge_overview.information_tab_buy_ads_list_item_events($saveParams);\n });\n });\n }\n });\n libs.memorySave('lounges_ads_pagination', $paginationObj);\n $reload = setTimeout(function(){\n if(!$loaded){\n nurseslounge_lounge_overview.information_tab_buy_ads_list($params);\n }else{\n clearTimeout($reload);\n }\n }, 10000);\n },\n information_tab_buy_ads_list_item_preview:function(){\n var $chtml = '';\n for(var $i=1; $i<=5; $i++){\n $chtml+= '' +\n '
    ' +\n '
    ' +\n '               ' +\n '               ' +\n '               ' +\n '
    ' +\n '
    ' +\n '
    ' +\n '
    ' +\n '               ' +\n '               ' +\n '               ' +\n '
    ' +\n '
    ' +\n '
    ' +\n '
    ' +\n '               ' +\n '               ' +\n '               ' +\n '
    ' +\n '
    ' +\n '
    ' +\n '
    ' +\n '               ' +\n '               ' +\n '               ' +\n '
    ' +\n '
    ' +\n '
    ' +\n '
    ' +\n '               ' +\n '               ' +\n '               ' +\n '
    ' +\n '
    ';\n }\n return $chtml;\n },\n information_tab_buy_ads_list_item_html:function($loungeAds){\n var $userId = libs.memoryGet('user_id');\n var $chtml = '';\n $.each($loungeAds, function($i, $v){\n var $img = $v.public_image_root;\n var $checked = $v.active == 1 ? 'checked' : '';\n $chtml+='' +\n '
    ' +\n '
    ' +\n '
    ' +\n ' ' +\n '
    ' +\n '
    ' +\n '
    ' +\n '
    ' +\n '
    ' +\n '
    ' +\n ' ' +\n '
    ' +\n '
    ' +\n '
    ' +\n '
    ' +\n '

    Help us prioritize this ad to nurses.
    Which degree(s) should the nurse already have to qualify for this advertised degree?

    ' +\n '
    ' +\n '
    ' +\n '
    ' +\n '
    ' +\n '
    ' +\n '
    ' +\n ' ' +\n '
    ' +\n '
    ' +\n '
    ' +\n '
    ' +\n '
    ' +\n '
    ' +\n '
    ' +\n '
    ' +\n ' ' +\n ' ' +\n ' ' +\n ' ' +\n ' ' +\n ' ' +\n ' ' +\n ' ' +\n ' ' +\n ' ' +\n ' ' +\n ' ' +\n ' ' +\n ' ' +\n ' ' +\n ' ' +\n ' ' +\n ' ' +\n ' ' +\n ' ' +\n '
    Remaining Impressions:'+$v.impressions+'
    Purchase Date:'+$v.created_at+'
    Purchase Amount:'+$v.real_amount+'
    Purchase Quantity:'+$v.quantity+'
    ' +\n ' ' +\n '
    ' +\n '
    ' +\n '
    ' +\n '
    ';\n });\n return $chtml;\n },\n information_tab_buy_ads_list_item_degrees_html:function($allDegrees, $selectedDegrees){\n var $selection = [];\n $.each($selectedDegrees, function($i, $v){\n $selection.push($v.degree.type);\n });\n $selection.sort();\n $selection = $.unique($selection);\n var $chtml = '';\n $.each($allDegrees, function($i, $v){\n if($.inArray($v, $selection) > -1){\n $chtml += '';\n }else{\n $chtml += '';\n }\n });\n return $chtml;\n },\n information_tab_buy_ads_list_item_events:function($params){\n var $modal = $(\"#nurseslounge-lounge-information-edit-modal\");\n var $buyAds = $modal.find(\".lounge-information-modal-container #buyAds .container\");\n var $adsListWrapper = $buyAds.find('.ads-list-wrapper');\n var $degrees = $adsListWrapper.find('select[name=\"degrees\"]');\n var $switch = $adsListWrapper.find('.switch');\n var $buyMoreImpressions = $adsListWrapper.find('.buy-more-impressions');\n try{\n $switch.bootstrapToggle('destroy');\n }catch (e) {}\n $switch.bootstrapToggle();\n $switch.unbind();\n $switch.change(function(){\n var $that = $(this);\n var $imageId = $that.parents('.item:first').data('image_id');\n $params = $.extend({}, $params, {image_id:$imageId, active:$that.is(':checked')});\n nurseslounge_lounge_overview.information_tab_buy_ads_active_request($params, function($data){\n if($data.data.active == 0){\n $that.bootstrapToggle('off', true);\n }else{\n $that.bootstrapToggle('on', true);\n }\n });\n });\n try{\n $degrees.chosen('destroy');\n }catch (e) {}\n $degrees.chosen();\n $degrees.unbind();\n $degrees.change(function(){\n var $that = $(this);\n var $imageId = $that.parents('.item:first').data('image_id');\n $params = $.extend({}, $params, {image_id:$imageId, degrees:$degrees.val()});\n nurseslounge_lounge_overview.information_tab_buy_ads_degree_type_request($params, function($data){\n var $loungeAdId = $data.data.lounge_ad_id;\n $that.parents('.item:first').data('image_id', $loungeAdId);\n });\n });\n $buyMoreImpressions.unbind().click(function(){\n var $that = $(this);\n var $imageId = $that.parents('.item:first').data('image_id');\n var $src = $that.parents('.item:first').data('src');\n nurseslounge_lounge_overview.information_tab_buy_ads_impression_form($params, $imageId, $src);\n });\n },\n information_tab_buy_ads_active_request:function($params, cback){\n $.ajax({\n type: 'POST',\n url: '/lounge/buyAds/active',\n data:$params,\n method: \"POST\",\n cache:false,\n dataType: \"json\",\n success: function ($data) {\n libs.expire($data);\n cback($data);\n }\n });\n },\n\n information_tab_sponsor_degrees:function($action, $tab, $allowTabs, $params, $data, cback){\n var $modal = $(\"#nurseslounge-lounge-information-edit-modal\");\n var $sponsorDegrees = $modal.find(\".lounge-information-modal-container #sponsorDegrees .container\");\n var $datatableApplications = $sponsorDegrees.find(\".datatable-sponsor-degrees\");\n var $datatableSearch = $sponsorDegrees.find(\"input[name='search']\");\n var $datatableSearchButton = $sponsorDegrees.find(\".search\");\n var $datatableSearchBinding;\n nurseslounge_lounge_overview.information_tab_sponsor_degrees_datatable(\n $datatableApplications,\n \"/lounge/sponsorDegrees/datatable\",\n \"POST\",\n $params,\n function($table){\n $datatableApplications.find('.option').unbind().click(function(){\n var $that = $(this);\n var $degreeId = $that.data('id');\n var $degreeName = $that.data('name');\n nurseslounge_lounge_overview.information_tab_sponsor_degrees_buy_form($params, $degreeId, $degreeName);\n });\n },function($nRow){\n return $nRow;\n }, function($table){\n $datatableSearchButton.unbind().click(function () {\n $table.search($datatableSearch.val());\n $table.draw();\n });\n $datatableSearch.unbind().on('keypress keyup keydown blur', function () {\n try{\n clearTimeout($datatableSearchBinding);\n }catch (e) {\n\n }\n $datatableSearchBinding = setTimeout(function(){\n $table.search($datatableSearch.val());\n $table.draw();\n }, 1000);\n });\n });\n if(cback != undefined){\n cback();\n }\n },\n information_tab_sponsor_degrees_datatable:function($element, $url, $method, $data, drawCallback, fnRowCallback, initComplete){\n var $table = $($element).DataTable({\n \"order\": [[1,\"desc\"]],\n \"dom\":\"<'row'<'col-sm-3'l><'col-sm-3'f><'col-sm-6'p>>\" +\n \"<'row'<'col-sm-12'tr>>\" +\n \"<'row'<'col-sm-5'i><'col-sm-7'p>>\",\n \"sScrollXInner\": \"auto\",\n \"bScrollCollapse\": true,\n \"bAutoWidth\": true,\n \"responsive\": false,\n \"scrollX\": true,\n \"paging\": true,\n \"bDestroy\": true,\n \"drawCallback\": function () {\n drawCallback($table);\n },\n \"fnRowCallback\": function($nRow){\n fnRowCallback($nRow);\n },\n \"initComplete\": function () {\n initComplete($table);\n },\n \"cache\": false,\n \"pageLength\": 10,\n \"pagingType\" : \"full_numbers\",\n \"processing\": true,\n \"serverSide\": true,\n \"stateSave\": true,\n \"ajax\": {\n \"data\":function ($d) {\n return $.extend($d, $data);\n },\n \"url\":$url,\n \"type\":$method,\n \"datatype\":\"json\"\n }\n });\n $table.columns.adjust().draw();\n },\n information_tab_sponsor_degrees_buy_form:function($params, $degreeId, $degreeName){\n var $modal = $(\"#nurseslounge-lounge-information-edit-modal\");\n var $sponsorDegrees = $modal.find(\".lounge-information-modal-container #sponsorDegrees .container\");\n var $sponsorDegreesList = $sponsorDegrees.find('form[name=\"sponsor-degrees-list-form\"]');\n var $paymentForm = $sponsorDegrees.find(\"form[name='stripe-form']\");\n var $fromDate = $paymentForm.find(\".from_date:first\");\n var $resetFromDate = $paymentForm.find(\".reset_from_date:first\");\n var $paymentFormWrapper = $paymentForm.find('.payment-form-wrapper');\n var $paymentFormImage = $paymentForm.find('.degree-name');\n var $onProgressWrapper = $paymentForm.find('.on-progress-checkmark-wrapper');\n var $successWrapper = $paymentForm.find('.success-checkmark-wrapper');\n var $days = $paymentForm.find('select[name=\"days\"]');\n var $impressionsDays = $paymentForm.find('.impressions-days');\n var $btnContinue = $paymentForm.find('.continue');\n var $submitButton = $paymentForm.find('button[type=\"submit\"]');\n var $back = $paymentForm.find('.back');\n var $promo = $paymentForm.find('input[name=\"promo\"]');\n\n $back.unbind().click(function(){\n $sponsorDegreesList.show();\n $paymentForm.hide();\n });\n\n $fromDate.datepicker();\n $resetFromDate.unbind().click(function(){\n $fromDate.val(\"\").datepicker(\"update\");\n });\n\n try{\n var $cardSaved = libs.memoryGet('nurseslounge_lounge_overview_card');\n if($cardSaved){\n $cardSaved.destroy();\n }\n }catch ($e){\n\n }\n $sponsorDegreesList.hide();\n $paymentFormImage.html($degreeName);\n\n $paymentFormWrapper.show();\n $onProgressWrapper.hide();\n $successWrapper.hide();\n\n $submitButton.prop('disabled', false);\n $days.unbind().change(function(){\n var $that = $(this);\n var $val = $that.val();\n var $impressions;\n if($val == 365){\n $impressions = 6000;\n }else{\n $impressions = Math.round((($val/30) * 500) * 100)/100;\n }\n $impressionsDays.html('$'+$impressions.toFixed(2));\n $promo.keydown();\n });\n\n var $promoBinding;\n $promo.unbind().on('keyup keydown keypress blur', function(){\n var $code = $(this).val();\n $params = $.extend({}, $params, {code:$code});\n try{\n clearTimeout($promoBinding);\n }catch ($e) {\n\n }\n $promoBinding = setTimeout(function(){\n nurseslounge_lounge_overview.information_tab_sponsor_degrees_buy_promo($params, function($data){\n var $promo = $data.data.promo_code;\n var $discountType = $promo && $promo.discount_type ? $promo.discount_type : null;\n var $discount = $promo && $promo.discount ? $promo.discount : null;\n $params = $.extend({}, $params, {discount_type:$discountType, discount:$discount});\n var $_days = $days.val();\n var $impressions;\n if($_days == 365){\n $impressions = 6000;\n }else{\n $impressions = Math.round((($_days/30) * 500) * 100)/100;\n }\n if($discountType && $discount){\n switch ($discountType){\n case 'percent':\n $discount = ($discount * $impressions)/100;\n $impressions = $impressions - $discount;\n $impressionsDays.html('$'+$impressions.toFixed(2));\n break;\n case 'money':\n $impressions = $impressions - $discount;\n $impressionsDays.html('$'+$impressions.toFixed(2));\n break;\n }\n }else{\n $impressionsDays.html('$'+$impressions.toFixed(2));\n }\n });\n }, 800);\n }).keydown();\n\n var $card = stripe.elements();\n var $style = {\n base: {\n 'lineHeight': '1.5',\n 'fontSize': '1.09em',\n 'color': '#00184A',\n 'fontFamily': \"sans-serif\",\n 'height':'100%',\n 'fontWeight':'100',\n 'opacity': '0.9',\n '::placeholder': {\n 'color':'#636c72',\n 'opacity':'0.9'\n }\n },\n invalid: {\n color: \"#fa755a\",\n iconColor: \"#fa755a\"\n },\n };\n var $cardDom = $paymentForm.find('.card:first')[0];\n var $cardEle = $card.create('card', {style:$style});\n $cardEle.mount($cardDom);\n libs.memorySave('nurseslounge_lounge_overview_card', $cardEle);\n nurseslounge_lounge_overview.information_tab_sponsor_degrees_buy_validate(function($form){\n var $objForm = libs.getObjForm($form);\n $submitButton.prop('disabled', true);\n $paymentFormWrapper.hide();\n $onProgressWrapper.show();\n stripe.createToken($cardEle, {\n name:$objForm.name,\n address_country:'US',\n currency:'usd'\n }).then(function($res) {\n if($res.token && $res.token.id){\n var $newParams = $.extend({}, $objForm, $res, $params, {degree_id:$degreeId});\n nurseslounge_lounge_overview.information_tab_sponsor_degrees_buy_request($newParams, function($data){\n if($data.status == 'success'){\n $paymentFormWrapper.hide();\n $onProgressWrapper.hide();\n $successWrapper.show();\n $btnContinue.unbind().click(function(){\n $submitButton.prop('disabled', false);\n $paymentForm[0].reset();\n $paymentForm.hide();\n $successWrapper.hide();\n $sponsorDegreesList.show();\n $sponsorDegreesList.find(\".search\").click();\n });\n }else{\n var $validator = $paymentForm.validate();\n $validator.showErrors({\"card\": $data.data.msg});\n $paymentForm.find(\"input[name='card']\").val('');\n $submitButton.prop('disabled', false);\n $onProgressWrapper.hide();\n $paymentFormWrapper.show();\n }\n });\n }else{\n $submitButton.prop('disabled', false);\n $onProgressWrapper.hide();\n $paymentFormWrapper.show();\n }\n });\n });\n $cardEle.on('change', function($e){\n if(!$e.complete && $e.error && $e.error.message){\n var $validator = $paymentForm.validate();\n $validator.showErrors({\"card\": $e.error.message});\n $paymentForm.find(\"input[name='card']\").val('');\n $paymentForm.find('.invalid-feedback').hide();\n $paymentForm.find('.error').removeClass('error');\n $paymentForm.find('.is-invalid').removeClass('is-invalid');\n }else{\n $paymentForm.find(\"input[name='card']\").val('complete');\n }\n });\n $paymentForm.show();\n },\n information_tab_sponsor_degrees_buy_promo:function($params, cback){\n $.ajax({\n type: 'POST',\n url: '/lounge/sponsorDegrees/promo',\n data:$params,\n method: \"POST\",\n cache:false,\n dataType: \"json\",\n success: function ($data) {\n libs.expire($data);\n cback($data);\n }\n });\n },\n information_tab_sponsor_degrees_buy_validate:function(cback){\n $.validator.addMethod('minStrict', function ($val, $el, $par) {\n return $val >= $par;\n });\n var $modal = $(\"#nurseslounge-lounge-information-edit-modal\");\n var $sponsorDegrees = $modal.find(\".lounge-information-modal-container #sponsorDegrees .container\");\n var $paymentForm = $sponsorDegrees.find(\"form[name='stripe-form']\")\n var $validator;\n try {\n $validator = $paymentForm.validate();\n $validator.destroy();\n }catch (e) {\n\n }\n $validator = $paymentForm.validate({\n onsubmit: true,\n debug: true,\n ignore: '*:not(.validate)',\n rules: {\n from_date: {\n required: true\n },\n days: {\n required: true,\n },\n name: {\n required: true,\n minlength: 3,\n maxlength: 191,\n },\n card: {\n required: true\n }\n },\n messages: {\n from_date:{\n required: \"The start date is required\"\n },\n days:{\n required: \"The days is required\"\n },\n name:{\n required: \"The name is required\",\n minlength: \"The name must have at least 3 characters\",\n maxlength: \"The name cannot exceed 191 characters\"\n },\n card:{\n required: \"The card is required\"\n }\n },\n errorPlacement: function($error, $element){\n var $ele = $($element);\n var $name = $ele.attr(\"name\");\n if(!$ele.hasClass('is-invalid')){\n $ele.addClass('is-invalid');\n }\n $(\".\"+$name+\"_validate\").html($($error).text()).show();\n },\n success: function($error, $element) {\n var $ele = $($element);\n var $name = $ele.attr(\"name\");\n if($ele.hasClass('is-invalid')){\n $ele.removeClass('is-invalid');\n }\n $(\".\"+$name+\"_validate\").html('').hide();\n },\n submitHandler: function($form) {\n cback($form);\n return false;\n }\n });\n },\n information_tab_sponsor_degrees_buy_request:function($params, cback){\n $.ajax({\n type: 'POST',\n url: '/lounge/sponsorDegrees/payment',\n data:$params,\n method: \"POST\",\n cache:false,\n dataType: \"json\",\n success: function ($data) {\n libs.expire($data);\n cback($data);\n }\n });\n },\n\n information_tab_spotlight_jobs:function($action, $tab, $allowTabs, $params, $data, cback){\n var $modal = $(\"#nurseslounge-lounge-information-edit-modal\");\n var $spotlightJobs = $modal.find(\".lounge-information-modal-container #spotlightJobs .container\");\n var $spotlightJobButton = $spotlightJobs.find(\".spotlight-job\");\n var $stripeForm = $spotlightJobs.find(\"form[name='stripe-form']\");\n var $spotlightJobsListForm = $spotlightJobs.find(\"form[name='spotlight-jobs-list-form']\");\n var $spotlightJobsBack = $spotlightJobs.find(\".back\");\n var $datatableApplications = $spotlightJobs.find(\".datatable-spotlight-jobs\");\n var $datatableSearch = $spotlightJobs.find(\"input[name='search']\");\n var $datatableSearchButton = $spotlightJobs.find(\".search\");\n var $datatableSearchBinding;\n nurseslounge_lounge_overview.information_tab_spotlight_jobs_datatable(\n $datatableApplications,\n \"/lounge/spotlightJobs/datatable\",\n \"POST\",\n $params,\n function($table){\n $datatableApplications.find('.option').unbind().click(function(){\n var $that = $(this);\n var $spotlightId = $that.data('id');\n nurseslounge_lounge_overview.information_tab_spotlight_jobs_buy_clicks($params, $spotlightId);\n });\n $datatableApplications.find('.edit').unbind().click(function(){\n var $that = $(this);\n var $spotlightId = $that.data('id');\n nurseslounge_lounge_overview.information_tab_spotlight_jobs_edit($params, $spotlightId);\n });\n var $switch = $datatableApplications.find('.switch');\n $switch.unbind();\n try{\n $switch.bootstrapToggle('destroy');\n }catch (e) {}\n $switch.bootstrapToggle();\n $switch.change(function(){\n var $that = $(this);\n var $spotlightId = $that.data('id');\n var $onOff = $that.is(':checked');\n var $newParams = $.extend({}, $params, {id:$spotlightId, checked:$onOff});\n nurseslounge_lounge_overview.information_tab_spotlight_jobs_active_request($newParams, function($data){\n $that.prop('checked', $data.data.checked);\n });\n });\n },function($nRow){\n return $nRow;\n }, function($table){\n $datatableSearchButton.unbind().click(function () {\n $table.search($datatableSearch.val());\n $table.draw();\n });\n $datatableSearch.unbind().on('keypress keyup keydown blur', function () {\n try{\n clearTimeout($datatableSearchBinding);\n }catch (e) {\n\n }\n $datatableSearchBinding = setTimeout(function(){\n $table.search($datatableSearch.val());\n $table.draw();\n }, 1000);\n });\n });\n $spotlightJobButton.unbind().click(function(){\n $spotlightJobsListForm.hide();\n $stripeForm.show();\n nurseslounge_lounge_overview.information_tab_spotlight_jobs_buy_clicks($params, null);\n });\n $spotlightJobsBack.unbind().click(function(){\n $stripeForm.hide();\n $spotlightJobsListForm.show();\n dataTable.reload($datatableApplications);\n });\n if(cback != undefined){\n cback();\n }\n },\n information_tab_spotlight_jobs_datatable:function($element, $url, $method, $data, drawCallback, fnRowCallback, initComplete){\n var $table = $($element).DataTable({\n \"order\": [[1,\"desc\"]],\n \"dom\":\"<'row'<'col-sm-3'l><'col-sm-3'f><'col-sm-6'p>>\" +\n \"<'row'<'col-sm-12'tr>>\" +\n \"<'row'<'col-sm-5'i><'col-sm-7'p>>\",\n \"sScrollXInner\": \"auto\",\n \"bScrollCollapse\": true,\n \"bAutoWidth\": true,\n \"responsive\": false,\n \"scrollX\": true,\n \"paging\": true,\n \"bDestroy\": true,\n \"drawCallback\": function () {\n drawCallback($table);\n },\n \"fnRowCallback\": function($nRow){\n fnRowCallback($nRow);\n },\n \"initComplete\": function () {\n initComplete($table);\n },\n \"cache\": false,\n \"pageLength\": 10,\n \"pagingType\" : \"full_numbers\",\n \"processing\": true,\n \"serverSide\": true,\n \"stateSave\": true,\n \"ajax\": {\n \"data\":function ($d) {\n return $.extend($d, $data);\n },\n \"url\":$url,\n \"type\":$method,\n \"datatype\":\"json\"\n }\n });\n $table.columns.adjust().draw();\n },\n information_tab_spotlight_jobs_buy_clicks:function($params, $spotlightId){\n var $modal = $(\"#nurseslounge-lounge-information-edit-modal\");\n var $spotlightJobs = $modal.find(\".lounge-information-modal-container #spotlightJobs .container\");\n var $stripeForm = $spotlightJobs.find(\"form[name='stripe-form']\");\n var $spotlightJobsListForm = $spotlightJobs.find(\"form[name='spotlight-jobs-list-form']\");\n if($spotlightId){\n $params = $.extend({}, $params, {id:$spotlightId});\n nurseslounge_lounge_overview.information_tab_spotlight_jobs_buy_clicks_request($params, function($data){\n nurseslounge_lounge_overview.information_tab_spotlight_jobs_events($params, $data);\n $spotlightJobsListForm.hide();\n $stripeForm.show();\n });\n }else{\n nurseslounge_lounge_overview.information_tab_spotlight_jobs_buy_clicks_request($params, function($data) {\n nurseslounge_lounge_overview.information_tab_spotlight_jobs_events($params, $data);\n });\n }\n },\n information_tab_spotlight_jobs_buy_clicks_request:function($params, cback){\n $.ajax({\n type: 'POST',\n url: '/lounge/spotlightJobs/get',\n data:$params,\n method: \"POST\",\n cache:false,\n dataType: \"json\",\n success: function ($data) {\n libs.expire($data);\n cback($data);\n }\n });\n },\n information_tab_spotlight_jobs_events:function($params, $data){\n var $spotlightJobsData = $data && $data.data && $data.data.spotlight_jobs ? $data.data.spotlight_jobs : null;\n var $logoRootLounge = $data && $data.data && $data.data.logo_root_lounge ? $data.data.logo_root_lounge : null;\n var $modal = $(\"#nurseslounge-lounge-information-edit-modal\");\n var $spotlightJobs = $modal.find(\".lounge-information-modal-container #spotlightJobs .container\");\n var $spotlightJobsList = $spotlightJobs.find('form[name=\"spotlight-jobs-list-form\"]');\n var $stripeForm = $spotlightJobs.find(\"form[name='stripe-form']\");\n var $paymentFormWrapper = $stripeForm.find('.payment-form-wrapper');\n var $onProgressWrapper = $stripeForm.find('.on-progress-checkmark-wrapper');\n var $successWrapper = $stripeForm.find('.success-checkmark-wrapper');\n var $clicks = $stripeForm.find('input[name=\"clicks\"]');\n var $impressionsDays = $stripeForm.find('.clicks-amount');\n var $btnContinue = $stripeForm.find('.continue');\n var $submitButton = $stripeForm.find('button[type=\"submit\"]');\n var $id = $stripeForm.find('input[name=\"id\"]');\n var $facilityName = $stripeForm.find('input[name=\"facilityName\"]');\n var $cityState = $stripeForm.find('input[name=\"cityState\"]');\n var $title = $stripeForm.find('input[name=\"title\"]');\n var $shift = $stripeForm.find('input[name=\"shift\"]');\n var $signingBonus = $stripeForm.find('input[name=\"signingBonus\"]');\n var $compensation = $stripeForm.find('input[name=\"compensation\"]');\n var $contactEmailUrl = $stripeForm.find('input[name=\"contactEmailUrl\"]');\n var $destinationLevel = $stripeForm.find('select[name=\"destinationLevel\"]');\n var $specialties = $stripeForm.find('select[name=\"specialties\"]');\n var $location = $stripeForm.find('select[name=\"location\"]');\n var $yearsOfExperience = $stripeForm.find('select[name=\"yearsOfExperience\"]');\n var $logo = $stripeForm.find(\".logo\");\n var $previewText = $stripeForm.find(\".preview-text\");\n var $promo = $stripeForm.find('input[name=\"promo\"]');\n\n $id.val(\"\");\n $facilityName.val(\"\");\n $cityState.val(\"\");\n $title.val(\"\");\n $shift.val(\"\");\n $signingBonus.val(\"\");\n $compensation.val(\"\");\n $contactEmailUrl.val(\"\");\n $logo.attr('src', $logoRootLounge);\n\n if($spotlightJobsData){\n $id.val($spotlightJobsData.id);\n $facilityName.val($spotlightJobsData.facility_name);\n $cityState.val($spotlightJobsData.city_state);\n $title.val($spotlightJobsData.title);\n $shift.val($spotlightJobsData.shift);\n $signingBonus.val($spotlightJobsData.signing_bonus);\n $compensation.val($spotlightJobsData.compensation);\n $contactEmailUrl.val($spotlightJobsData.contact_email_url);\n }\n\n if(\n $title.val() == \"\" &&\n $shift.val() == \"\" &&\n $signingBonus.val() == \"\" &&\n $compensation.val() == \"\" &&\n $facilityName.val() == \"\" &&\n $cityState.val() == \"\"\n ){\n $previewText.html('');\n }else{\n $previewText.html($title.val()+' - '+$shift.val()+' - '+$signingBonus.val()+' - '+$compensation.val()+' - '+$facilityName.val()+' - '+$cityState.val());\n }\n\n $facilityName.unbind().on('keyup keydown', function(){\n if(\n $title.val() == \"\" &&\n $shift.val() == \"\" &&\n $signingBonus.val() == \"\" &&\n $compensation.val() == \"\" &&\n $facilityName.val() == \"\" &&\n $cityState.val() == \"\"\n ){\n $previewText.html('');\n }else{\n $previewText.html($title.val()+' - '+$shift.val()+' - '+$signingBonus.val()+' - '+$compensation.val()+' - '+$facilityName.val()+' - '+$cityState.val());\n }\n });\n $cityState.unbind().on('keyup keydown', function(){\n if(\n $title.val() == \"\" &&\n $shift.val() == \"\" &&\n $signingBonus.val() == \"\" &&\n $compensation.val() == \"\" &&\n $facilityName.val() == \"\" &&\n $cityState.val() == \"\"\n ){\n $previewText.html('');\n }else{\n $previewText.html($title.val()+' - '+$shift.val()+' - '+$signingBonus.val()+' - '+$compensation.val()+' - '+$facilityName.val()+' - '+$cityState.val());\n }\n });\n $title.unbind().on('keyup keydown', function(){\n if(\n $title.val() == \"\" &&\n $shift.val() == \"\" &&\n $signingBonus.val() == \"\" &&\n $compensation.val() == \"\" &&\n $facilityName.val() == \"\" &&\n $cityState.val() == \"\"\n ){\n $previewText.html('');\n }else{\n $previewText.html($title.val()+' - '+$shift.val()+' - '+$signingBonus.val()+' - '+$compensation.val()+' - '+$facilityName.val()+' - '+$cityState.val());\n }\n });\n $shift.unbind().on('keyup keydown', function(){\n if(\n $title.val() == \"\" &&\n $shift.val() == \"\" &&\n $signingBonus.val() == \"\" &&\n $compensation.val() == \"\" &&\n $facilityName.val() == \"\" &&\n $cityState.val() == \"\"\n ){\n $previewText.html('');\n }else{\n $previewText.html($title.val()+' - '+$shift.val()+' - '+$signingBonus.val()+' - '+$compensation.val()+' - '+$facilityName.val()+' - '+$cityState.val());\n }\n });\n $signingBonus.unbind().on('keyup keydown', function(){\n if(\n $title.val() == \"\" &&\n $shift.val() == \"\" &&\n $signingBonus.val() == \"\" &&\n $compensation.val() == \"\" &&\n $facilityName.val() == \"\" &&\n $cityState.val() == \"\"\n ){\n $previewText.html('');\n }else{\n $previewText.html($title.val()+' - '+$shift.val()+' - '+$signingBonus.val()+' - '+$compensation.val()+' - '+$facilityName.val()+' - '+$cityState.val());\n }\n });\n $compensation.unbind().on('keyup keydown', function(){\n if(\n $title.val() == \"\" &&\n $shift.val() == \"\" &&\n $signingBonus.val() == \"\" &&\n $compensation.val() == \"\" &&\n $facilityName.val() == \"\" &&\n $cityState.val() == \"\"\n ){\n $previewText.html('');\n }else{\n $previewText.html($title.val()+' - '+$shift.val()+' - '+$signingBonus.val()+' - '+$compensation.val()+' - '+$facilityName.val()+' - '+$cityState.val());\n }\n });\n\n try{\n $destinationLevel.chosen('destroy');\n }catch (e) {}\n $destinationLevel.chosen();\n if($spotlightJobsData.target){\n $destinationLevel.val(JSON.parse($spotlightJobsData.target).destinationLevel).trigger(\"chosen:updated\");\n }else{\n $destinationLevel.val('').trigger(\"chosen:updated\");\n }\n $destinationLevel.unbind();\n\n try{\n $specialties.chosen('destroy');\n }catch (e) {}\n $specialties.chosen();\n if($spotlightJobsData.target){\n $specialties.val(JSON.parse($spotlightJobsData.target).specialties).trigger(\"chosen:updated\");\n }else{\n $specialties.val('').trigger(\"chosen:updated\");\n }\n $specialties.unbind();\n\n try{\n $location.chosen('destroy');\n }catch (e) {}\n $location.chosen();\n if($spotlightJobsData.target){\n $location.val(JSON.parse($spotlightJobsData.target).location).trigger(\"chosen:updated\");\n }else{\n $location.val('').trigger(\"chosen:updated\");\n }\n $location.unbind();\n\n try{\n $yearsOfExperience.chosen('destroy');\n }catch (e) {}\n $yearsOfExperience.chosen();\n if($spotlightJobsData.target){\n $yearsOfExperience.val(JSON.parse($spotlightJobsData.target).yearsOfExperience).trigger(\"chosen:updated\");\n }else {\n $yearsOfExperience.val('').trigger(\"chosen:updated\");\n }\n $yearsOfExperience.unbind();\n\n\n try{\n var $cardSaved = libs.memoryGet('nurseslounge_lounge_overview_card');\n if($cardSaved){\n $cardSaved.destroy();\n }\n }catch ($e){\n\n }\n\n $paymentFormWrapper.show();\n $onProgressWrapper.hide();\n $successWrapper.hide();\n\n $submitButton.prop('disabled', false);\n $clicks.unbind().change(function(){\n var $that = $(this);\n var $val = $that.val();\n var $impressions = ($val * 5);\n $impressionsDays.html('$'+$impressions.toFixed(2));\n $promo.keydown();\n });\n\n var $promoBinding;\n $promo.unbind().on('keyup keydown keypress blur', function(){\n var $code = $(this).val();\n $params = $.extend({}, $params, {code:$code});\n try{\n clearTimeout($promoBinding);\n }catch ($e) {\n\n }\n $promoBinding = setTimeout(function(){\n nurseslounge_lounge_overview.information_tab_spotlight_jobs_promo($params, function($data){\n var $promo = $data.data.promo_code;\n var $discountType = $promo && $promo.discount_type ? $promo.discount_type : null;\n var $discount = $promo && $promo.discount ? $promo.discount : null;\n $params = $.extend({}, $params, {discount_type:$discountType, discount:$discount});\n var $impressions = ($clicks.val() * 5);\n if($discountType && $discount){\n switch ($discountType){\n case 'percent':\n $discount = ($discount * $impressions)/100;\n $impressions = $impressions - $discount;\n $impressionsDays.html('$'+$impressions.toFixed(2));\n break;\n case 'money':\n $impressions = $impressions - $discount;\n $impressionsDays.html('$'+$impressions.toFixed(2));\n break;\n }\n }else{\n $impressionsDays.html('$'+$impressions.toFixed(2));\n }\n });\n }, 800);\n }).keydown();\n\n var $card = stripe.elements();\n var $style = {\n base: {\n 'lineHeight': '1.5',\n 'fontSize': '1.09em',\n 'color': '#00184A',\n 'fontFamily': \"sans-serif\",\n 'height':'100%',\n 'fontWeight':'100',\n 'opacity': '0.9',\n '::placeholder': {\n 'color':'#636c72',\n 'opacity':'0.9'\n }\n },\n invalid: {\n color: \"#fa755a\",\n iconColor: \"#fa755a\"\n },\n };\n var $cardDom = $stripeForm.find('.credit-card:first')[0];\n var $cardEle = $card.create('card', {style:$style});\n $cardEle.mount($cardDom);\n libs.memorySave('nurseslounge_lounge_overview_card', $cardEle);\n nurseslounge_lounge_overview.information_tab_spotlight_jobs_buy_validate(function($form){\n var $objForm = libs.getObjForm($form);\n $submitButton.prop('disabled', true);\n $paymentFormWrapper.hide();\n $onProgressWrapper.show();\n stripe.createToken($cardEle, {\n name:$objForm.name,\n address_country:'US',\n currency:'usd'\n }).then(function($res) {\n if($res.token && $res.token.id){\n var $newParams = $.extend({}, $objForm, $res, $params);\n nurseslounge_lounge_overview.information_tab_spotlight_jobs_buy_request($newParams, function($data){\n if($data.status == 'success'){\n $paymentFormWrapper.hide();\n $onProgressWrapper.hide();\n $successWrapper.show();\n $btnContinue.unbind().click(function(){\n $paymentFormWrapper.show();\n $submitButton.prop('disabled', false);\n $stripeForm[0].reset();\n $stripeForm.hide();\n $successWrapper.hide();\n $spotlightJobsList.show();\n $spotlightJobsList.find(\".search\").click();\n });\n }else{\n var $validator = $stripeForm.validate();\n $validator.showErrors({\"card\": $data.data.msg});\n $stripeForm.find(\"input[name='card']\").val('');\n $submitButton.prop('disabled', false);\n $onProgressWrapper.hide();\n $paymentFormWrapper.show();\n }\n });\n }else{\n $submitButton.prop('disabled', false);\n $onProgressWrapper.hide();\n $paymentFormWrapper.show();\n }\n });\n });\n $cardEle.on('change', function($e){\n if(!$e.complete && $e.error && $e.error.message){\n var $validator = $stripeForm.validate();\n $validator.showErrors({\"card\": $e.error.message});\n $stripeForm.find(\"input[name='card']\").val('');\n $stripeForm.find('.invalid-feedback').hide();\n $stripeForm.find('.error').removeClass('error');\n $stripeForm.find('.is-invalid').removeClass('is-invalid');\n }else{\n $stripeForm.find(\"input[name='card']\").val('complete');\n }\n });\n },\n information_tab_spotlight_jobs_promo:function($params, cback){\n $.ajax({\n type: 'POST',\n url: '/lounge/spotlightJobs/promo',\n data:$params,\n method: \"POST\",\n cache:false,\n dataType: \"json\",\n success: function ($data) {\n libs.expire($data);\n cback($data);\n }\n });\n },\n information_tab_spotlight_jobs_buy_validate:function(cback){\n $.validator.addMethod('minStrict', function ($val, $el, $par) {\n return $val >= $par;\n });\n var $modal = $(\"#nurseslounge-lounge-information-edit-modal\");\n var $spotlightJobs = $modal.find(\".lounge-information-modal-container #spotlightJobs .container\");\n var $stripeForm = $spotlightJobs.find(\"form[name='stripe-form']\")\n var $validator;\n try {\n $validator = $stripeForm.validate();\n $validator.destroy();\n }catch (e) {\n\n }\n $validator = $stripeForm.validate({\n onsubmit: true,\n debug: true,\n ignore: '*:not(.validate)',\n rules: {\n facilityName: {\n required: true\n },\n cityState: {\n required: true\n },\n title: {\n required: true\n },\n shift: {\n required: false\n },\n signingBonus: {\n required: false\n },\n compensation: {\n required: false\n },\n contactEmailUrl: {\n required: true\n },\n destinationLevel: {\n required: true\n },\n specialties: {\n required: true\n },\n location: {\n required: true\n },\n yearsOfExperience: {\n required: true\n }\n },\n messages: {\n facilityName: {\n required: \"The facility name is required\"\n },\n cityState: {\n required: \"The city, state is required\"\n },\n title:{\n required: \"The title is required\"\n },\n shift:{\n required: \"The shift is not required\"\n },\n signingBonus:{\n required: \"The signing bonus is not required\"\n },\n compensation:{\n required: \"The compensation is not required\"\n },\n contactEmailUrl:{\n required: \"The contact email or url is required\"\n },\n destinationLevel:{\n required: \"The destination level is required\"\n },\n specialties:{\n required: \"The specialties is required\"\n },\n location:{\n required: \"The location is required\"\n },\n yearsOfExperience:{\n required: \"The years of experience is required\"\n },\n },\n errorPlacement: function($error, $element){\n var $ele = $($element);\n var $name = $ele.attr(\"name\");\n if(!$ele.hasClass('is-invalid')){\n $ele.addClass('is-invalid');\n }\n $(\".\"+$name+\"_validate\").html($($error).text()).show();\n },\n success: function($error, $element) {\n var $ele = $($element);\n var $name = $ele.attr(\"name\");\n if($ele.hasClass('is-invalid')){\n $ele.removeClass('is-invalid');\n }\n $(\".\"+$name+\"_validate\").html('').hide();\n },\n submitHandler: function($form) {\n cback($form);\n return false;\n }\n });\n },\n information_tab_spotlight_jobs_buy_request:function($params, cback){\n $.ajax({\n type: 'POST',\n url: '/lounge/spotlightJobs/payment',\n data:$params,\n method: \"POST\",\n cache:false,\n dataType: \"json\",\n success: function ($data) {\n libs.expire($data);\n cback($data);\n }\n });\n },\n information_tab_spotlight_jobs_active_request:function($params, cback){\n $.ajax({\n type: 'POST',\n url: '/lounge/spotlightJobs/active',\n data:$params,\n method: \"POST\",\n cache:false,\n dataType: \"json\",\n success: function ($data) {\n libs.expire($data);\n cback($data);\n }\n });\n },\n information_tab_spotlight_jobs_edit:function($params, $spotlightId){\n var $modal = $(\"#nurseslounge-lounge-information-edit-modal\");\n var $spotlightJobs = $modal.find(\".lounge-information-modal-container #spotlightJobs .container\");\n var $stripeForm = $spotlightJobs.find(\"form[name='stripe-form']\");\n var $spotlightJobsListForm = $spotlightJobs.find(\"form[name='spotlight-jobs-list-form']\");\n var $spotlightEditForm = $spotlightJobs.find(\"form[name='spotlight-jobs-edit']\");\n $params = $.extend({}, $params, {id:$spotlightId});\n nurseslounge_lounge_overview.information_tab_spotlight_jobs_buy_clicks_request($params, function($data){\n nurseslounge_lounge_overview.information_tab_spotlight_jobs_edit_events($params, $data);\n $spotlightJobsListForm.hide();\n $stripeForm.hide();\n $spotlightEditForm.show();\n });\n },\n information_tab_spotlight_jobs_edit_events:function($params, $data){\n var $spotlightJobsData = $data && $data.data && $data.data.spotlight_jobs ? $data.data.spotlight_jobs : null;\n var $modal = $(\"#nurseslounge-lounge-information-edit-modal\");\n var $spotlightJobs = $modal.find(\".lounge-information-modal-container #spotlightJobs .container\");\n var $stripeForm = $spotlightJobs.find(\"form[name='stripe-form']\");\n var $spotlightJobsListForm = $spotlightJobs.find(\"form[name='spotlight-jobs-list-form']\");\n var $spotlightJobsEditForm = $spotlightJobs.find('form[name=\"spotlight-jobs-edit\"]');\n var $id = $spotlightJobsEditForm.find('input[name=\"id\"]');\n var $facilityName = $spotlightJobsEditForm.find('input[name=\"facilityName\"]');\n var $cityState = $spotlightJobsEditForm.find('input[name=\"cityState\"]');\n var $title = $spotlightJobsEditForm.find('input[name=\"title\"]');\n var $shift = $spotlightJobsEditForm.find('input[name=\"shift\"]');\n var $signingBonus = $spotlightJobsEditForm.find('input[name=\"signingBonus\"]');\n var $compensation = $spotlightJobsEditForm.find('input[name=\"compensation\"]');\n var $contactEmailUrl = $spotlightJobsEditForm.find('input[name=\"contactEmailUrl\"]');\n var $back = $spotlightJobsEditForm.find('.back');\n var $datatableSearchButton = $spotlightJobs.find(\".search\");\n var $logo = $spotlightJobs.find(\".logo\");\n var $previewText = $spotlightJobs.find(\".preview-text\");\n\n $id.val(\"\");\n $facilityName.val(\"\");\n $cityState.val(\"\");\n $title.val(\"\");\n $shift.val(\"\");\n $signingBonus.val(\"\");\n $compensation.val(\"\");\n $contactEmailUrl.val(\"\");\n $id.val($spotlightJobsData.id);\n $facilityName.val($spotlightJobsData.facility_name);\n $cityState.val($spotlightJobsData.city_state);\n $title.val($spotlightJobsData.title);\n $shift.val($spotlightJobsData.shift);\n $signingBonus.val($spotlightJobsData.signing_bonus);\n $compensation.val($spotlightJobsData.compensation);\n $contactEmailUrl.val($spotlightJobsData.contact_email_url);\n $logo.attr('src', $spotlightJobsData.lounge.logo_root_lounge);\n\n if(\n $title.val() == \"\" &&\n $shift.val() == \"\" &&\n $signingBonus.val() == \"\" &&\n $compensation.val() == \"\" &&\n $facilityName.val() == \"\" &&\n $cityState.val() == \"\"\n ){\n $previewText.html('');\n }else{\n $previewText.html($title.val()+' - '+$shift.val()+' - '+$signingBonus.val()+' - '+$compensation.val()+' - '+$facilityName.val()+' - '+$cityState.val());\n }\n\n $facilityName.unbind().on('keyup keydown', function(){\n if(\n $title.val() == \"\" &&\n $shift.val() == \"\" &&\n $signingBonus.val() == \"\" &&\n $compensation.val() == \"\" &&\n $facilityName.val() == \"\" &&\n $cityState.val() == \"\"\n ){\n $previewText.html('');\n }else{\n $previewText.html($title.val()+' - '+$shift.val()+' - '+$signingBonus.val()+' - '+$compensation.val()+' - '+$facilityName.val()+' - '+$cityState.val());\n }\n });\n $cityState.unbind().on('keyup keydown', function(){\n if(\n $title.val() == \"\" &&\n $shift.val() == \"\" &&\n $signingBonus.val() == \"\" &&\n $compensation.val() == \"\" &&\n $facilityName.val() == \"\" &&\n $cityState.val() == \"\"\n ){\n $previewText.html('');\n }else{\n $previewText.html($title.val()+' - '+$shift.val()+' - '+$signingBonus.val()+' - '+$compensation.val()+' - '+$facilityName.val()+' - '+$cityState.val());\n }\n });\n $title.unbind().on('keyup keydown', function(){\n if(\n $title.val() == \"\" &&\n $shift.val() == \"\" &&\n $signingBonus.val() == \"\" &&\n $compensation.val() == \"\" &&\n $facilityName.val() == \"\" &&\n $cityState.val() == \"\"\n ){\n $previewText.html('');\n }else{\n $previewText.html($title.val()+' - '+$shift.val()+' - '+$signingBonus.val()+' - '+$compensation.val()+' - '+$facilityName.val()+' - '+$cityState.val());\n }\n });\n $shift.unbind().on('keyup keydown', function(){\n if(\n $title.val() == \"\" &&\n $shift.val() == \"\" &&\n $signingBonus.val() == \"\" &&\n $compensation.val() == \"\" &&\n $facilityName.val() == \"\" &&\n $cityState.val() == \"\"\n ){\n $previewText.html('');\n }else{\n $previewText.html($title.val()+' - '+$shift.val()+' - '+$signingBonus.val()+' - '+$compensation.val()+' - '+$facilityName.val()+' - '+$cityState.val());\n }\n });\n $signingBonus.unbind().on('keyup keydown', function(){\n if(\n $title.val() == \"\" &&\n $shift.val() == \"\" &&\n $signingBonus.val() == \"\" &&\n $compensation.val() == \"\" &&\n $facilityName.val() == \"\" &&\n $cityState.val() == \"\"\n ){\n $previewText.html('');\n }else{\n $previewText.html($title.val()+' - '+$shift.val()+' - '+$signingBonus.val()+' - '+$compensation.val()+' - '+$facilityName.val()+' - '+$cityState.val());\n }\n });\n $compensation.unbind().on('keyup keydown', function(){\n if(\n $title.val() == \"\" &&\n $shift.val() == \"\" &&\n $signingBonus.val() == \"\" &&\n $compensation.val() == \"\" &&\n $facilityName.val() == \"\" &&\n $cityState.val() == \"\"\n ){\n $previewText.html('');\n }else{\n $previewText.html($title.val()+' - '+$shift.val()+' - '+$signingBonus.val()+' - '+$compensation.val()+' - '+$facilityName.val()+' - '+$cityState.val());\n }\n });\n\n nurseslounge_lounge_overview.information_tab_spotlight_jobs_edit_validate(function($form){\n var $objForm = libs.getObjForm($form);\n var $newParams = $.extend({}, $objForm, $params);\n nurseslounge_lounge_overview.information_tab_spotlight_jobs_edit_request($newParams, function(){\n $stripeForm.hide();\n $spotlightJobsEditForm.hide();\n $spotlightJobsListForm.show();\n $datatableSearchButton.click();\n });\n });\n $back.unbind().click(function(){\n $stripeForm.hide();\n $spotlightJobsEditForm.hide();\n $spotlightJobsListForm.show();\n $datatableSearchButton.click();\n });\n },\n information_tab_spotlight_jobs_edit_request:function($params, cback){\n $.ajax({\n type: 'POST',\n url: '/lounge/spotlightJobs/set',\n data:$params,\n method: \"POST\",\n cache:false,\n dataType: \"json\",\n success: function ($data) {\n libs.expire($data);\n cback($data);\n }\n });\n },\n information_tab_spotlight_jobs_edit_validate:function(cback){\n var $modal = $(\"#nurseslounge-lounge-information-edit-modal\");\n var $spotlightJobs = $modal.find(\".lounge-information-modal-container #spotlightJobs .container\");\n var $stripeForm = $spotlightJobs.find(\"form[name='spotlight-jobs-edit']\")\n var $validator;\n try {\n $validator = $stripeForm.validate();\n $validator.destroy();\n }catch (e) {\n\n }\n $validator = $stripeForm.validate({\n onsubmit: true,\n debug: true,\n ignore: '*:not(.validate)',\n rules: {\n facilityName: {\n required: true\n },\n cityState: {\n required: true\n },\n title: {\n required: true\n },\n shift: {\n required: false\n },\n signingBonus: {\n required: false\n },\n compensation: {\n required: false\n },\n contactEmailUrl: {\n required: true\n },\n },\n messages: {\n facilityName: {\n required: \"The facility name is required\"\n },\n cityState: {\n required: \"The city, state is required\"\n },\n title:{\n required: \"The title is required\"\n },\n shift:{\n required: \"The shift is not required\"\n },\n signingBonus:{\n required: \"The signing bonus is not required\"\n },\n compensation:{\n required: \"The compensation is not required\"\n },\n contactEmailUrl:{\n required: \"The contact email or url is required\"\n },\n destinationLevel:{\n required: \"The destination level is required\"\n }\n },\n errorPlacement: function($error, $element){\n var $ele = $($element);\n var $name = $ele.attr(\"name\");\n if(!$ele.hasClass('is-invalid')){\n $ele.addClass('is-invalid');\n }\n $(\".\"+$name+\"_validate\").html($($error).text()).show();\n },\n success: function($error, $element) {\n var $ele = $($element);\n var $name = $ele.attr(\"name\");\n if($ele.hasClass('is-invalid')){\n $ele.removeClass('is-invalid');\n }\n $(\".\"+$name+\"_validate\").html('').hide();\n },\n submitHandler: function($form) {\n cback($form);\n return false;\n }\n });\n },\n\n claim_lounge:function($container, $params){\n var $modal = $(\"#nurseslounge-claim-lounges-modal\");\n var $claimLoungeContainer = $container.find('.claim-lounge-container:first');\n var $claimLoungeButton = $claimLoungeContainer.find('.claim-lounge:first');\n var $modalTitle = $modal.find(\".modal-title\");\n var $modalBody = $modal.find(\".modal-body\");\n $claimLoungeButton.unbind().click(function(){\n nurseslounge_lounge_overview.claim_lounge_form_request($params, function($chtml){\n $modalTitle.html('Contact us to own this Lounge');\n $modalBody.html($chtml).promise().done(function(){\n nurseslounge_lounge_overview.claim_lounge_validate(function($form){\n $params = $.extend({}, $params, libs.getObjForm($form));\n nurseslounge_lounge_overview.claim_lounge_request($params, function(){\n $modal.modal('hide');\n });\n });\n $modal.find(\"form input[name='phone']\").mask('+(00) 000-000-0000');\n $modal.modal('show');\n });\n });\n });\n },\n claim_lounge_form_request:function($params, cback){\n $.ajax({\n type: 'POST',\n url: '/lounge/claim/get',\n data:$params,\n method: \"POST\",\n cache:false,\n dataType: \"html\",\n success: function ($data) {\n libs.expire($data);\n cback($data);\n }\n });\n },\n claim_lounge_validate:function(cback){\n var $validator;\n try {\n $validator = $(\"#nurseslounge-claim-lounges-modal form:first\").validate();\n $validator.destroy();\n }catch (e) {\n\n }\n $validator = $(\"#nurseslounge-claim-lounges-modal form:first\").validate({\n onsubmit: true,\n debug: true,\n ignore: \"*:not(.validate)\",\n rules: {\n name: {\n required: true,\n minlength: 3,\n maxlength: 191\n },\n email: {\n required: true,\n minlength: 3,\n maxlength: 191,\n email:true\n },\n phone: {\n required: true,\n minlength: 2,\n maxlength: 18\n },\n company: {\n required: true,\n minlength: 3,\n maxlength: 191\n },\n jobTitle: {\n required: true,\n minlength: 3,\n maxlength: 191\n },\n message: {\n required: false\n }\n },\n messages: {\n name: {\n required: \"The name is required\",\n minlength: \"The name must have at least 3 characters\",\n maxlength: \"The name cannot exceed 191 characters\"\n },\n email: {\n required: \"The email is required\",\n minlength: \"The email must have at least 3 characters\",\n maxlength: \"The email cannot exceed 191 characters\",\n email:\"The email is invalid\"\n },\n phone: {\n required: \"The phone is required\",\n minlength: \"The phone must have at least 3 characters\",\n maxlength: \"The phone cannot exceed 191 characters\",\n },\n company: {\n required: \"The company is required\",\n minlength: \"The company must have at least 3 characters\",\n maxlength: \"The company cannot exceed 191 characters\",\n },\n jobTitle: {\n required: \"The job title is required\",\n minlength: \"The job title must have at least 3 characters\",\n maxlength: \"The job title cannot exceed 191 characters\",\n },\n message: {\n required: \"The message is not required\",\n }\n },\n errorPlacement: function($error, $element){\n var $ele = $($element);\n var $name = $ele.attr(\"name\");\n if(!$ele.hasClass('is-invalid')){\n $ele.addClass('is-invalid');\n }\n $(\".\"+$name+\"_validate\").html($($error).text()).show();\n },\n success: function($error, $element) {\n var $ele = $($element);\n var $name = $ele.attr(\"name\");\n if($ele.hasClass('is-invalid')){\n $ele.removeClass('is-invalid');\n }\n $(\".\"+$name+\"_validate\").html('').hide();\n },\n submitHandler: function($form) {\n cback($form);\n return false;\n }\n });\n },\n claim_lounge_request:function($params, cback){\n $.ajax({\n url: \"/lounge/claim/set\",\n method: \"POST\",\n cache:false,\n dataType: \"json\",\n data:$params,\n success: function ($data) {\n libs.expire($data);\n cback($data);\n }\n });\n },\n //Banners\n banners_location:function(cback){\n cback({\n 'banners':$(\"#nurseslounge-lounge-information .nurseslounge-lounge-information-right .banners\")\n });\n },\n lounge_ads_location:function(cback){\n cback({\n 'ads':$(\"#nurseslounge-lounge-information .nurseslounge-lounge-information-right .lounge-ads\")\n });\n },\n lounge_ads_engine:function($config){\n var $userId = libs.memoryGet('user_id');\n var $ads = $config.ads.not('.slick-initialized');\n try {\n $ads.slick('unslick');\n } catch (e) {\n }\n var $widget = $ads.parents('.lounge-ads-container:first');\n var $adsName = 'ADS';\n var $adsCookie = nurseslounge_myDashboard_accountSettings.readCookie($adsName);\n $.ajax({\n url: \"/lounge/ads\",\n method: \"POST\",\n cache: false,\n dataType: \"json\",\n data: {\n user_id: $userId,\n lounge_ads:$adsCookie\n },\n success: function ($data) {\n libs.expire($data);\n $ads.width($widget.width());\n var $chtml = '';\n if ($data.status == 'success') {\n $.each($data.data.lounge_ads, function($i, $v){\n if($i == 0){\n $adsCookie = nurseslounge_myDashboard_accountSettings.readCookie($adsName);\n if($adsCookie && $adsCookie != ''){\n $adsCookie = JSON.parse($adsCookie);\n }else{\n $adsCookie = {};\n }\n if($adsCookie && $adsCookie[$v.id] && parseInt($adsCookie[$v.id]) > 0){\n $adsCookie[$v.id] = 1 + parseInt($adsCookie[$v.id]);\n }else{\n $adsCookie[$v.id] = 1;\n }\n nurseslounge_myDashboard_accountSettings.createCookie($adsName,JSON.stringify($adsCookie),1);\n }\n $chtml+='
    ';\n $chtml+=' ';\n $chtml+='
    ';\n });\n libs.checkImageLoad($($chtml).find('img'), function(){\n $ads.width($widget.width());\n $ads.html($chtml).promise().done(function(){\n if($data.data.lounge_ads.length > 0){\n $config.ads.parent().show();\n }else{\n $config.ads.parent().hide();\n }\n $ads.on('init', function () {\n $ads.find('.open-url').unbind().click(function(){\n var $key = $(this).data('key');\n window.open(window.location.protocol +'//'+ window.location.hostname + \"/lounge/\"+$key, '_blank', '');\n });\n }).on('beforeChange', function($e, $slick, $cS, $nS){\n var $slickSlide = $(\".slick-slide[data-slick-index='\"+$nS+\"'\");\n var $id = $slickSlide.find('.open-url').data('id');\n $adsCookie = nurseslounge_myDashboard_accountSettings.readCookie($adsName);\n if($adsCookie && $adsCookie != ''){\n $adsCookie = JSON.parse($adsCookie);\n }else{\n $adsCookie = {};\n }\n if($adsCookie && $adsCookie[$id] && parseInt($adsCookie[$id]) > 0){\n $adsCookie[$id] = 1 + parseInt($adsCookie[$id]);\n }else{\n $adsCookie[$id] = 1;\n }\n nurseslounge_myDashboard_accountSettings.createCookie($adsName,JSON.stringify($adsCookie),10);\n }).slick({\n slidesToShow: 1,\n slidesToScroll: 1,\n autoplay: true,\n autoplaySpeed: 5000,\n arrows: false,\n dots: false,\n pauseOnHover: false\n });\n });\n });\n }\n }\n });\n },\n //Task List Container\n task_list_container:function(cback){\n var $container = $(\"#nurseslounge-lounge-information .nurseslounge-lounge-information-right\");\n cback($container);\n },\n //Claim Lounge\n claim_lounge_container:function(cback){\n var $container = $(\"#nurseslounge-lounge-information .nurseslounge-lounge-information-right\");\n cback($container);\n },\n //Meet our recruiters\n information_meet_our_recruiters:function(cback){\n cback({\n 'container':$(\"#nurseslounge-lounge-information .nurseslounge-lounge-information-right .meet-our-recruiters\")\n });\n },\n information_meet_our_recruiters_engine:function($config){\n var $modal = $(\"#nurseslounge-meet-recruiters-modal\");\n var $recruiter = $config.container.find('.recruiter');\n $recruiter.unbind().click(function(){\n var $that = $(this);\n var $key = $that.data('key');\n var $recruiterUserId = $that.data('recruiteruserid');\n var $params = $.extend({}, {key:$key, user_id:libs.memoryGet('user_id'), recruiter_user_id:$recruiterUserId});\n nurseslounge_lounge_overview.information_meet_our_recruiters_request($params, function($chtml){\n var $requestInfoModal = $modal.find(\".request-info-modal-container\");\n $requestInfoModal.html($chtml).promise().done(function(){\n var $otherFacilityDiv = $modal.find('.other-facility');\n var $selectFacility = $modal.find('select[name=\"facility\"]');\n var $otherFacility = $modal.find('input[name=\"otherFacility\"]');\n $selectFacility.unbind().change(function(){\n var $that = $(this);\n var $val = $that.val();\n if($val != ''){\n if($val == 'Other'){\n if($otherFacilityDiv.hasClass('d-none')){\n $otherFacilityDiv.removeClass('d-none');\n }\n }else{\n if(!$otherFacilityDiv.hasClass('d-none')){\n $otherFacilityDiv.addClass('d-none');\n }\n }\n $otherFacility.val('');\n }\n });\n $modal.find(\"form\").find(\"input[name='phone']\").mask('+(00) 000-000-0000');\n nurseslounge_lounge_overview.information_meet_our_recruiters_validate(function($form){\n $params = $.extend({}, $params, libs.getObjForm($form));\n nurseslounge_lounge_overview.information_meet_our_recruiters_request_set($params, function($data){\n $modal.modal('hide');\n });\n });\n $modal.modal('show');\n });\n });\n });\n libs.refreshTooltips();\n },\n information_meet_our_recruiters_validate:function(cback){\n var $validator;\n try {\n $validator = $(\"#nurseslounge-meet-recruiters-modal form\").validate();\n $validator.destroy();\n }catch (e) {\n\n }\n $validator = $(\"#nurseslounge-meet-recruiters-modal form\").validate({\n onsubmit: true,\n debug: true,\n ignore: \"*:not(.validate)\",\n rules: {\n name:{\n required: true\n },\n email:{\n required: true,\n email: true\n },\n phone:{\n required: false\n },\n jobTitle:{\n required: false\n },\n facility:{\n required: false\n },\n otherFacility:{\n required: false\n },\n message:{\n required: false\n }\n },\n messages: {\n name:{\n required: \"The name is required\"\n },\n email:{\n required: \"The email is required\",\n email: \"The email is invalid\"\n },\n phone:{\n required: \"The phone is not required\"\n },\n jobTitle:{\n required: \"The job title is not required\"\n },\n facility:{\n required: \"The facility is not required\"\n },\n otherFacility: {\n required: \"The other facility is not required\"\n },\n message: {\n required: \"The message is not required\"\n }\n },\n errorPlacement: function($error, $element){\n var $ele = $($element);\n var $name = $ele.attr(\"name\");\n if(!$ele.hasClass('is-invalid')){\n $ele.addClass('is-invalid');\n }\n $(\".\"+$name+\"_validate\").html($($error).text()).show();\n },\n success: function($error, $element) {\n var $ele = $($element);\n var $name = $ele.attr(\"name\");\n if($ele.hasClass('is-invalid')){\n $ele.removeClass('is-invalid');\n }\n $(\".\"+$name+\"_validate\").html('').hide();\n },\n submitHandler: function($form) {\n cback($form);\n return false;\n }\n });\n },\n information_meet_our_recruiters_request:function($params, cback){\n $.ajax({\n url:'/lounge/requestRecruiterInfo/get',\n method: \"POST\",\n cache:false,\n dataType: \"html\",\n data:$params,\n success: function ($data) {\n libs.expire($data);\n cback($data);\n }\n });\n },\n information_meet_our_recruiters_request_set:function($params, cback){\n $.ajax({\n url: \"/lounge/requestRecruiterInfo/set\",\n method: \"POST\",\n cache:false,\n dataType: \"json\",\n data:$params,\n success: function ($data) {\n libs.expire($data);\n cback($data);\n }\n });\n },\n //Report\n report_container:function(cback){\n var $container = $(\"#nurseslounge-lounge-information .nurseslounge-lounge-information-right .report\");\n cback($container);\n },\n report:function($container, $params){\n nurseslounge_lounge_overview.report_request($params, function($chtml){\n $container.html($chtml).promise().done(function(){\n libs.refreshTooltips();\n });\n });\n },\n report_request:function($params, cback){\n $.ajax({\n type: 'POST',\n url: '/lounge/report/get',\n data:$params,\n method: \"POST\",\n cache:false,\n dataType: \"html\",\n success: function ($data) {\n libs.expire($data);\n cback($data);\n }\n });\n },\n};\n","var nurseslounge_lounge_degrees = {\n init:function($params){\n $params = $.extend({},$params, {tab:'init'});\n nurseslounge_lounge_overview.information_lounge_get('init', $params, function($data){\n nurseslounge_lounge_degrees.information_administrator_edit($params, $data);\n });\n $params = $.extend({},$params, {\n tab:'degree_init'\n });\n nurseslounge_lounge_degrees.lounge_degrees_get($params, function($data) {\n nurseslounge_lounge_degrees.lounge_degrees_information_edit($params, $data);\n });\n nurseslounge_lounge_degrees.lounge_degrees_first_load($params);\n nurseslounge_lounge_degrees.information_meet_our_recruiters(function($config){\n nurseslounge_lounge_overview.information_meet_our_recruiters_engine($config);\n });\n nurseslounge_lounge_degrees.banners_location(function($config){\n nurseslounge_myDashboard_myProfile.banners_engine($config);\n });\n nurseslounge_lounge_degrees.lounge_ads_location(function($config){\n nurseslounge_lounge_overview.lounge_ads_engine($config);\n });\n },\n //Administrator\n information_administrator_edit:function($params, $data){\n var $modal = $(\"#nurseslounge-lounge-information-edit-modal\");\n var $isEmployer = $data && $data.data && $data.data.lounge && $data.data.lounge.lounge_type_id ? $data.data.lounge.lounge_type_id == 1 : false;\n var $isSchool = $data && $data.data && $data.data.lounge && $data.data.lounge.lounge_type_id ? $data.data.lounge.lounge_type_id == 2 : false;\n var $isSpecialty = $data && $data.data && $data.data.lounge && $data.data.lounge.lounge_type_id ? $data.data.lounge.lounge_type_id == 8 : false;\n var $thoughtLeaders = $data && $data.data && $data.data.lounge && $data.data.lounge.lounge_type_id ? $data.data.lounge.lounge_type_id == 9 : false;\n var $credential = $data && $data.data && $data.data.user_credential ? $data.data.user_credential : [];\n $isEmployer = !$isEmployer ? $params.typeName == 'employers' : $isEmployer;\n $isSchool = !$isSchool ? $params.typeName == 'schools' : $isSchool;\n $isSpecialty = !$isSpecialty ? $params.typeName == 'specialties' : $isSpecialty;\n $thoughtLeaders = !$thoughtLeaders ? $params.typeName == 'thoughtLeaders' : $thoughtLeaders;\n $credential = $credential.map(function($x){return parseInt($x);});\n var $createNewLoungeAccess = $.inArray(5, $credential) != -1 ? true : false;\n var $editNewLoungeAccess = $.inArray(6, $credential) != -1 ? true : false;\n var $deleteNewLoungeAccess = $.inArray(15, $credential) != -1 ? true : false;\n var $helpVideos = $.inArray(37, $credential) != -1 ? true : false;\n var $allowTabs = {\n 'information': $.inArray(7, $credential) != -1 ? true : false,\n 'otherNames': $.inArray(62, $credential) != -1 && !$thoughtLeaders ? true : false,\n 'specialties': $.inArray(80, $credential) != -1 && $isSpecialty || $.inArray(80, $credential) != -1 && $thoughtLeaders ? true : false,\n 'location': $.inArray(8, $credential) != -1 && !$thoughtLeaders ? true : false,\n 'multimedia': $.inArray(9, $credential) != -1 ? true : false,\n 'virtualTour': $.inArray(83, $credential) != -1 && !$thoughtLeaders ? true : false,\n 'recruiters': $.inArray(10, $credential) != -1 && !$thoughtLeaders ? true : false,\n 'owners': $.inArray(11, $credential) != -1 ? true : false,\n 'jobs': $.inArray(12, $credential) != -1 && $isEmployer || $.inArray(12, $credential) != -1 && $isSchool ? true : false,\n 'import': $.inArray(13, $credential) != -1 && $isEmployer || $.inArray(13, $credential) != -1 && $isSchool ? true : false,\n 'api': $.inArray(13, $credential) != -1 && $isEmployer || $.inArray(13, $credential) != -1 && $isSchool ? true : false,\n 'statistics': $.inArray(14, $credential) != -1 ? true : false,\n 'degrees': $.inArray(17, $credential) != -1 && $isSchool ? true : false,\n 'invite': $.inArray(24, $credential) != -1 ? true : false,\n 'inviteStatistics': $.inArray(28, $credential) != -1 ? true : false,\n 'inviteTemplates': $.inArray(66, $credential) != -1 ? true : false,\n 'createLogo': $.inArray(67, $credential) != -1 ? true : false,\n 'buyAds': $.inArray(71, $credential) != -1 && $isSchool ? true : false,\n 'sponsorDegrees': $.inArray(75, $credential) != -1 && $isSchool ? true : false,\n 'spotlightJobs': $.inArray(77, $credential) != -1 && !$isSchool && !$thoughtLeaders ? true : false,\n };\n var $allowTabsFiltered = $allowTabs;\n $allowTabs = {};\n $.each($allowTabsFiltered, function($k, $v) {var $newObj = {};$newObj[$k]=$v;if($v){$.extend($allowTabs, $newObj);}});\n var $information = $(\"#nurseslounge-lounge-degrees\");\n var $informationRight = $information.find('.nurseslounge-lounge-degrees-right:first .administrator:first');\n var $options = $informationRight.find('.option');\n $options.each(function(){\n var $that = $(this);\n var $action = $that.data('action');\n if(\n $createNewLoungeAccess && $action == 'create' ||\n $editNewLoungeAccess && $action == 'edit' ||\n $deleteNewLoungeAccess && $action == 'delete' ||\n $helpVideos && $action == 'help-videos' ||\n $helpVideos && $action == 'create-pin-it' ||\n $helpVideos && $action == 'create-event' ||\n $helpVideos && $action == 'send-invitation' ||\n $helpVideos && $action == 'examples-posts'\n ) {\n $that.unbind().click(function () {\n var $tab = null;\n $.each($allowTabs, function($i, $v){\n if($v){\n $tab = $i;\n return false;\n }\n });\n if(\n $tab && $action == 'create' ||\n $tab && $action == 'edit'\n ){\n nurseslounge_lounge_overview.information_administrator_select_tab($action, $tab, $allowTabs, $params, function () {\n $modal.scrollTop(0);\n $modal.modal('show');\n });\n }else\n if($tab && $action == 'help-videos'){\n window.open('https://www.home.nurseslounge.com/help-center', '_blank', '');\n }else\n if($tab && $action == 'create-pin-it'){\n nurseslounge_lounge_overview.information_administrator_tab_open_video('https://www.youtube.com/watch?v=NedHuxskMV8');\n }else\n if($tab && $action == 'create-event'){\n nurseslounge_lounge_overview.information_administrator_tab_open_video('https://www.youtube.com/watch?v=Dd4XKeHIAo0');\n }else\n if($tab && $action == 'send-invitation'){\n nurseslounge_lounge_overview.information_administrator_tab_open_video('https://www.youtube.com/watch?v=FbQw8gA_KmU');\n }else\n if($tab && $action == 'examples-posts'){\n nurseslounge_lounge_overview.information_administrator_tab_open_images();\n }else\n if($action == 'delete'){\n if(confirm('Are you sure you want to delete this lounge?')){\n $params = $.extend({},$params, {action:$action,tab:$action});\n nurseslounge_lounge_overview.information_administrator_tab_request($params, function($data){\n if($data.status == 'success'){\n router.navigate('/lounges');\n }\n });\n }\n }\n });\n }\n });\n if($isEmployer){\n $modal.find('.nav-pills .nav-link[data-target=\"#otherNames\"]').html(\"Facility Names\");\n }else{\n $modal.find('.nav-pills .nav-link[data-target=\"#otherNames\"]').html(\"Other Names\");\n }\n },\n lounge_degrees_first_load:function($params){\n var $loungeDegreesLeft = $(\"#nurseslounge-lounge-degrees .nurseslounge-lounge-degrees-left\");\n var $degreeForm = $loungeDegreesLeft.find('form');\n var $subcategory = $degreeForm.find('select[name=\"subcategory\"]');\n var $title = $degreeForm.find('input[name=\"title\"]');\n var $offered = $degreeForm.find('input[name=\"offered\"]');\n var $search = $degreeForm.find('.search');\n var $reset = $degreeForm.find('.reset');\n var $bindingSelector;\n try{\n $subcategory.chosen('destroy');\n }catch (e) {}\n $subcategory.chosen();\n $subcategory.unbind();\n nurseslounge_lounge_degrees.lounge_degrees_autocomplete(\n $title,\n $params,\n \"/lounge/degrees/autocomplete\",\n function($keyword){\n nurseslounge_lounge_degrees.lounge_degrees_search($params);\n }\n );\n $subcategory.change(function(){\n try {\n clearTimeout($bindingSelector);\n }catch (e) {\n }\n $bindingSelector = setTimeout(function(){\n nurseslounge_lounge_degrees.lounge_degrees_search($params);\n }, 800);\n });\n $offered.unbind().click(function(){\n nurseslounge_lounge_degrees.lounge_degrees_search($params);\n });\n $search.unbind().click(function(){\n nurseslounge_lounge_degrees.lounge_degrees_search($params);\n });\n $reset.unbind().click(function(){\n $degreeForm[0].reset();\n $subcategory.find('option').prop('selected',false);\n nurseslounge_lounge_degrees.lounge_degrees_search($params);\n });\n nurseslounge_lounge_degrees.lounge_degrees_search($params);\n },\n lounge_degrees_autocomplete:function($target, $data, $url, cback){\n try {\n $($target).autocomplete(\"destroy\");\n }catch (e) {\n }\n var $value = '';\n $($target).autocomplete({\n minLength\t:2,\n search\t\t: function(){\n $(this).addClass(\"ui-autocomplete-loading\");\n },\n open \t\t: function(){\n $(this).removeClass(\"ui-autocomplete-loading\");\n },\n source: function(request, response) {\n $.ajax({\n method: 'POST',\n url:$url,\n data:$.extend({},{\n keyword:$($target).val()\n }, $data),\n dataType: \"json\",\n success: function($data){\n libs.expire($data);\n $value = '';\n response($data);\n }\n });\n },\n create:function(){\n $(this).prev().remove();\n $(this).trigger(\"keypress.autocomplete\");\n },\n select: function (event, ui) {\n $value = ui.item.value;\n $(this).val($value);\n cback($value);\n return false;\n }\n }).keypress(function ($e) {\n if ($e.which == 13) {\n cback($(this).val());\n $(this).autocomplete(\"close\");\n }\n });\n },\n lounge_degrees_search:function($params){\n var $loungeDegreesLeft = $(\"#nurseslounge-lounge-degrees .nurseslounge-lounge-degrees-left\");\n var $degreeForm = $loungeDegreesLeft.find('form');\n var $subcategory = $degreeForm.find('select[name=\"subcategory\"]');\n var $title = $degreeForm.find('input[name=\"title\"]');\n var $offered = $degreeForm.find('input[name=\"offered\"]:checked');\n var $degreeList = $loungeDegreesLeft.find(\".degree-list:first\");\n var $degreeListPreview = nurseslounge_lounge_degrees.degree_preview();\n var $resultInfo = $loungeDegreesLeft.find(\".result-info-count:first\");\n var $resultPreview = ' ';\n var $paginationNav = $loungeDegreesLeft.find('.pagination-nav');\n var $paginationNavPreview = ' ';\n $params = $.extend({}, $params,{\n title:$title.val(),\n subcategory:$subcategory.val(),\n offered:$offered.val(),\n tab:'degrees_list'\n });\n $resultInfo.addClass('nurseslounge-lounge-degrees-preload').html($resultPreview);\n $paginationNav.addClass('nurseslounge-lounge-degrees-preload').html($paginationNavPreview);\n $degreeList.html($degreeListPreview).promise().done(function(){\n nurseslounge_lounge_degrees.degree_lounge_pagination($params);\n });\n },\n degree_preview:function(){\n var $chtml = '';\n for(var $i=1; $i<=10; $i++){\n $chtml+= '' +\n '
  • ' +\n '
    ' +\n '
    ' +\n '
    ' +\n '
    ' +\n '                 ' +\n '                 ' +\n '
    ' +\n '
    ' +\n '

    ' +\n '                   ' +\n '                   ' +\n '                   ' +\n '                   ' +\n '

    ' +\n '

     

    ' +\n '

     

    ' +\n '
    ' +\n '
    ' +\n '
    ' +\n '
    ' +\n '
    ' +\n '
    ' +\n ' ' +\n ' ' +\n ' ' +\n ' ' +\n ' ' +\n '
    ' +\n '
    ' +\n '  ' +\n '
    ' +\n '
    ' +\n ' ' +\n ' ' +\n '
    ' +\n '
    ' +\n '
  • ';\n }\n return $chtml;\n },\n degree_lounge_pagination:function($params){\n var $reload;\n var $loaded = false;\n var $afterFirstPagination = false;\n var $loungeDegreesLeft = $(\"#nurseslounge-lounge-degrees .nurseslounge-lounge-degrees-left\");\n var $degreeList = $loungeDegreesLeft.find('.degree-list');\n var $paginationNav = $loungeDegreesLeft.find('.pagination-nav');\n var $previewHeight = $loungeDegreesLeft.find('.degree-list .preview:first').innerHeight();\n var $degreeHeight = $degreeList.innerHeight();\n var $pageSize = Math.round(($degreeHeight/$previewHeight));\n var $resultInfo = $loungeDegreesLeft.find(\".result-info-count:first\");\n var $saveParams = $params;\n var $paginationObj;\n try{\n $paginationObj = libs.memoryGet('degree_lounge_pagination');\n if($paginationObj){\n $paginationObj.pagination('destroy');\n }\n }catch ($e) {\n }\n $paginationObj = $paginationNav.pagination({\n pageSize: $pageSize,\n showPageNumbers: true,\n showPrevious: true,\n showNext: true,\n showNavigator: true,\n showFirstOnEllipsisShow: true,\n showLastOnEllipsisShow: true,\n dataSource:window.location.protocol +'//'+ window.location.hostname + \"/lounge/degrees/get\",\n locator: 'data.degrees',\n ajax:{\n method: \"POST\",\n cache:false,\n dataType: \"json\",\n data:$params,\n beforeSend: function() {\n $degreeList.html(nurseslounge_lounge_degrees.degree_preview());\n },\n complete:function($data){\n libs.expire($data.responseJSON);\n if($data.responseJSON.status == 'error'){\n $(\"#nurseslounge-degree-information-edit-modal\").modal('hide');\n }\n }\n },\n totalNumberLocator: function($data) {\n return $data.data.total;\n },\n callback: function($data, $pagination) {\n $loaded = true;\n if($degreeList.length > 0 && $degreeList.offset().top > 0 && $afterFirstPagination){\n $('html, body').animate({scrollTop:$degreeList.offset().top - 100});\n }else{\n $afterFirstPagination = true;\n }\n var $pageNumber = $pagination.pageNumber;\n var $pageSize = $pagination.pageSize;\n var $totalNumber = $pagination.totalNumber;\n var $first = $totalNumber > 0 ? (($pageNumber-1) * $pageSize) + 1 : 0;\n var $last = $totalNumber > 0 ? ($first + $data.length - 1) : 0;\n $paginationNav.removeClass('nurseslounge-lounge-degrees-preload');\n $resultInfo.removeClass('nurseslounge-lounge-degrees-preload').html('Showing '+$first+' - '+$last+' of '+$totalNumber+' results for Degrees');\n var $chtml = nurseslounge_lounge_degrees.degrees_home_item_html($data);\n libs.checkImageLoad($($chtml).find('img'), function () {\n $degreeList.html('').html($chtml).promise().done(function () {\n nurseslounge_lounge_degrees.degrees_home_list_events($saveParams);\n });\n });\n }\n });\n libs.memorySave('degree_lounge_pagination', $paginationObj);\n $reload = setTimeout(function(){\n if(!$loaded){\n nurseslounge_lounge_degrees.degree_lounge_pagination($params);\n }else{\n clearTimeout($reload);\n }\n }, 10000);\n },\n degrees_home_item_html:function($loungeDegrees){\n var $userId = libs.memoryGet('user_id');\n var $chtml = '';\n $.each($loungeDegrees, function($i, $v){\n var $img = $v.lounge.logo_root_lounge;\n $chtml+='' +\n '
  • ';\n $chtml += '';\n if($v.sponsored == 1) {\n $chtml += '';\n }\n $chtml += '';\n $chtml +=\n '
    ' +\n '
    ' +\n '
    ' +\n '
    ' +\n ' \"hospital\"' +\n '
    ' +\n '
    ' +\n '

    ' +\n ' '+$v.title+'' +\n '

    ' +\n '

    '+$v.lounge.small_name+'

    ' +\n '

    ';\n if($v.lounge.location.address_city) {\n $chtml+='' +\n $v.lounge.location.address_city + ', ';\n }\n if($v.lounge.location.address_state) {\n $chtml+='' +\n $v.lounge.location.address_state;\n }\n $chtml+='' +\n '

    ' +\n '
    ' +\n '
    ' +\n '
    ' +\n '
    ' +\n '
    ' +\n '
    ' +\n nurseslounge_lounge_degrees.add_stars($v.rating) +\n '
    ' +\n '
    ' +\n $v.rating + ' / 5' +\n '
    ' +\n '
    ';\n if($userId != 'guest' && $v.lounge.isOwner){\n $chtml += '';\n }\n if($userId != 'guest'){\n $chtml += '';\n }\n $chtml += '' +\n '
    ' +\n '
    ' +\n '
  • ';\n });\n return $chtml;\n },\n add_stars:function($rating){\n var $chtml = '';\n for(var $i=1; $i<=5; $i++) {\n var $star = $rating - $i;\n var $offsetOn;\n var $offsetOff;\n var $unique = libs.getUniqueId();\n if($star >= 0){\n $offsetOn = 100;\n $offsetOff = 0;\n }else if($star < 0 && $star > -1){\n $star = ($star * -1);\n $offsetOff = ($star * 100);\n $offsetOn = (100 - $offsetOff);\n }else{\n $offsetOn = 0;\n $offsetOff = 100;\n }\n $chtml += '' +\n '' +\n ' ' +\n ' ';\n if($offsetOn > 0) {\n $chtml += '' +\n '';\n }\n if($offsetOff > 0){\n $chtml += '' +\n '';\n }\n $chtml += '' +\n ' ' +\n ' ' +\n ' ' +\n '';\n }\n return $chtml;\n },\n degrees_home_list_events:function($params){\n var $userId = libs.memoryGet('user_id');\n var $loungeDegreesLeft = $(\"#nurseslounge-lounge-degrees .nurseslounge-lounge-degrees-left\");\n var $degreeList = $loungeDegreesLeft.find('.degree-list');\n $degreeList.find(\".open-degree\").unbind().click(function(){\n var $key = $(this).parents('.item:first').data('key');\n nurseslounge_lounge_degrees.add_map_show_spu($key);\n });\n $degreeList.find(\".pin-it\").unbind().click(function($e){\n $e.stopPropagation();\n $e.preventDefault();\n var $key = $(this).parents('.item:first').data('key');\n nurseslounge_lounge_activity.pin_it({user_id:$userId, key:$key, theme:'degree'});\n });\n },\n lounge_degrees_get:function($data, cback){\n $.ajax({\n url: \"/lounge/degrees/get\",\n method: \"POST\",\n cache:false,\n dataType: \"json\",\n data:$data,\n success: function ($data) {\n libs.expire($data);\n if($data.status == 'error'){\n $(\"#nurseslounge-degree-information-edit-modal\").modal('hide');\n }\n cback($data);\n }\n });\n },\n lounge_degrees_information_edit:function($params, $data){\n var $isSchool = $data && $data.data && $data.data.lounge && $data.data.lounge.lounge_type_id ? $data.data.lounge.lounge_type_id == 2 : false;\n var $credential = $data && $data.data && $data.data.user_credential ? $data.data.user_credential : [];\n $credential = $credential.map(function($x){return parseInt($x);});\n var $allowTabs = {\n 'degree_information': $.inArray(18, $credential) != -1 && $isSchool ? true : false,\n 'degree_sponsor': $.inArray(20, $credential) != -1 && $isSchool ? true : false\n };\n var $allowTabsFiltered = $allowTabs;\n $allowTabs = {};\n $.each($allowTabsFiltered, function($k, $v) {var $newObj = {};$newObj[$k]=$v;if($v){$.extend($allowTabs, $newObj);}});\n var $information = $(\"#nurseslounge-lounge-degrees\");\n var $informationRight = $information.find('.nurseslounge-lounge-degrees-right:first .administrator-degree:first');\n var $options = $informationRight.find('.option');\n $options.each(function(){\n var $that = $(this);\n var $action = $that.data('action');\n if(\n $action == 'create'\n ) {\n $that.unbind().click(function () {\n var $tab = null;\n $.each($allowTabs, function($i, $v){\n if($v){\n $tab = $i;\n return false;\n }\n });\n if(\n $tab && $action == 'create'\n ){\n nurseslounge_degree_information.information_request_select_tab($action, $tab, $allowTabs, $params, function () {\n $(\"#nurseslounge-degree-information-edit-modal\").scrollTop(0);\n $(\"#nurseslounge-degree-information-edit-modal\").modal('show');\n });\n }\n });\n }\n });\n },\n\n add_map_show_spu:function($key){\n var $params = {\n key:$key,\n user_id:libs.memoryGet('user_id'),\n degree_key:$key,\n tab:'degree_popup'\n };\n var $degreeModal = $(\"#nurseslounge-degree-modal\");\n var $reviewModal = $(\"#nurseslounge-degree-information-review-modal\");\n var $loungeName = $degreeModal.find('.lounge-name:first');\n var $loungeNamePreview = '                                                                                ';\n var $degreeImage = $degreeModal.find('.degree-img:first');\n var $degreeImagePreview = '                                        ';\n var $degreeName = $degreeModal.find('.degree-name:first');\n var $degreeNamePreview = '                                ';\n var $degreeLounge = $degreeModal.find('.degree-lounge:first');\n var $degreeLoungePreview = ' ';\n var $degreeLocation = $degreeModal.find('.degree-location:first');\n var $degreeLocationPreview = ' ';\n var $degreeOffered = $degreeModal.find('.degree-offered:first');\n var $degreeOfferedPreview = ' ';\n var $ratingStarts = $degreeModal.find('.rating-stars:first');\n var $ratingStartsPreview = '' +\n '' +\n '' +\n '' +\n '' +\n '';\n var $ratingCount = $degreeModal.find('.rating-count:first');\n var $ratingCountPreview = ' ';\n var $degreeOverview = $degreeModal.find('.degree-overview:first');\n var $degreeOverviewPreview = '                                                                                                                                                                                                                                                                                                                                                                        ';\n var $degreeMap = $degreeModal.find('#degree-modal-tabs-location-map:first');\n var $degreeMapPreview = '                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     ';\n var $degreeRecruiter = $degreeModal.find('#degrees-recruiters .content:first');\n var $degreeRecruiterPreview = '                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     ';\n var $degreeRating = $degreeModal.find('#degrees-rating .content:first');\n var $degreeRatingPreview = '                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     ';\n var $degreeReviews = $degreeModal.find('#degrees-reviews .content:first');\n var $degreeReviewsPreview = '                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     ';\n var $degreeCost = $degreeModal.find('#degrees-cost .content:first');\n var $degreeCostPreview = '                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     ';\n var $degreeFollow = $degreeModal.find('.degree-follow:first');\n $degreeFollow.html(' ');\n //Clean\n $loungeName.addClass('nurseslounge-degree-popup-preload').html($loungeNamePreview);\n $degreeImage.addClass('nurseslounge-degree-popup-preload').html($degreeImagePreview);\n $degreeName.addClass('nurseslounge-degree-popup-preload').html($degreeNamePreview);\n $degreeLounge.addClass('nurseslounge-degree-popup-preload').html($degreeLoungePreview);\n $degreeLocation.addClass('nurseslounge-degree-popup-preload').html($degreeLocationPreview);\n $degreeOffered.addClass('nurseslounge-degree-popup-preload').html($degreeOfferedPreview);\n $ratingStarts.addClass('nurseslounge-degree-popup-preload').html($ratingStartsPreview);\n $ratingCount.addClass('nurseslounge-degree-popup-preload').html($ratingCountPreview);\n $degreeOverview.addClass('nurseslounge-degree-popup-preload').html($degreeOverviewPreview);\n $degreeMap.addClass('nurseslounge-degree-popup-preload').html($degreeMapPreview);\n $degreeRecruiter.addClass('nurseslounge-degree-popup-preload').html($degreeRecruiterPreview);\n $degreeRating.addClass('nurseslounge-degree-popup-preload').html($degreeRatingPreview);\n $degreeReviews.addClass('nurseslounge-degree-popup-preload').html($degreeReviewsPreview);\n $degreeCost.addClass('nurseslounge-degree-popup-preload').html($degreeCostPreview);\n var $positionSave = [];\n var $bounds = new google.maps.LatLngBounds();\n $degreeModal.modal('show');\n nurseslounge_lounge_degrees.add_map_show_spu_request($params, function($data){\n var $degree = $data && $data.data && $data.data.degree ? $data.data.degree : null;\n var $location = $degree && $degree.lounge && $degree.lounge.location ? $degree.lounge.location : null;\n if($location){\n var $localization = '';\n var $map = new google.maps.Map(document.getElementById('degree-modal-tabs-location-map'), {\n center: {lat: 29.8550297, lng: -97.9463043},\n mapTypeId: google.maps.MapTypeId.ROADMAP,\n mapTypeControl: false,\n streetViewControl: false,\n fullscreenControl: false,\n zoom: 10\n });\n $map.setTilt(0);\n $loungeName.removeClass('nurseslounge-degree-popup-preload').html($degree.lounge.name);\n $degreeImage.removeClass('nurseslounge-degree-popup-preload').html('\"hospital\"');\n $degreeName.removeClass('nurseslounge-degree-popup-preload').html($degree.title);\n $degreeLounge.removeClass('nurseslounge-degree-popup-preload').html($degree.lounge.name);\n if($degree.lounge.location.address_city) {\n $localization+='' +\n $degree.lounge.location.address_city + ', ';\n }\n if($degree.lounge.location.address_state) {\n $localization+='' +\n $degree.lounge.location.address_state;\n }\n $degreeLocation.removeClass('nurseslounge-degree-popup-preload').html($localization);\n $degreeOffered.removeClass('nurseslounge-degree-popup-preload').html($degree.offered.offered);\n $ratingStarts.removeClass('nurseslounge-degree-popup-preload').html(nurseslounge_lounge_degrees.add_stars($degree.rating));\n $ratingCount.removeClass('nurseslounge-degree-popup-preload').html($degree.rating + ' / 5');\n $degreeOverview.removeClass('nurseslounge-degree-popup-preload').html($degree.description);\n $degreeMap.removeClass('nurseslounge-degree-popup-preload');\n $degreeFollow.html('Why Study Here?');\n var $recruiter = $data && $data.data && $data.data.degree && $data.data.degree.lounge && $data.data.degree.lounge.recruiters ? $data.data.degree.lounge.recruiters : [];\n var $recruiterHtml = '';\n if($recruiter.length > 0){\n $recruiterHtml = nurseslounge_lounge_degrees.recruiters_html($recruiter);\n }else{\n $recruiterHtml = '' +\n '
    ' +\n '

    No recruiters listed.

    ' +\n '
    ';\n }\n $degreeRecruiter.removeClass('nurseslounge-degree-popup-preload').html($recruiterHtml);\n var $rating = $data && $data.data && $data.data.degree && $data.data.degree.rating ? $data.data.degree.rating : 0;\n var $ratingHtml = '';\n if($rating > 0){\n $ratingHtml = '' +\n '
    ' +\n nurseslounge_lounge_degrees.add_stars($rating) +\n '

    Rating '+$rating+' / 5'+'

    ' +\n '
    ';\n }else{\n $ratingHtml = '' +\n '
    ' +\n nurseslounge_lounge_degrees.add_stars(0) +\n '

    ' +\n 'Be the first to give a rating.' +\n '

    ' +\n '
    ';\n }\n $degreeRating.removeClass('nurseslounge-degree-popup-preload').html($ratingHtml).promise().done(function(){\n $degreeRating.find('.first-rating:first').unbind().click(function(){\n $degreeModal.modal('hide');\n nurseslounge_degree_information.information_review($params, $data, function(){\n $reviewModal.modal('hide');\n });\n });\n });\n var $lounge = $data && $data.data && $data.data.degree && $data.data.degree.lounge ? $data.data.degree.lounge : null;\n var $reviews = $data && $data.data && $data.data.degree && $data.data.degree.reviews ? $data.data.degree.reviews : [];\n var $degreeReviewHtml = '';\n if($reviews.length > 0){\n $degreeReviewHtml = '' +\n '
    ' +\n nurseslounge_lounge_degrees.reviews_html($reviews, $lounge) +\n '
    ';\n }else{\n $degreeReviewHtml = '' +\n '
    ' +\n '

    ' +\n 'Be the first to give a review.' +\n '

    ' +\n '
    ';\n }\n $degreeReviews.removeClass('nurseslounge-degree-popup-preload').html($degreeReviewHtml).promise().done(function(){\n $degreeReviews.find('.first-rating:first').unbind().click(function(){\n $degreeModal.modal('hide');\n nurseslounge_degree_information.information_review($params, $data, function(){\n $reviewModal.modal('hide');\n });\n });\n $degreeReviews.find('.open-url').unbind().click(function(){\n var $url = $(this).data('url');\n window.open($url,'_blank');\n });\n });\n var $cost = $data && $data.data && $data.data.degree && $data.data.degree.cost_average ? $data.data.degree.cost_average : '';\n var $costHtml = '';\n if($cost == ''){\n $costHtml = '' +\n '
    ' +\n '

    ' +\n 'Cost not listed.' +\n '

    ' +\n '
    ';\n }else{\n $costHtml = '' +\n '
    ' +\n '

    ' +\n $cost +\n '

    ' +\n '
    ';\n }\n $degreeCost.removeClass('nurseslounge-degree-popup-preload').html($costHtml);\n nurseslounge_lounge_degrees.add_map_marker_with_info($map, $degree, $positionSave, false, function () {\n nurseslounge_lounge_degrees.add_map_show_spu_events($data);\n $.each($positionSave, function ($i, $v) {\n $bounds.extend($v);\n });\n setTimeout(function(){\n $map.fitBounds($bounds);\n $map.panToBounds($bounds);\n $map.setZoom(15);\n }, 1000);\n });\n nurseslounge_lounge_degrees.add_map_show_spu_events($data);\n }\n });\n },\n reviews_html:function($reviews, $lounge){\n var $chtml = '';\n $chtml += '
      ';\n $.each($reviews, function($i, $v){\n $chtml+='' +\n '
    • ' +\n '
      ' +\n '
      ' +\n '
      ' +\n '
      ' +\n ' ' +\n '

      '+$v.degree_program+'

      ' +\n '
      ' +\n '
      ' +\n ' ' +\n '

      '+$v.location.replace('_', ' ')+'

      ' +\n '
      ' +\n '
      ';\n if($v.recommend_to_friend == 'yes'){\n $chtml+='' +\n '
      ' +\n '
      ' +\n ' ' +\n '
      ' +\n '
      ';\n }\n $chtml+='' +\n '
      ' +\n '
      ' +\n '
      ' +\n '
      ' +\n '
      ' +\n '
      ' +\n '
      ' +\n ' Review' +\n '
      ' +\n '
      ' +\n '
      ' +\n '
      ' +\n '
      ' +\n $v.overall_rating + ' / 5' +\n '
      ' +\n '
      ' +\n nurseslounge_lounge_degrees.add_stars($v.overall_rating) +\n '
      ' +\n '
      ' +\n '
      ' +\n '
      ' +\n '
      ';\n if($v.pros && $v.pros != '') {\n $chtml += '' +\n '
      ' +\n '
      ' +\n '
      Pros
      ' +\n '

      ' + $v.pros + '

      ' +\n '
      ' +\n '
      ';\n }\n if($v.cons && $v.cons != '') {\n $chtml += '' +\n '
      ' +\n '
      ' +\n '
      Cons
      ' +\n '

      ' + $v.cons + '

      ' +\n '
      ' +\n '
      ';\n }\n $chtml+='' +\n '
      ';\n\n if($v.answer) {\n $chtml += '' +\n '
      ' +\n '
      ' +\n '
      Response from ' +\n ' ' +\n $v.answer.user.long_name +\n ' ' +\n '
      ' +\n '
      ' +\n '

      ' +\n $v.answer.answer +\n '

      ' +\n '
      ' +\n '
      ' +\n '
      ';\n }\n\n $chtml+='' +\n '
    • ';\n });\n /*\n $.each($reviews, function($i, $v){\n $chtml+='' +\n '
    • ' +\n '
      ' +\n '
      ' +\n '
      ';\n if($lounge.lounge_type_id == 1) {\n $chtml += '' +\n '
      ' +\n ' ' +\n '

      ' + $v.job_title + '

      ' +\n '
      ' +\n '
      ' +\n ' ' +\n '

      ' + $v.facility + '

      ' +\n '
      ' +\n '
      ' +\n ' ' +\n '

      ' + $v.recommend_to_friend + '

      ' +\n '
      ';\n }\n if($lounge.lounge_type_id == 2){\n $chtml += '' +\n '
      ' +\n ' ';\n\n if($v.school_degree == 'other') {\n $chtml += '

      ' + $v.other_degree + '

      ';\n }else{\n $chtml += '

      ' + $v.school_degree + '

      ';\n }\n $chtml += '' +\n '
      ' +\n '
      ' +\n ' ' +\n '

      ' + $v.recommend_to_friend + '

      ' +\n '
      ';\n }\n $chtml+='' +\n '
      ' +\n '
      ' +\n '
      ' +\n '
      ' +\n '
      ' +\n '
      ' +\n ' Review' +\n '
      ' +\n '
      ' +\n '
      ' +\n '
      ' +\n '
      ' +\n $v.overall_rating + ' / 5' +\n '
      ' +\n '
      ' +\n nurseslounge_jobs.add_stars($v.overall_rating) +\n '
      ' +\n '
      ' +\n '
      ' +\n '
      ' +\n '
      ' +\n '
      ' +\n '
      ' +\n '
      Pros
      ' +\n '

      '+$v.pros+'

      ' +\n '
      ' +\n '
      ' +\n '
      ' +\n '
      ' +\n '
      Cons
      ' +\n '

      '+$v.cons+'

      ' +\n '
      ' +\n '
      ' +\n '
      ';\n if($v.answer) {\n $chtml += '' +\n '
      ' +\n '
      ' +\n '
      Response from ' +\n ' ' +\n $v.answer.user.long_name +\n ' ' +\n '
      ' +\n '
      ' +\n '

      ' +\n $v.answer.answer +\n '

      ' +\n '
      ' +\n '
      ' +\n '
      ';\n }\n $chtml += '' +\n '
    • ';\n });\n */\n $chtml += '
    ';\n return $chtml;\n },\n recruiters_html:function($recruiters){\n var $chtml = '';\n $chtml += '' +\n '
      ';\n $.each($recruiters, function($k,$v){\n $chtml += '' +\n '
    • ' +\n '
      ' +\n '
      ' +\n '
      ' +\n '
      ' +\n ' \"recruiter\"' +\n '
      ' +\n '
      ' +\n '

      ' +\n ' ' +\n $v.user.long_name +\n ' ' +\n '

      ' +\n '
      ' +\n '
      ' +\n '
      ' +\n '
      ' +\n '
    • ';\n });\n $chtml += '
    ';\n return $chtml;\n },\n\n add_map_show_spu_request:function($params, cback){\n $.ajax({\n url: \"/lounge/degrees/get\",\n method: \"POST\",\n cache:false,\n dataType: \"json\",\n data:$params,\n success: function ($data) {\n libs.expire($data);\n if($data.status == 'success'){\n cback($data);\n }\n }\n });\n },\n add_map_show_spu_recruiters_html:function($recruiters){\n var $chtml = '';\n $.each($recruiters, function($i, $v){\n var $image = $v.user.profile_image_root_wall;\n $chtml += ''+\n '' +\n ' ' +\n '';\n });\n return $chtml;\n },\n add_map_show_spu_reviews_html:function($reviews){\n var $chtml = '';\n $.each($reviews, function($i, $v) {\n $chtml += nurseslounge_degree_reviews.reviews_item_html($v, null, null, 'item');\n });\n return $chtml;\n },\n add_map_marker_with_info:function($map, $degree, $positionSave, $isEnable, cback) {\n var $location = $degree && $degree.lounge && $degree.lounge.location ? $degree.lounge.location : null;\n var $mapsMarkers = libs.memoryGet('maps_markers') ? libs.memoryGet('maps_markers') : [];\n var $position = new google.maps.LatLng(parseFloat($location.address_latitude), parseFloat($location.address_longitude));\n var $iconUrl = './../../bimg/NursesLounge/active.png';\n var $infowindow = new google.maps.InfoWindow({\n content:'

    '+$degree.lounge.name+'

    ',\n maxWidth: 400\n });\n var $marker = new google.maps.Marker({\n position:$position,\n map: $map,\n animation: google.maps.Animation.DROP,\n icon: {url:$iconUrl, scaledSize: (new google.maps.Size(20, 35))},\n });\n $marker.addListener('click', function() {\n $infowindow.open($map,$marker);\n });\n $mapsMarkers.push($marker);\n $positionSave.push($position);\n libs.memorySave('maps_markers', $mapsMarkers);\n if(cback != undefined){\n cback();\n }\n },\n add_map_show_spu_events:function($data){\n var $degree = $data && $data.data && $data.data.degree ? $data.data.degree : null;\n var $contactEmailUrl = $degree && $degree.email ? $degree.email : false;\n var $title = $degree && $degree.title ? $degree.title : null;\n var $body = 'I saw your degree on Nurses Lounge and would like to apply.';\n var $subject = 'Application for '+$title+' - via Nurses Lounge';\n var $degreeModal = $(\"#nurseslounge-degree-modal\");\n var $reviewModal = $(\"#nurseslounge-degree-information-review-modal\");\n var $requestInfoModal = $(\"#nurseslounge-degree-request-info-modal\");\n var $params = {\n user_id:libs.memoryGet('user_id'),\n key:$degree.lounge.key,\n degree_key:$degree.key\n };\n var $degreeName = $degreeModal.find('.degree-name:first');\n var $degreeFollow = $degreeModal.find('.degree-follow:first');\n var $degreeRequestInfo = $degreeModal.find('.degree-request-info:first');\n var $degreeAddReview = $degreeModal.find('.degree-add-review:first');\n var $degreeRatingStarts = $degreeModal.find('.clg-rating:first');\n $degreeName.unbind().click(function(){\n $degreeModal.modal('hide');\n window.open('/lounge/'+$degree.lounge.key+'/degree/'+$degree.key, '_blank', '');\n });\n $degreeRatingStarts.unbind().click(function(){\n $degreeModal.modal('hide');\n nurseslounge_degree_information.information_review($params, $data, function(){\n $reviewModal.modal('hide');\n });\n });\n $degreeAddReview.unbind().click(function(){\n $degreeModal.modal('hide');\n nurseslounge_degree_information.information_review($params, $data, function(){\n $reviewModal.modal('hide');\n });\n });\n $degreeRequestInfo.unbind().click(function(){\n $degreeModal.modal('hide');\n nurseslounge_degree_information.information_request_info_events($params, $data, function(){\n $requestInfoModal.modal('hide');\n });\n });\n $degreeFollow.unbind().click(function(){\n $degreeModal.modal('hide');\n window.open('/lounge/'+$degree.lounge.key, '_blank', '');\n });\n /*\n $applyWithEmail.unbind().click(function(){\n nurseslounge_degree_information.information_apply_set('apply', $params,function($data){\n $degreeModal.modal('hide');\n window.open('mailto:'+$contactEmailUrl+'?body='+$body+'&subject='+$subject, '_blank');\n });\n });\n */\n },\n //Meet our recruiters\n information_meet_our_recruiters:function(cback){\n cback({\n 'container':$(\"#nurseslounge-lounge-degrees .nurseslounge-lounge-degrees-right .meet-our-recruiters\")\n });\n },\n //Banners\n banners_location:function(cback){\n cback({\n 'banners':$(\"#nurseslounge-lounge-degrees .nurseslounge-lounge-degrees-right .banners\")\n });\n },\n lounge_ads_location:function(cback){\n cback({\n 'ads':$(\"#nurseslounge-lounge-degrees .nurseslounge-lounge-degrees-right .lounge-ads\")\n });\n }\n};\n","var nurseslounge_lounge_ratingReviews = {\n init:function($params, cback){\n $params = $.extend({},$params, {tab:'init'});\n nurseslounge_lounge_overview.information_lounge_get('init', $params, function($data){\n nurseslounge_lounge_ratingReviews.information_administrator_edit($params, $data);\n });\n $params = $.extend({},$params, {\n user_id:libs.memoryGet('user_id'),\n tab:'review_init'\n });\n nurseslounge_lounge_ratingReviews.reviews_get($params, function($data){\n if(\n $data.data.lounge.lounge_type_id == 1 || //employer\n $data.data.lounge.lounge_type_id == 2 //school\n ) {\n nurseslounge_lounge_ratingReviews.reviews_rating($params, $data);\n }else{\n router.navigate('/lounges');\n }\n if(cback != undefined){\n cback();\n }\n });\n nurseslounge_lounge_ratingReviews.banners_location(function($config){\n nurseslounge_myDashboard_myProfile.banners_engine($config);\n });\n nurseslounge_lounge_ratingReviews.task_list_container(function($container){\n $params = $.extend({}, $params, {only:'owners'});\n nurseslounge_myDashboard_myProfile.task_list($container, $params);\n });\n nurseslounge_lounge_ratingReviews.report_container(function($container){\n nurseslounge_lounge_overview.report($container, $params);\n });\n nurseslounge_lounge_ratingReviews.lounge_ads_location(function($config){\n nurseslounge_lounge_overview.lounge_ads_engine($config);\n });\n },\n //Administrator\n information_administrator_edit:function($params, $data){\n var $modal = $(\"#nurseslounge-lounge-information-edit-modal\");\n var $isEmployer = $data && $data.data && $data.data.lounge && $data.data.lounge.lounge_type_id ? $data.data.lounge.lounge_type_id == 1 : false;\n var $isSchool = $data && $data.data && $data.data.lounge && $data.data.lounge.lounge_type_id ? $data.data.lounge.lounge_type_id == 2 : false;\n var $isSpecialty = $data && $data.data && $data.data.lounge && $data.data.lounge.lounge_type_id ? $data.data.lounge.lounge_type_id == 8 : false;\n var $thoughtLeaders = $data && $data.data && $data.data.lounge && $data.data.lounge.lounge_type_id ? $data.data.lounge.lounge_type_id == 9 : false;\n var $credential = $data && $data.data && $data.data.user_credential ? $data.data.user_credential : [];\n $isEmployer = !$isEmployer ? $params.typeName == 'employers' : $isEmployer;\n $isSchool = !$isSchool ? $params.typeName == 'schools' : $isSchool;\n $isSpecialty = !$isSpecialty ? $params.typeName == 'specialties' : $isSpecialty;\n $thoughtLeaders = !$thoughtLeaders ? $params.typeName == 'thoughtLeaders' : $thoughtLeaders;\n $credential = $credential.map(function($x){return parseInt($x);});\n var $createNewLoungeAccess = $.inArray(5, $credential) != -1 ? true : false;\n var $editNewLoungeAccess = $.inArray(6, $credential) != -1 ? true : false;\n var $deleteNewLoungeAccess = $.inArray(15, $credential) != -1 ? true : false;\n var $helpVideos = $.inArray(37, $credential) != -1 ? true : false;\n var $allowTabs = {\n 'information': $.inArray(7, $credential) != -1 ? true : false,\n 'otherNames': $.inArray(62, $credential) != -1 && !$thoughtLeaders ? true : false,\n 'specialties': $.inArray(80, $credential) != -1 && $isSpecialty || $.inArray(80, $credential) != -1 && $thoughtLeaders ? true : false,\n 'location': $.inArray(8, $credential) != -1 && !$thoughtLeaders ? true : false,\n 'multimedia': $.inArray(9, $credential) != -1 ? true : false,\n 'virtualTour': $.inArray(83, $credential) != -1 && !$thoughtLeaders ? true : false,\n 'recruiters': $.inArray(10, $credential) != -1 && !$thoughtLeaders ? true : false,\n 'owners': $.inArray(11, $credential) != -1 ? true : false,\n 'jobs': $.inArray(12, $credential) != -1 && $isEmployer || $.inArray(12, $credential) != -1 && $isSchool ? true : false,\n 'import': $.inArray(13, $credential) != -1 && $isEmployer || $.inArray(13, $credential) != -1 && $isSchool ? true : false,\n 'api': $.inArray(13, $credential) != -1 && $isEmployer || $.inArray(13, $credential) != -1 && $isSchool ? true : false,\n 'statistics': $.inArray(14, $credential) != -1 ? true : false,\n 'degrees': $.inArray(17, $credential) != -1 && $isSchool ? true : false,\n 'invite': $.inArray(24, $credential) != -1 ? true : false,\n 'inviteStatistics': $.inArray(28, $credential) != -1 ? true : false,\n 'inviteTemplates': $.inArray(66, $credential) != -1 ? true : false,\n 'createLogo': $.inArray(67, $credential) != -1 ? true : false,\n 'buyAds': $.inArray(71, $credential) != -1 && $isSchool ? true : false,\n 'sponsorDegrees': $.inArray(75, $credential) != -1 && $isSchool ? true : false,\n 'spotlightJobs': $.inArray(77, $credential) != -1 && !$isSchool && !$thoughtLeaders ? true : false,\n };\n var $allowTabsFiltered = $allowTabs;\n $allowTabs = {};\n $.each($allowTabsFiltered, function($k, $v) {var $newObj = {};$newObj[$k]=$v;if($v){$.extend($allowTabs, $newObj);}});\n var $information = $(\"#nurseslounge-lounge-reviews\");\n var $informationRight = $information.find('.nurseslounge-lounge-reviews-right:first .administrator:first');\n var $options = $informationRight.find('.option');\n $options.each(function(){\n var $that = $(this);\n var $action = $that.data('action');\n if(\n $createNewLoungeAccess && $action == 'create' ||\n $editNewLoungeAccess && $action == 'edit' ||\n $deleteNewLoungeAccess && $action == 'delete' ||\n $helpVideos && $action == 'help-videos' ||\n $helpVideos && $action == 'create-pin-it' ||\n $helpVideos && $action == 'create-event' ||\n $helpVideos && $action == 'send-invitation' ||\n $helpVideos && $action == 'examples-posts'\n ) {\n $that.unbind().click(function () {\n var $tab = null;\n $.each($allowTabs, function($i, $v){\n if($v){\n $tab = $i;\n return false;\n }\n });\n if(\n $tab && $action == 'create' ||\n $tab && $action == 'edit'\n ){\n nurseslounge_lounge_overview.information_administrator_select_tab($action, $tab, $allowTabs, $params, function () {\n $modal.scrollTop(0);\n $modal.modal('show');\n });\n }else\n if($tab && $action == 'help-videos'){\n window.open('https://www.home.nurseslounge.com/help-center', '_blank', '');\n }else\n if($tab && $action == 'create-pin-it'){\n nurseslounge_lounge_overview.information_administrator_tab_open_video('https://www.youtube.com/watch?v=NedHuxskMV8');\n }else\n if($tab && $action == 'create-event'){\n nurseslounge_lounge_overview.information_administrator_tab_open_video('https://www.youtube.com/watch?v=Dd4XKeHIAo0');\n }else\n if($tab && $action == 'send-invitation'){\n nurseslounge_lounge_overview.information_administrator_tab_open_video('https://www.youtube.com/watch?v=FbQw8gA_KmU');\n }else\n if($tab && $action == 'examples-posts'){\n nurseslounge_lounge_overview.information_administrator_tab_open_images();\n }else\n if($action == 'delete'){\n if(confirm('Are you sure you want to delete this lounge?')){\n $params = $.extend({},$params, {action:$action,tab:$action});\n nurseslounge_lounge_overview.information_administrator_tab_request($params, function($data){\n if($data.status == 'success'){\n router.navigate('/lounges');\n }\n });\n }\n }\n });\n }\n });\n if($isEmployer){\n $modal.find('.nav-pills .nav-link[data-target=\"#otherNames\"]').html(\"Facility Names\");\n }else{\n $modal.find('.nav-pills .nav-link[data-target=\"#otherNames\"]').html(\"Other Names\");\n }\n },\n reviews_get:function($params, cback){//tabs reviews\n $.ajax({\n url: \"/lounge/reviews/get\",\n method: \"POST\",\n cache:false,\n dataType: \"json\",\n data:$params,\n success: function ($data) {\n libs.expire($data);\n if($data.status == 'error'){\n $(\"#nurseslounge-lounge-information-review-modal\").modal('hide');\n $(\"#nurseslounge-lounge-review-answer-modal\").modal('hide');\n }\n cback($data);\n }\n });\n },\n reviews_rating:function($params, $data){\n var $typeId = $data.data.lounge.lounge_type_id ? $data.data.lounge.lounge_type_id : 0;\n var $nursesloungeLoungeReview = $(\"#nurseslounge-lounge-reviews\");\n var $reviewModal = $(\"#nurseslounge-lounge-information-review-modal\");\n var $loungeReviewsRight = $nursesloungeLoungeReview.find('.nurseslounge-lounge-reviews-right:first');\n var $ratingFirst = $loungeReviewsRight.find('.rating-stars:first');\n var $ratingCount = $loungeReviewsRight.find('.rating-count:first');\n var $addReviewFirst = $loungeReviewsRight.find('.add-review:first');\n var $deleteReviewFirst = $loungeReviewsRight.find('.delete-review:first');\n $ratingFirst.unbind().click(function(){\n nurseslounge_lounge_overview.information_review($typeId, $params, $data, function(){\n libs.refreshBoxFrom('.review-box', $params, function(){\n nurseslounge_lounge_ratingReviews.init($params);\n $reviewModal.modal('hide');\n });\n });\n });\n $ratingCount.unbind().click(function(){\n nurseslounge_lounge_overview.information_review($typeId, $params, $data, function(){\n libs.refreshBoxFrom('.review-box', $params, function(){\n nurseslounge_lounge_ratingReviews.init($params);\n $reviewModal.modal('hide');\n });\n });\n });\n $addReviewFirst.unbind().click(function(){\n nurseslounge_lounge_overview.information_review($typeId, $params, $data, function(){\n libs.refreshBoxFrom('.review-box', $params, function(){\n nurseslounge_lounge_ratingReviews.init($params);\n $reviewModal.modal('hide');\n });\n });\n });\n $deleteReviewFirst.unbind().click(function(){\n if(confirm('Are you sure you want to delete your review?')){\n nurseslounge_lounge_overview.information_remove_review($params, function(){\n libs.refreshBoxFrom('.review-box', $params, function(){\n nurseslounge_lounge_ratingReviews.init($params);\n $reviewModal.modal('hide');\n });\n });\n }\n });\n nurseslounge_lounge_ratingReviews.reviews_rating_list($params);\n },\n reviews_rating_list:function($params){\n var $loungeReviewsLeft = $(\"#nurseslounge-lounge-reviews .nurseslounge-lounge-reviews-left\");\n var $commentsList = $loungeReviewsLeft.find(\".comments-list:first\");\n var $commentsListPreview = nurseslounge_lounge_ratingReviews.comments_preview();\n var $resultInfo = $loungeReviewsLeft.find(\".result-info-count:first\");\n var $resultPreview = ' ';\n var $paginationNav = $loungeReviewsLeft.find('.pagination-nav');\n var $paginationNavPreview = ' ';\n $resultInfo.addClass('nurseslounge-lounge-reviews-preload').html($resultPreview);\n $paginationNav.addClass('nurseslounge-lounge-reviews-preload').html($paginationNavPreview);\n $commentsList.html($commentsListPreview).promise().done(function(){\n nurseslounge_lounge_ratingReviews.reviews_rating_pagination($params);\n });\n },\n comments_preview:function(){\n var $chtml = '';\n for(var $i=1; $i<=5; $i++){\n $chtml+= '' +\n '
  • ' +\n '
    ' +\n '
    ' +\n '
    ' +\n '
    ' +\n ' ' +\n '

    ' +\n '           ' +\n '           ' +\n '           ' +\n '

    ' +\n '
    ' +\n '
    ' +\n ' ' +\n '

    ' +\n '           ' +\n '           ' +\n '           ' +\n '

    ' +\n '
    ' +\n '
    ' +\n ' ' +\n '

    ' +\n '           ' +\n '           ' +\n '           ' +\n '

    ' +\n '
    ' +\n '
    ' +\n '
    ' +\n '
    ' +\n '
    ' +\n '
    ' +\n '
    ' +\n ' Review' +\n '
    ' +\n '
    ' +\n '
    ' +\n '
    ' +\n '
    ' +\n '         ' +\n '         ' +\n '
    ' +\n '
    ' +\n ' ' +\n ' ' +\n ' ' +\n ' ' +\n ' ' +\n '
    ' +\n '
    ' +\n '
    ' +\n '
    ' +\n '
    ' +\n '
    ' +\n '
    ' +\n '
     
    ' +\n '

     

    ' +\n '
    ' +\n '
    ' +\n '
    ' +\n '
    ' +\n '
     
    ' +\n '

     

    ' +\n '
    ' +\n '
    ' +\n '
    ' +\n '
  • ';\n }\n return $chtml;\n },\n reviews_rating_pagination:function($params){\n var $reload;\n var $loaded = false;\n var $afterFirstPagination = false;\n var $loungeReviewsLeft = $(\"#nurseslounge-lounge-reviews .nurseslounge-lounge-reviews-left\");\n var $commentsList = $loungeReviewsLeft.find('.comments-list:first');\n var $paginationNav = $loungeReviewsLeft.find('.pagination-nav:first');\n var $previewHeight = $loungeReviewsLeft.find('.comments-list .preview:first').innerHeight();\n var $commentsHeight = $commentsList.innerHeight();\n var $pageSize = Math.round(($commentsHeight/$previewHeight));\n var $resultInfo = $loungeReviewsLeft.find(\".result-info-count:first\");\n var $saveParams = $params;\n var $paginationObj;\n var $userCredential;\n var $isOwner;\n try{\n $paginationObj = libs.memoryGet('reviews_rating_pagination');\n if($paginationObj){\n $paginationObj.pagination('destroy');\n }\n }catch ($e) {\n }\n $paginationObj = $paginationNav.pagination({\n pageSize: $pageSize,\n showPageNumbers: true,\n showPrevious: true,\n showNext: true,\n showNavigator: true,\n showFirstOnEllipsisShow: true,\n showLastOnEllipsisShow: true,\n dataSource:window.location.protocol +'//'+ window.location.hostname + \"/lounge/reviews/get\",\n locator: 'data.reviews',\n ajax:{\n method: \"POST\",\n cache:false,\n dataType: \"json\",\n data:$.extend({}, $params, {tab:'reviews_list'}),\n beforeSend: function() {\n $commentsList.html(nurseslounge_lounge_ratingReviews.comments_preview());\n },\n complete:function($data){\n libs.expire($data.responseJSON);\n if($data.responseJSON.status == 'error'){\n $(\"#nurseslounge-lounge-information-review-modal\").modal('hide');\n $(\"#nurseslounge-lounge-review-answer-modal\").modal('hide');\n }\n }\n },\n totalNumberLocator: function($data) {\n $userCredential = $data.data.user_credential.map(function($x){return parseInt($x);});\n $isOwner = $data.data.is_owner;\n return $data.data.total;\n },\n callback: function($data, $pagination) {\n $loaded = true;\n if($commentsList.length > 0 && $commentsList.offset().top > 0 && $afterFirstPagination){\n $('html, body').animate({scrollTop:$commentsList.offset().top - 100});\n }else{\n $afterFirstPagination = true;\n }\n var $pageNumber = $pagination.pageNumber;\n var $pageSize = $pagination.pageSize;\n var $totalNumber = $pagination.totalNumber;\n var $first = $totalNumber > 0 ? (($pageNumber-1) * $pageSize) + 1 : 0;\n var $last = $totalNumber > 0 ? ($first + $data.length - 1) : 0;\n $paginationNav.removeClass('nurseslounge-lounge-reviews-preload');\n $resultInfo.removeClass('nurseslounge-lounge-reviews-preload').html('Showing '+$first+' - '+$last+' of '+$totalNumber+' results for Reviews');\n var $chtml = nurseslounge_lounge_ratingReviews.item_html($data, $userCredential, $isOwner);\n libs.checkImageLoad($($chtml).find('img'), function () {\n $commentsList.html('').html($chtml).promise().done(function () {\n nurseslounge_lounge_ratingReviews.list_events($saveParams);\n });\n });\n }\n });\n libs.memorySave('reviews_rating_pagination', $paginationObj);\n $reload = setTimeout(function(){\n if(!$loaded){\n nurseslounge_lounge_ratingReviews.reviews_rating_pagination($params);\n }else{\n clearTimeout($reload);\n }\n }, 10000);\n },\n item_html:function($reviews, $userCredential, $isOwner){\n var $userId = libs.memoryGet('user_id');\n var $chtml = '';\n $.each($reviews, function($i, $v){\n $chtml+='' +\n '
  • ' +\n '
    ' +\n '
    ' +\n '
    ';\n if($userCredential && $.inArray(16, $userCredential) != -1 || $isOwner) {\n $chtml+='' +\n '
    ' +\n ' \"horizontal' +\n '
    ';\n }\n if($v.type == 'employer') {\n $chtml += '' +\n '
    ' +\n ' ' +\n '

    ' + $v.job_title + '

    ' +\n '
    ' +\n '
    ' +\n ' ' +\n '

    ' + $v.facility + '

    ' +\n '
    ' +\n '
    ';\n if($v.recommend_to_friend == 'yes'){\n $chtml+='' +\n '
    ' +\n '
    ' +\n ' ' +\n '
    ' +\n '
    ';\n }\n $chtml += '' +\n '
    ';\n }\n if($v.type == 'school'){\n if($v.current_profile_id != 5){\n $chtml += '' +\n '
    ' +\n ' ' +\n '

    ' + $v.school_degree + '

    ' +\n '
    ';\n }else{\n $chtml += '' +\n '
    ';\n }\n $chtml += '' +\n '
    ';\n if($v.recommend_to_friend == 'yes'){\n $chtml+='' +\n '
    ' +\n '
    ' +\n ' ' +\n '
    ' +\n '
    ';\n }\n $chtml += '' +\n '
    ';\n }\n $chtml+='' +\n '
    ' +\n '
    ' +\n '
    ' +\n '
    ' +\n '
    ';\n if($v.current_profile_id == 5){\n $chtml+='
    Nurse Faculty Job Rating
    ';\n }\n $chtml+='' +\n '
    ';\n if($v.pros_cons && $v.pros_cons != '') {\n $chtml+='' +\n ' Review';\n }\n $chtml+='' +\n '
    ' +\n '
    ' +\n '
    ' +\n '
    ' +\n '
    ' +\n $v.overall_rating + ' / 5' +\n '
    ' +\n '
    ' +\n nurseslounge_lounge_ratingReviews.add_stars($v.overall_rating) +\n '
    ' +\n '
    ' +\n '
    ' +\n '
    ' +\n '
    ';\n if($v.pros_cons && $v.pros_cons != '') {\n $chtml += '' +\n '
    ' +\n '
    ' +\n '

    ' + $v.pros_cons + '

    ' +\n '
    ' +\n '
    ';\n }\n $chtml+='' +\n '
    ';\n if($v.user.id == $userId){\n //Rating And Reviews\n $chtml+='' +\n '
    ' +\n '
    ' +\n '
    ' +\n ' ' +\n ' Delete my Review' +\n ' ' +\n '
    ' +\n '
    ' +\n '
    ' +\n '
    ' +\n ' ' +\n ' Edit My Review' +\n ' ' +\n '
    ' +\n '
    ' +\n '
    ';\n }\n if($v.answer) {\n $chtml += '' +\n '
    ' +\n '
    ' +\n ' Response:' +\n //'
    Response from ' +\n //' ' +\n //$v.answer.user.long_name +\n //' ' +\n //'
    ' +\n '
    ' +\n '

    ' +\n $v.answer.answer +\n '

    ' +\n '
    ' +\n '
    ' +\n '
    ';\n }\n $chtml += '' +\n '
  • ';\n });\n return $chtml;\n },\n add_stars:function($rating){\n var $chtml = '';\n for(var $i=1; $i<=5; $i++) {\n var $star = $rating - $i;\n var $offsetOn;\n var $offsetOff;\n var $unique = libs.getUniqueId();\n if($star >= 0){\n $offsetOn = 100;\n $offsetOff = 0;\n }else if($star < 0 && $star > -1){\n $star = ($star * -1);\n $offsetOff = ($star * 100);\n $offsetOn = (100 - $offsetOff);\n }else{\n $offsetOn = 0;\n $offsetOff = 100;\n }\n $chtml += '' +\n '' +\n ' ' +\n ' ';\n if($offsetOn > 0) {\n $chtml += '' +\n '';\n }\n if($offsetOff > 0){\n $chtml += '' +\n '';\n }\n $chtml += '' +\n ' ' +\n ' ' +\n ' ' +\n '';\n }\n return $chtml;\n },\n list_events:function($params){\n var $reviewModal = $(\"#nurseslounge-lounge-information-review-modal\");\n var $loungeReviewsLeft = $(\"#nurseslounge-lounge-reviews .nurseslounge-lounge-reviews-left\");\n var $commentsList = $loungeReviewsLeft.find('.comments-list:first');\n $commentsList.find('.answer-review').unbind().click(function(){\n var $key = $(this).parents('li:first').data('key');\n nurseslounge_lounge_ratingReviews.reviews_edit_review($params, $key);\n });\n $commentsList.find('.open-url').unbind().click(function(){\n var $url = $(this).data('url');\n window.open($url,'_blank');\n });\n $commentsList.find('.add-review').unbind().click(function(){\n var $that = $(this);\n var $key = $that.data('lounge_key');\n $params = $.extend({}, $params, {key:$key});\n nurseslounge_myDashboard_myProfile.lounge_review_get_request($params, function($data){\n var $typeId = $data.data.lounge.lounge_type_id;\n nurseslounge_lounge_overview.information_review($typeId, $params, $data, function(){\n libs.refreshBoxFrom('.review-box', $params, function(){\n nurseslounge_lounge_ratingReviews.init($params);\n $reviewModal.modal('hide');\n });\n });\n });\n });\n $commentsList.find('.delete-review').unbind().click(function(){\n var $that = $(this);\n var $key = $that.data('lounge_key');\n $params = $.extend({}, $params, {key:$key});\n if(confirm('Are you sure you want to delete your review?')){\n nurseslounge_lounge_overview.information_remove_review($params, function(){\n libs.refreshBoxFrom('.review-box', $params, function(){\n nurseslounge_lounge_ratingReviews.init($params);\n $reviewModal.modal('hide');\n });\n });\n }\n });\n },\n reviews_edit_review:function($params, $reviewKey){\n $params = $.extend({},$params,{\n user_id:libs.memoryGet('user_id'),\n review_key:$reviewKey,\n tab:'review'\n });\n var $modal = $(\"#nurseslounge-lounge-review-answer-modal\");\n var $modalInfo = $modal.find('.modal-info');\n nurseslounge_lounge_ratingReviews.reviews_get($params, function($data){\n var $modalInfoContent = nurseslounge_lounge_ratingReviews.item_popup_html($data);\n $modalInfo.html($modalInfoContent).promise().done(function () {\n nurseslounge_lounge_ratingReviews.reviews_popup_events($params, $data, function () {\n $modal.modal('show');\n });\n });\n });\n },\n item_popup_html:function($data){\n var $review = $data.data.review;\n var $chtml = '';\n $chtml+='' +\n '
    ' +\n '
    ' +\n //'
    ' +\n //' Written by' +\n //' '+$review.user.long_name+'' +\n //'
    ' +\n '
    ' +\n '
    ' +\n '
    '+$review.date+'
    ' +\n '
    ' +\n '
    ' +\n '
    ' +\n '
    ' +\n '
    ' +\n '
    ';\n if($review.type == 'employer') {\n $chtml += '' +\n '
    ' +\n ' ' +\n '

    ' + $review.job_title + '

    ' +\n '
    ' +\n '
    ' +\n ' ' +\n '

    ' + $review.facility + '

    ' +\n '
    ' +\n '
    ';\n if($review.recommend_to_friend == 'yes'){\n $chtml+='' +\n '
    ' +\n '
    ' +\n ' ' +\n '
    ' +\n '
    ';\n }\n $chtml += '' +\n '
    ';\n }\n if($review.type == 'school'){\n if($review.current_profile_id != 5){\n $chtml += '' +\n '
    ' +\n ' ' +\n '

    ' + $review.school_degree + '

    ' +\n '
    ';\n }else{\n $chtml += '' +\n '
    ';\n }\n $chtml += '' +\n '
    ';\n if($review.recommend_to_friend == 'yes'){\n $chtml+='' +\n '
    ' +\n '
    ' +\n ' ' +\n '
    ' +\n '
    ';\n }\n $chtml += '' +\n '
    ';\n\n }\n $chtml+='' +\n '
    ' +\n '
    ' +\n '
    ' +\n '
    ' +\n '
    ' +\n '
    ';\n if($review.pros_cons && $review.pros_cons != '') {\n $chtml += '' +\n ' Review';\n }\n $chtml += '' +\n '
    ' +\n '
    ' +\n '
    ' +\n '
    ' +\n '
    ' +\n $review.overall_rating + ' / 5' +\n '
    ' +\n '
    ' +\n nurseslounge_lounge_ratingReviews.add_stars($review.overall_rating) +\n '
    ' +\n '
    ' +\n '
    ' +\n '
    ' +\n '
    ';\n if($review.pros_cons && $review.pros_cons != '') {\n $chtml += '' +\n '
    ' +\n '
    ' +\n '

    ' + $review.pros_cons + '

    ' +\n '
    ' +\n '
    ';\n }\n $chtml += '' +\n '
    ' +\n '
    ' +\n '
    ';\n if($review && $review.answer) {\n $chtml += '' +\n '
    ' +\n ' Response:' +\n //' Response from' +\n //' ' +\n //$review.answer.user.long_name +\n //' ' +\n '
    ';\n }\n $chtml+='' +\n '
    ' +\n '
    ' +\n ' ' +\n '
    ' +\n '
    ' +\n '
    ' +\n '
    ' +\n '
    ' +\n '
    ' +\n '
    ' +\n ' ' +\n ' ' +\n ' ' +\n '
    ' +\n '
    ';\n\n return $chtml;\n },\n reviews_popup_events:function($params, $data, cback){\n var $modal = $(\"#nurseslounge-lounge-review-answer-modal\");\n var $answer = $modal.find('textarea[name=\"answer\"]');\n $modal.find('.option').unbind().click(function(){\n var $that = $(this);\n var $action = $that.data('action');\n $params = $.extend({},$params, {action:$action,answer:$answer.val()});\n nurseslounge_lounge_ratingReviews.review_answer_set($params, function($data) {\n switch($action){\n case 'delete review':\n libs.refreshBoxFrom('.review-box', $params, function () {\n nurseslounge_lounge_ratingReviews.init($params, function(){\n $modal.modal('hide');\n });\n });\n break;\n case 'delete answer':\n nurseslounge_lounge_ratingReviews.init($params, function(){\n $modal.modal('hide');\n });\n break;\n case 'save':\n nurseslounge_lounge_ratingReviews.init($params, function(){\n $modal.modal('hide');\n });\n break;\n }\n });\n });\n $modal.find('.open-url').unbind().click(function(){\n var $url = $(this).data('url');\n window.open($url,'_blank');\n });\n if(cback != undefined){\n cback();\n }\n },\n review_answer_set:function($params, cback){\n $.ajax({\n url: \"/lounge/review/answer/set\",\n method: \"POST\",\n cache:false,\n dataType: \"json\",\n data:$params,\n success: function ($data) {\n libs.expire($data);\n nurseslounge_lounge_ratingReviews.task_list_container(function($container){\n $params = $.extend({}, $params, {only:'owners'});\n nurseslounge_myDashboard_myProfile.task_list($container, $params);\n });\n if($data.status == 'error'){\n $(\"#nurseslounge-lounge-information-review-modal\").modal('hide');\n $(\"#nurseslounge-lounge-review-answer-modal\").modal('hide');\n }\n cback($data);\n }\n });\n },\n //Banners\n banners_location:function(cback){\n cback({\n 'banners':$(\"#nurseslounge-lounge-reviews .nurseslounge-lounge-reviews-right .banners\")\n });\n },\n lounge_ads_location:function(cback){\n cback({\n 'ads':$(\"#nurseslounge-lounge-reviews .nurseslounge-lounge-reviews-right .lounge-ads\")\n });\n },\n //Task List Container\n task_list_container:function(cback){\n var $container = $(\"#nurseslounge-lounge-reviews .nurseslounge-lounge-reviews-right\");\n cback($container);\n },\n //Report\n report_container:function(cback){\n var $container = $(\"#nurseslounge-lounge-reviews .nurseslounge-lounge-reviews-right .report\");\n cback($container);\n },\n};\n","var nurseslounge_lounge_calendar = {\r\n serverDateHelper:null,\r\n serverDate:null,\r\n selectedView:'month',\r\n selectedDate:null,\r\n setServerDate:function($utcDate){\r\n this.serverDateHelper = new Date();\r\n this.serverDate = $utcDate.toDate();\r\n },\r\n getServerDate:function(){\r\n var $now = new Date().getTime();\r\n var $diff = $now - this.serverDateHelper.getTime();\r\n var $date = this.serverDate.getTime() + $diff;\r\n $date = new Date($date);\r\n return {\r\n Y: $date.getUTCFullYear(),\r\n n: $date.getUTCMonth(),\r\n d: $date.getUTCDate(),\r\n G: $date.getUTCHours(),\r\n i: $date.getUTCMinutes(),\r\n s: $date.getUTCSeconds(),\r\n v: $date.getUTCMilliseconds()\r\n };\r\n },\r\n init: function ($params) {\r\n $params = $.extend({}, $params, {lounge_key:$params.key, key:null});\r\n nurseslounge_lounge_calendar.calendar($params);\r\n nurseslounge_lounge_calendar.get_years_calendar($params);\r\n },\r\n get_years_calendar:function($params){\r\n var $myCalendar = $(\"#nurseslounge-lounge-calendar\");\r\n var $timeZone = $myCalendar.find(\".time-zone\");\r\n var $area = $timeZone.data('area');\r\n var $calendarDate = nurseslounge_lounge_calendar.selectedDate;\r\n var $calendarTop = $(\"#nurseslounge-lounge-calendar .nurseslounge-lounge-calendar-top\");\r\n $params = $.extend({}, $params, {area:$area, year:$calendarDate.clone().format('YYYY')});\r\n nurseslounge_lounge_calendar.get_years_calendar_request($params, function($data){\r\n var $calendarEventsCount = $data.data.calendar_events_count;\r\n var $chtml = '';\r\n if($calendarEventsCount > 1 || $calendarEventsCount == 0){\r\n $chtml = $calendarEventsCount + ' Events on the Calendar';\r\n }else{\r\n $chtml = $calendarEventsCount + ' Event on the Calendar';\r\n }\r\n $calendarTop.find(\".year-events\").html($chtml).promise().done(function(){\r\n $calendarTop.find(\".event-list-view\").unbind().click(function(){\r\n var $event = $calendarTop.find(\".event-list-text\").data('event');\r\n $(\"#nurseslounge-lounge-calendar .view-options\").val($event).change();\r\n });\r\n });\r\n });\r\n },\r\n get_years_calendar_request:function($params, cback){\r\n $.ajax({\r\n url: \"/lounge/calendar/getYearEvents\",\r\n method: 'POST',\r\n cache: false,\r\n dataType: \"json\",\r\n data:$params,\r\n success: function ($data) {\r\n libs.expire($data);\r\n cback($data);\r\n }\r\n });\r\n },\r\n calendar:function($params){\r\n nurseslounge_lounge_calendar.currentTime();\r\n var $myCalendar = $(\"#nurseslounge-lounge-calendar\");\r\n var $timeZone = $myCalendar.find(\".time-zone\");\r\n var $area = $timeZone.data('area');\r\n nurseslounge_lounge_calendar.selectedDate = moment();\r\n var $calendarDate = nurseslounge_lounge_calendar.selectedDate;\r\n var $defaulCalendar = 'month';\r\n switch ($defaulCalendar) {\r\n case 'month':{\r\n $params = $.extend({}, $params, {area:$area, month:$calendarDate.clone().format('DD-MM-YYYY')});\r\n break;\r\n }\r\n case 'week':{\r\n $params = $.extend({}, $params, {area:$area, week:$calendarDate.clone().format('DD-MM-YYYY')});\r\n break;\r\n }\r\n case 'day':{\r\n $params = $.extend({}, $params, {area:$area, week:$calendarDate.clone().format('DD-MM-YYYY')});\r\n break;\r\n }\r\n case 'list':{\r\n $params = $.extend({}, $params, {area:$area, week:$calendarDate.clone().format('DD-MM-YYYY')});\r\n break;\r\n }\r\n }\r\n nurseslounge_lounge_calendar.get($params, function($data){\r\n var $weeks = nurseslounge_lounge_calendar.getWeeks($calendarDate, $data);\r\n var $week = $calendarDate.clone().week();\r\n var $day = $calendarDate.clone().format('DD');\r\n $day = libs.pad('00',$day,'l');\r\n var $currentWeek = $weeks.filter(function($v){\r\n return $v[0] == $week;\r\n })[0];\r\n var $currentDay = $currentWeek[1].filter(function($v){\r\n return $v[0] == $day;\r\n })[0];\r\n var $Y = $currentDay[1].trace.year.Y;\r\n var $n = $currentDay[1].trace.month.n - 1;\r\n var $d = $currentDay[1].trace.day.d;\r\n var $G = $currentDay[1].trace.hour.G;\r\n var $i = $currentDay[1].trace.hour.i;\r\n var $s = $currentDay[1].trace.hour.s;\r\n var $v = $currentDay[1].trace.hour.v;\r\n var $utcDate = moment.utc([$Y, $n, $d, $G, $i, $s, $v]);\r\n nurseslounge_lounge_calendar.setServerDate($utcDate);\r\n nurseslounge_lounge_calendar.createCalendar($defaulCalendar, $calendarDate.clone(), $data);\r\n });\r\n },\r\n currentTime:function(){\r\n var $myCalendar = $(\"#nurseslounge-lounge-calendar\");\r\n var $calendarBinding = libs.memoryGet('lounge_calendar_current_time') ? libs.memoryGet('lounge_calendar_current_time') : null;\r\n var $now = moment();\r\n var $dateArea = moment.tz.guess();\r\n var $dateZone = moment($now.format('YYYY-MM-DD')).tz($dateArea).format('Z');\r\n var $dateZoneAbbr = moment($now.format('YYYY-MM-DD')).tz($dateArea).format('z');\r\n var $timeZone = $myCalendar.find(\".time-zone\");\r\n var $timeNow = $myCalendar.find(\".time-now\");\r\n $timeZone.data('area', $dateArea);\r\n $timeZone.data('zone', $dateZone);\r\n $timeZone.data('zoneabbr', $dateZoneAbbr);\r\n $timeZone.html($dateArea+' '+$dateZone+' '+$dateZoneAbbr);\r\n $timeNow.data('datetime', $now.format('DD-MM-YYYY, HH:mm:ss'));\r\n\r\n var $activeTimeLine = $(\".calendar .view-week .week-timeline.active\");\r\n var $viewWeek = $activeTimeLine.parent();\r\n var $from = $viewWeek.data('from');\r\n $from = moment($from, 'YYYY-MM-DD HH:mm:ss');\r\n var $diffInMinutes = $now.diff($from, 'minutes');\r\n var $top = (parseInt($diffInMinutes)*2);\r\n var $getTop = $activeTimeLine.css('top');\r\n $getTop = $getTop!= undefined ? $getTop.replace('px', '') : '';\r\n if($getTop != $top){\r\n $activeTimeLine.css('top', $top);\r\n }\r\n\r\n var $weekTimeline = libs.memoryGet('lounge_calendar_week_timeline_binding');\r\n if($diffInMinutes == 0 && !$weekTimeline){\r\n libs.memorySave('lounge_calendar_week_timeline_binding', true);\r\n $activeTimeLine.removeClass('active');\r\n var $index = $($activeTimeLine.parents('tr:first').find('td')).index($viewWeek);\r\n $activeTimeLine.parent().closest('tr').next('tr').find('td:eq('+$index+')').find('.week-timeline').addClass('active');\r\n libs.memorySave('lounge_calendar_week_timeline_binding', false);\r\n }\r\n\r\n $timeNow.html($now.format('MMMM DD YYYY, hh:mm:ss a')).promise().done(function(){\r\n try{\r\n clearTimeout($calendarBinding);\r\n }catch ($e) {\r\n\r\n }\r\n $calendarBinding = setTimeout(function(){\r\n nurseslounge_lounge_calendar.currentTime();\r\n }, 1000);\r\n });\r\n libs.memorySave('lounge_calendar_current_time', $calendarBinding)\r\n },\r\n get:function($params, cback){\r\n $.ajax({\r\n url: \"/lounge/calendar/get\",\r\n method: \"POST\",\r\n cache:false,\r\n dataType: \"json\",\r\n data:$params,\r\n success: function ($data) {\r\n libs.expire($data);\r\n cback($data);\r\n }\r\n });\r\n },\r\n getConsecutive:function($params, cback){\r\n $.ajax({\r\n url: \"/lounge/calendar/getConsecutive\",\r\n method: \"POST\",\r\n cache:false,\r\n dataType: \"json\",\r\n data:$params,\r\n success: function ($data) {\r\n libs.expire($data);\r\n cback($data);\r\n }\r\n });\r\n },\r\n createCalendar:function($view, $momentDate, $data){\r\n var $userId = libs.memoryGet('user_id');\r\n var $myCalendar = $(\"#nurseslounge-lounge-calendar\");\r\n var $timeZone = $myCalendar.find(\".time-zone\");\r\n var $area = $timeZone.data('area');\r\n var $viewOptions = $myCalendar.find(\".view-options\");\r\n var $prevButton = $myCalendar.find(\".prev-button\");\r\n var $nextButton = $myCalendar.find(\".next-button\");\r\n var $todayButton = $myCalendar.find(\".today-button\");\r\n var $createEvent = $myCalendar.find(\".create-event\");\r\n var $YYYY = $momentDate.format('YYYY');\r\n var $MMMM = $momentDate.format('MMMM');\r\n var $calendarTitle = $myCalendar.find(\".calendar-title\");\r\n var $loungeKey = $data.data.lounge_key;\r\n var $calendarTop = $(\"#nurseslounge-lounge-calendar .nurseslounge-lounge-calendar-top\");\r\n nurseslounge_lounge_calendar.selectedDate = $momentDate;\r\n switch ($view) {\r\n case 'month':{\r\n $calendarTop.find(\".event-list-text\").html('Event List View').promise().done(function(){\r\n $calendarTop.find(\".event-list-text\").data('event','list');\r\n nurseslounge_lounge_calendar.createCalendarMonth($momentDate, $data);\r\n });\r\n break;\r\n }\r\n case 'week':{\r\n $calendarTop.find(\".event-list-text\").html('Event Calendar View').promise().done(function(){\r\n $calendarTop.find(\".event-list-text\").data('event','month');\r\n nurseslounge_lounge_calendar.createCalendarWeek($momentDate, $data);\r\n });\r\n break;\r\n }\r\n case 'day':{\r\n $calendarTop.find(\".event-list-text\").html('Event Calendar View').promise().done(function(){\r\n $calendarTop.find(\".event-list-text\").data('event','month');\r\n nurseslounge_lounge_calendar.createCalendarDay($momentDate, $data);\r\n });\r\n break;\r\n }\r\n case 'list':{\r\n $calendarTop.find(\".event-list-text\").html('Event Calendar View').promise().done(function(){\r\n $calendarTop.find(\".event-list-text\").data('event','month');\r\n nurseslounge_lounge_calendar.createCalendarList($momentDate, $data);\r\n });\r\n break;\r\n }\r\n }\r\n $calendarTitle.removeClass('calendar-title-preload');\r\n $calendarTitle.html($MMMM+' - '+$YYYY).promise().done(function(){\r\n $viewOptions.unbind().change(function(){\r\n var $that = $(this);\r\n var $selectedView = $that.val();\r\n var $params = {user_id:$userId, area:$area, lounge_key:$loungeKey};\r\n var $selectedDate = nurseslounge_lounge_calendar.selectedDate;\r\n if($selectedView != ''){\r\n switch ($selectedView) {\r\n case 'month':{\r\n $params = $.extend({}, $params, {month:$selectedDate.clone().format('DD-MM-YYYY')});\r\n break;\r\n }\r\n case 'week':{\r\n $params = $.extend({}, $params, {week:$selectedDate.clone().format('DD-MM-YYYY')});\r\n break;\r\n }\r\n case 'day':{\r\n $params = $.extend({}, $params, {week:$selectedDate.clone().format('DD-MM-YYYY')});\r\n break;\r\n }\r\n case 'list':{\r\n $params = $.extend({}, $params, {week:$selectedDate.clone().format('DD-MM-YYYY')});\r\n break;\r\n }\r\n }\r\n nurseslounge_lounge_calendar.get($params, function($data){\r\n nurseslounge_lounge_calendar.createCalendar($selectedView, $selectedDate.clone(), $data);\r\n });\r\n nurseslounge_lounge_calendar.selectedView = $selectedView;\r\n }\r\n });\r\n $viewOptions.find('option[value=\"'+$view+'\"]').prop('selected', true);\r\n $prevButton.unbind().click(function(){\r\n var $newMomentDate = null;\r\n var $selectedView = nurseslounge_lounge_calendar.selectedView;\r\n var $params = {user_id:$userId, area:$area, lounge_key:$loungeKey};\r\n switch ($selectedView) {\r\n case 'month':{\r\n $newMomentDate = $momentDate.subtract(1, 'month');\r\n $params = $.extend({}, $params, {month:$newMomentDate.clone().format('DD-MM-YYYY')});\r\n break;\r\n }\r\n case 'week':{\r\n $newMomentDate = $momentDate.subtract(1, 'week');\r\n $params = $.extend({}, $params, {week:$newMomentDate.clone().format('DD-MM-YYYY')});\r\n break;\r\n }\r\n case 'day':{\r\n $newMomentDate = $momentDate.subtract(1, 'day');\r\n $params = $.extend({}, $params, {week:$newMomentDate.clone().format('DD-MM-YYYY')});\r\n break;\r\n }\r\n case 'list':{\r\n $newMomentDate = $momentDate.subtract(1, 'day');\r\n $params = $.extend({}, $params, {week:$newMomentDate.clone().format('DD-MM-YYYY')});\r\n break;\r\n }\r\n }\r\n if($selectedView == 'list'){\r\n nurseslounge_lounge_calendar.prevConsecutiveDay($params);\r\n }else{\r\n nurseslounge_lounge_calendar.get($params, function($data){\r\n nurseslounge_lounge_calendar.createCalendar($selectedView, $newMomentDate.clone(), $data);\r\n });\r\n }\r\n });\r\n $nextButton.unbind().click(function(){\r\n var $newMomentDate = null;\r\n var $selectedView = nurseslounge_lounge_calendar.selectedView;\r\n var $params = {user_id:$userId, area:$area, lounge_key:$loungeKey};\r\n switch ($selectedView) {\r\n case 'month':{\r\n $newMomentDate = $momentDate.add(1, 'month');\r\n $params = $.extend({}, $params, {month:$newMomentDate.clone().format('DD-MM-YYYY')});\r\n break;\r\n }\r\n case 'week':{\r\n $newMomentDate = $momentDate.add(1, 'week');\r\n $params = $.extend({}, $params, {week:$newMomentDate.clone().format('DD-MM-YYYY')});\r\n break;\r\n }\r\n case 'day':{\r\n $newMomentDate = $momentDate.add(1, 'day');\r\n $params = $.extend({}, $params, {week:$newMomentDate.clone().format('DD-MM-YYYY')});\r\n break;\r\n }\r\n case 'list':{\r\n $newMomentDate = $momentDate.add(1, 'day');\r\n $params = $.extend({}, $params, {week:$newMomentDate.clone().format('DD-MM-YYYY')});\r\n break;\r\n }\r\n }\r\n if($selectedView == 'list'){\r\n nurseslounge_lounge_calendar.nextConsecutiveDay($params);\r\n }else{\r\n nurseslounge_lounge_calendar.get($params, function($data){\r\n nurseslounge_lounge_calendar.createCalendar($selectedView, $newMomentDate.clone(), $data);\r\n });\r\n }\r\n });\r\n $todayButton.unbind().click(function(){\r\n var $selectedView = nurseslounge_lounge_calendar.selectedView;\r\n var $params = {user_id:$userId, area:$area, lounge_key:$loungeKey};\r\n var $today = moment();\r\n switch ($selectedView) {\r\n case 'month':{\r\n $params = $.extend({}, $params, {month:$today.clone().format('DD-MM-YYYY')});\r\n break;\r\n }\r\n case 'week':{\r\n $params = $.extend({}, $params, {week:$today.clone().format('DD-MM-YYYY')});\r\n break;\r\n }\r\n case 'day':{\r\n $params = $.extend({}, $params, {week:$today.clone().format('DD-MM-YYYY')});\r\n break;\r\n }\r\n case 'list':{\r\n $params = $.extend({}, $params, {week:$today.clone().format('DD-MM-YYYY')});\r\n break;\r\n }\r\n }\r\n //Scroll\r\n nurseslounge_lounge_calendar.get($params, function($data){\r\n nurseslounge_lounge_calendar.createCalendar($selectedView, $today, $data);\r\n var $calendarViewWeek = $(\".calendar .view-week\");\r\n var $activeTimeLine = $calendarViewWeek.find(\".week-timeline.active\");\r\n if($activeTimeLine.length > 0 && $calendarViewWeek.is(':visible')){\r\n var $scrollPosition = $activeTimeLine.offset().top;\r\n $(\"html, body\").animate({scrollTop:parseInt($scrollPosition) - 150});\r\n }\r\n var $calendarViewDay = $(\".calendar .view-day\");\r\n var $activeTimeLine = $calendarViewDay.find(\".week-timeline.active\");\r\n if($activeTimeLine.length > 0 && $calendarViewDay.is(':visible')){\r\n var $scrollPosition = $activeTimeLine.offset().top;\r\n $(\"html, body\").animate({scrollTop:parseInt($scrollPosition) - 150});\r\n }\r\n var $calendarViewList = $(\".calendar .view-list\");\r\n var $activeTimeLine = $calendarViewList.find(\".timeline.active\");\r\n if($activeTimeLine.length > 0 && $calendarViewList.is(':visible')){\r\n var $scrollPosition = $activeTimeLine.offset().top;\r\n $(\"html, body\").animate({scrollTop:parseInt($scrollPosition) - 150});\r\n }\r\n });\r\n });\r\n $createEvent.unbind().click(function(){\r\n var $params = {user_id:$userId, area:$area, lounge_key:$loungeKey};\r\n nurseslounge_lounge_calendar.getEventModal($params);\r\n //var $params = {user_id:$userId, area:$area};\r\n //nurseslounge_lounge_calendar.openPreviousEvent($params);\r\n });\r\n var $calendarViewWeek = $(\".calendar .view-week\");\r\n var $activeTimeLine = $calendarViewWeek.find(\".week-timeline.active\");\r\n if($activeTimeLine.length > 0 && $calendarViewWeek.is(':visible')){\r\n var $scrollPosition = $activeTimeLine.offset().top;\r\n $(\"html, body\").animate({scrollTop:parseInt($scrollPosition) - 150});\r\n }\r\n var $calendarViewDay = $(\".calendar .view-day\");\r\n var $activeTimeLine = $calendarViewDay.find(\".week-timeline.active\");\r\n if($activeTimeLine.length > 0 && $calendarViewDay.is(':visible')){\r\n var $scrollPosition = $activeTimeLine.offset().top;\r\n $(\"html, body\").animate({scrollTop:parseInt($scrollPosition) - 150});\r\n }\r\n var $calendarViewList = $(\".calendar .view-list\");\r\n var $activeTimeLine = $calendarViewList.find(\".timeline.active\");\r\n if($activeTimeLine.length > 0 && $calendarViewList.is(':visible')){\r\n var $scrollPosition = $activeTimeLine.offset().top;\r\n $(\"html, body\").animate({scrollTop:parseInt($scrollPosition) - 150});\r\n }\r\n });\r\n var $nurseslounge_lounge_calendar_list = libs.memoryGet('nurseslounge_lounge_calendar_list');\r\n if($view == 'list' && !$nurseslounge_lounge_calendar_list){\r\n libs.memorySave('nurseslounge_lounge_calendar_list', true);\r\n $todayButton.click();\r\n $nextButton.click();\r\n }\r\n if($view != 'list'){\r\n libs.memorySave('nurseslounge_lounge_calendar_list', false);\r\n }\r\n },\r\n nextConsecutiveDay:function($params){\r\n $params = $.extend({}, $params, {sense:'next'});\r\n nurseslounge_lounge_calendar.getConsecutive($params, function($data) {\r\n var $selectedWeek = $data.data.selected_week;\r\n var $momentDate = moment($selectedWeek, \"DD-MM-YYYY\");\r\n nurseslounge_lounge_calendar.selectedDate = $momentDate;\r\n nurseslounge_lounge_calendar.createCalendar('list', $momentDate.clone(), $data);\r\n });\r\n },\r\n prevConsecutiveDay:function($params){\r\n $params = $.extend({}, $params, {sense:'prev'});\r\n nurseslounge_lounge_calendar.getConsecutive($params, function($data) {\r\n var $selectedWeek = $data.data.selected_week;\r\n var $momentDate = moment($selectedWeek, \"DD-MM-YYYY\");\r\n nurseslounge_lounge_calendar.selectedDate = $momentDate;\r\n nurseslounge_lounge_calendar.createCalendar('list', $momentDate.clone(), $data);\r\n });\r\n },\r\n getEventRequest:function($params, cback){\r\n $.ajax({\r\n url: \"/lounge/calendar/getEvent\",\r\n method: 'POST',\r\n cache: false,\r\n dataType: \"html\",\r\n data:$params,\r\n success: function ($data) {\r\n libs.expire($data);\r\n cback($data);\r\n }\r\n });\r\n },\r\n getEventModal:function($params){\r\n var $myCalendar = $(\"#nurseslounge-lounge-calendar\");\r\n var $timeZone = $myCalendar.find(\".time-zone\");\r\n var $area = $timeZone.data('area');\r\n $params = $.extend({}, $params, {area:$area});\r\n var $modal = $(\"#nurseslounge-lounge-calendar-modal\");\r\n var $modalTitle = $modal.find(\".modal-title\");\r\n var $modalBody = $modal.find(\".modal-body\");\r\n nurseslounge_lounge_calendar.getEventRequest($params, function($chtml){\r\n var $modalFooter = $($chtml).find('.modal-footer:first');\r\n var $isOwner = $modalFooter.data('owner') == 1;\r\n var $key = $modalFooter.data('key');\r\n var $hasKey = $key && $key != '';\r\n var $createEditHtml = '';\r\n if($hasKey){\r\n if(!$isOwner){\r\n $createEditHtml = 'Invitation to an event';\r\n }else{\r\n $createEditHtml = 'Edit event';\r\n }\r\n }else{\r\n if($isOwner) {\r\n $createEditHtml = 'Create event';\r\n }\r\n }\r\n $modalTitle.html($createEditHtml);\r\n $modalBody.html($chtml).promise().done(function(){\r\n var $modalForm = $modal.find(\"form\");\r\n var $typeContainer = $modal.find('.event_type_container');\r\n var $typeEventType = $typeContainer.find('select[name=\"typeEventType\"]');\r\n var $oneTimeEventContainer = $modal.find('.event_oneTimeEvent_container');\r\n $oneTimeEventContainer.hide();\r\n var $periodicalEventContainer = $modal.find('.event_periodicalEvent_container');\r\n $periodicalEventContainer.hide();\r\n var $periodContainer = $modal.find('.event_period_container');\r\n $periodContainer.hide();\r\n var $weeklyContainer = $modal.find('.event_weekly_container');\r\n var $weeklyContainerSelection = $weeklyContainer.find('.event_weekly_container_selection');\r\n $weeklyContainerSelection.hide();\r\n $weeklyContainer.hide();\r\n var $monthlyContainer = $modal.find('.event_monthly_container');\r\n var $monthlyContainerSelection = $monthlyContainer.find('.event_monthly_container_selection');\r\n $monthlyContainerSelection.hide();\r\n $monthlyContainer.hide();\r\n var $hoursContainer = $modal.find('.event_hours_container');\r\n var $hoursContainerSelection = $hoursContainer.find('.event_hours_container_selection');\r\n $hoursContainerSelection.hide();\r\n $hoursContainer.hide();\r\n var $notifyContainer = $modal.find('.event_notify_container');\r\n var $notifyContainerSelection = $notifyContainer.find('.event_notify_container_selection');\r\n $notifyContainerSelection.hide();\r\n $notifyContainer.hide();\r\n var $inviteUsersContainer = $modal.find('.event_inviteUsers_container');\r\n $inviteUsersContainer.hide();\r\n var $settingsContainer = $modal.find('.event_settings_container');\r\n $settingsContainer.hide();\r\n var $modalFooter = $modal.find('.modal-footer');\r\n $modalFooter.hide();\r\n $typeEventType.unbind().change(function(){\r\n var $that = $(this);\r\n $oneTimeEventContainer.hide();\r\n $periodicalEventContainer.hide();\r\n $periodContainer.hide();\r\n $weeklyContainer.hide();\r\n $monthlyContainer.hide();\r\n $hoursContainer.hide();\r\n $hoursContainerSelection.hide();\r\n $notifyContainer.hide();\r\n $notifyContainerSelection.hide();\r\n $inviteUsersContainer.hide();\r\n $settingsContainer.hide();\r\n $modalFooter.hide();\r\n $modalForm.find('.invalid-feedback').hide();\r\n $modalForm.find('.error').removeClass('error');\r\n $modalForm.find('.is-invalid').removeClass('is-invalid');\r\n switch($that.val()){\r\n case 'one_time':{\r\n nurseslounge_lounge_calendar.oneTimeEvents($params);\r\n break;\r\n }\r\n case 'periodical':{\r\n nurseslounge_lounge_calendar.periodicalEvents($params);\r\n break;\r\n }\r\n }\r\n });\r\n var $modalDescription =$modalForm.find(\"textarea[name='dataDescription']\");\r\n var $modalDescriptionCharacters =$modalForm.find(\"input[name='dataDescriptionCharacters']\");\r\n $modalDescription.unbind().on('keyup keydown keypress', function(){\r\n var $that = $(this);\r\n var $val = $that.val();\r\n var $allowedCharacters = 200 - $val.length;\r\n $allowedCharacters = $allowedCharacters > 0 ? $allowedCharacters : 0;\r\n if($allowedCharacters <= 0){\r\n $that.val($val.substring(0, 200));\r\n }\r\n $modalDescriptionCharacters.val($allowedCharacters);\r\n });\r\n switch($typeEventType.val()){\r\n case 'one_time':{\r\n nurseslounge_lounge_calendar.oneTimeEvents($params);\r\n break;\r\n }\r\n case 'periodical':{\r\n nurseslounge_lounge_calendar.periodicalEvents($params);\r\n break;\r\n }\r\n }\r\n libs.checkImageLoad($($chtml).find('img'), function(){\r\n $modal.modal('show');\r\n });\r\n });\r\n });\r\n },\r\n oneTimeEvents:function($params){\r\n var $userId = libs.memoryGet('user_id');\r\n var $loungeKey = $params.lounge_key;\r\n var $modal = $(\"#nurseslounge-lounge-calendar-modal\");\r\n var $oneTimeEventContainer = $modal.find('.event_oneTimeEvent_container');\r\n var $oneTimeEventDay = $oneTimeEventContainer.find('.day');\r\n var $oneTimeEventResetDay = $oneTimeEventContainer.find('.reset_day');\r\n var $date = $oneTimeEventDay.data('value') != '' ? moment($oneTimeEventDay.data('value'), 'YYYY-MM-DD HH:mm:ss').format('MM/DD/YYYY') : moment().format('MM/DD/YYYY');\r\n $oneTimeEventDay.val($date).datepicker(\"update\");\r\n $oneTimeEventDay.on('changeDate', function () {\r\n $(this).datepicker('hide');\r\n });\r\n $oneTimeEventResetDay.unbind().click(function(){\r\n $oneTimeEventDay.val($date).datepicker(\"update\");\r\n });\r\n nurseslounge_lounge_calendar.mandatoryEvents();\r\n nurseslounge_lounge_calendar.oneTimeEventsValidator(function($form){\r\n var $params = libs.getObjForm($form);\r\n var $title = $params.dataTitle;\r\n var $description = $params.dataDescription;\r\n var $link = $params.dataLink;\r\n var $type = $params.typeEventType;\r\n var $permanent = 0;\r\n var $from = $params.oneTimeEventDay;\r\n var $to = $params.oneTimeEventDay;\r\n var $period = null;\r\n var $include = null;\r\n var $days = null;\r\n var $allTimeDay = $params.hourAllDayCheckbox == 'on' ? 1 : 0;\r\n var $startAt = $params.hourSelectionFromHour;\r\n var $endAt = $params.hourSelectionToHour;\r\n var $notificationBeforeEvent = $params.notifyBeforeEventCheckbox == 'on' ? 1 : 0;\r\n var $notificationTime = null;\r\n var $notifyNotificationUnitTime = null;\r\n var $inviteUsersCheckbox = $params.inviteUsersCheckbox == 'on' ? 1 : 0;\r\n var $inviteUsersList = $params.inviteUsersList ? JSON.parse($params.inviteUsersList) : [];\r\n var $invitations = [];\r\n var $color = libs.rgb2hex($(\"input[name='settingsColor']\").css('backgroundColor'));\r\n var $available = $params.available == 'on' ? 1 : 0;\r\n if($notificationBeforeEvent == 1){\r\n $notificationTime = $params.notifyNotificationTimes;\r\n $notifyNotificationUnitTime = $params.notifyNotificationUnitTime;\r\n }\r\n if($inviteUsersCheckbox == 1){\r\n $.each($inviteUsersList, function($i, $v){\r\n $invitations.push($v.id);\r\n });\r\n }\r\n var $myCalendar = $(\"#nurseslounge-lounge-calendar\");\r\n var $timeZone = $myCalendar.find(\".time-zone\");\r\n var $area = $timeZone.data('area');\r\n var $event = {\r\n user_id:$userId,\r\n lounge_key:$loungeKey,\r\n area:$area,\r\n title:$title,\r\n description:$description,\r\n link:$link,\r\n type:$type,\r\n permanent:$permanent,\r\n from:$from,\r\n to:$to,\r\n period:$period,\r\n include:$include,\r\n days:$days,\r\n all_time_day:$allTimeDay,\r\n start_at:$startAt,\r\n end_at:$endAt,\r\n notification_time:$notificationTime,\r\n notification_unit_time:$notifyNotificationUnitTime,\r\n color:$color,\r\n available:$available,\r\n invitations:$invitations.join(','),\r\n selected_date:nurseslounge_lounge_calendar.selectedDate.clone().format('DD-MM-YYYY')\r\n };\r\n nurseslounge_lounge_calendar.saveEvent($event);\r\n });\r\n nurseslounge_lounge_calendar.deleteEvent($loungeKey);\r\n $oneTimeEventContainer.show();\r\n },\r\n oneTimeEventsValidator:function(cback){\r\n $.validator.addMethod(\"dateGreaterThanHour\", function($v, $ele, $params) {\r\n var $oneTimeEventDay = $(\"#nurseslounge-lounge-calendar-modal form .event_oneTimeEvent_container input[name='oneTimeEventDay']\").val();\r\n var $date = $oneTimeEventDay+' '+$v;\r\n return $params != false ? moment($date, 'MM/DD/YYYY h:mm A') > moment($params, 'MM/DD/YYYY h:mm A') : true;\r\n },'Date must be greater than {0}.');\r\n $.validator.addMethod(\"dateGreaterThanDay\", function($v, $ele, $params) {\r\n return $params != false ? moment($v, 'MM/DD/YYYY') > $params : true;\r\n },'Date must be greater than {0}.');\r\n var $validator;\r\n try {\r\n $validator = $(\"#nurseslounge-lounge-calendar-modal form\").validate();\r\n $validator.destroy();\r\n }catch (e) {\r\n\r\n }\r\n var $typeEventType = $('#nurseslounge-lounge-calendar-modal form .event_type_container select[name=\"typeEventType\"]');\r\n var $hourAllDayCheckbox = $('#nurseslounge-lounge-calendar-modal form .event_hours_container input[name=\"hourAllDayCheckbox\"]');\r\n var $notifyBeforeEventCheckbox = $('#nurseslounge-lounge-calendar-modal form .event_notify_container input[name=\"notifyBeforeEventCheckbox\"]');\r\n var $inviteUsersCheckbox = $('#nurseslounge-lounge-calendar-modal form .event_inviteUsers_container input[name=\"inviteUsersCheckbox\"]');\r\n $validator = $(\"#nurseslounge-lounge-calendar-modal form\").validate({\r\n onsubmit: true,\r\n debug: true,\r\n ignore: \"*:not(.validate)\",\r\n rules: {\r\n dataTitle: {\r\n required: true\r\n },\r\n dataDescription: {\r\n required: true,\r\n minlength: 1,\r\n maxlength: 200\r\n },\r\n dataLink: {\r\n required: false\r\n },\r\n typeEventType: {\r\n required: true,\r\n },\r\n oneTimeEventDay: {\r\n required: function () {\r\n return $typeEventType.val() == 'one_time';\r\n }\r\n },\r\n hourSelectionFromHour:{\r\n required: function () {\r\n return !$hourAllDayCheckbox.is(':checked');\r\n }\r\n },\r\n hourSelectionToHour:{\r\n required: function () {\r\n return !$hourAllDayCheckbox.is(':checked');\r\n }\r\n },\r\n notifyNotificationTimes:{\r\n required: function () {\r\n return !$notifyBeforeEventCheckbox.is(':checked');\r\n }\r\n },\r\n notifyNotificationUnitTime:{\r\n required: function () {\r\n return !$notifyBeforeEventCheckbox.is(':checked');\r\n }\r\n },\r\n inviteUsersList:{\r\n required: function () {\r\n return $inviteUsersCheckbox.is(':checked');\r\n }\r\n },\r\n },\r\n messages: {\r\n dataTitle: {\r\n required: \"The event title is required\",\r\n },\r\n dataDescription: {\r\n required: \"The event description is required\",\r\n minlength: \"The event description must have at least 1 characters\",\r\n maxlength: \"The event description cannot exceed 200 characters\"\r\n },\r\n dataLink: {\r\n required: \"The event link is not required\",\r\n },\r\n typeEventType: {\r\n required: \"The event type is required\"\r\n },\r\n oneTimeEventDay: {\r\n required: \"The event type day is required\"\r\n },\r\n hourSelectionFromHour: {\r\n required: \"The event from hour is required\"\r\n },\r\n hourSelectionToHour: {\r\n required: \"The event to hour is required\"\r\n },\r\n notifyNotificationTimes:{\r\n required: \"The time prev for notification is required\"\r\n },\r\n notifyNotificationUnitTime: {\r\n required: \"The unit time prev for notification is required\"\r\n },\r\n inviteUsersList: {\r\n required: \"The colleagues list is required\"\r\n }\r\n },\r\n errorPlacement: function($error, $element){\r\n var $ele = $($element);\r\n var $name = $ele.attr(\"name\");\r\n if(!$ele.hasClass('is-invalid')){\r\n $ele.addClass('is-invalid');\r\n }\r\n $(\".\"+$name+\"_validate\").html($($error).text()).show();\r\n },\r\n success: function($error, $element) {\r\n var $ele = $($element);\r\n var $name = $ele.attr(\"name\");\r\n if($ele.hasClass('is-invalid')){\r\n $ele.removeClass('is-invalid');\r\n }\r\n $(\".\"+$name+\"_validate\").html('').hide();\r\n },\r\n submitHandler: function($form) {\r\n cback($form);\r\n return false;\r\n }\r\n });\r\n },\r\n periodicalEvents:function($params){\r\n var $userId = libs.memoryGet('user_id');\r\n var $loungeKey = $params.lounge_key;\r\n var $modal = $(\"#nurseslounge-lounge-calendar-modal\");\r\n var $periodicalEventContainer = $modal.find('.event_periodicalEvent_container');\r\n var $periodicalEventFromDate = $periodicalEventContainer.find('.from_date');\r\n var $periodicalEventFromResetDate = $periodicalEventContainer.find('.reset_from_date');\r\n var $periodicalEventToDate = $periodicalEventContainer.find('.to_date');\r\n var $periodicalEventToResetDate = $periodicalEventContainer.find('.reset_to_date');\r\n var $periodicalEventPermanentCheckbox = $periodicalEventContainer.find('input[name=\"periodicalEventPermanentCheckbox\"]');\r\n var $periodicalEventContainerSelection = $periodicalEventContainer.find('.event_periodicalEvent_container_selection');\r\n var $periodContainer = $modal.find('.event_period_container');\r\n var $periodDate = $periodContainer.find('select[name=\"periodDate\"]');\r\n var $weeklyContainer = $modal.find('.event_weekly_container');\r\n var $monthlyContainer = $modal.find('.event_monthly_container');\r\n $periodicalEventPermanentCheckbox.unbind().change(function(){\r\n var $that = $(this);\r\n if($that.is(':checked')){\r\n $periodicalEventContainerSelection.hide();\r\n }else{\r\n $periodicalEventContainerSelection.show();\r\n }\r\n });\r\n if($periodicalEventPermanentCheckbox.is(':checked')){\r\n $periodicalEventContainerSelection.hide();\r\n }else{\r\n $periodicalEventContainerSelection.show();\r\n }\r\n var $fromDate = $periodicalEventFromDate.data('value') != '' ? moment($periodicalEventFromDate.data('value'), 'YYYY-MM-DD HH:mm:ss').format('MM/DD/YYYY') : moment().format('MM/DD/YYYY');\r\n $periodicalEventFromDate.val($fromDate).datepicker(\"update\");\r\n $periodicalEventFromDate.on('changeDate', function () {\r\n $(this).datepicker('hide');\r\n });\r\n $periodicalEventFromResetDate.unbind().click(function(){\r\n $periodicalEventFromDate.val($fromDate).datepicker(\"update\");\r\n });\r\n var $toDate = $periodicalEventToDate.data('value') != '' ? moment($periodicalEventToDate.data('value'), 'YYYY-MM-DD HH:mm:ss').format('MM/DD/YYYY') : moment().format('MM/DD/YYYY');\r\n $periodicalEventToDate.val($toDate).datepicker(\"update\");\r\n $periodicalEventToDate.on('changeDate', function () {\r\n $(this).datepicker('hide');\r\n });\r\n $periodicalEventToResetDate.unbind().click(function(){\r\n $periodicalEventToDate.val($toDate).datepicker(\"update\");\r\n });\r\n\r\n $periodDate.unbind().change(function(){\r\n var $that = $(this);\r\n $weeklyContainer.hide();\r\n $monthlyContainer.hide();\r\n switch($that.val()){\r\n case 'all':{\r\n $weeklyContainer.hide();\r\n $monthlyContainer.hide();\r\n break;\r\n }\r\n case 'monthly':{\r\n nurseslounge_lounge_calendar.monthlyEvents();\r\n break;\r\n }\r\n case 'weekly':{\r\n nurseslounge_lounge_calendar.weeklyEvents();\r\n break;\r\n }\r\n }\r\n });\r\n switch($periodDate.val()){\r\n case 'all':{\r\n $weeklyContainer.hide();\r\n $monthlyContainer.hide();\r\n break;\r\n }\r\n case 'monthly':{\r\n nurseslounge_lounge_calendar.monthlyEvents();\r\n break;\r\n }\r\n case 'weekly':{\r\n nurseslounge_lounge_calendar.weeklyEvents();\r\n break;\r\n }\r\n }\r\n nurseslounge_lounge_calendar.mandatoryEvents();\r\n nurseslounge_lounge_calendar.periodicalEventsValidator(function($form){\r\n var $params = libs.getObjForm($form);\r\n var $title = $params.dataTitle;\r\n var $description = $params.dataDescription;\r\n var $link = $params.dataLink;\r\n var $type = $params.typeEventType;\r\n var $permanent = $params.periodicalEventPermanentCheckbox == 'on' ? 1 : 0;\r\n var $from = $params.periodicalEventFromDate;\r\n var $to = $params.periodicalEventToDate;\r\n var $period = $params.periodDate;\r\n var $include = null;\r\n var $days = null;\r\n var $allTimeDay = $params.hourAllDayCheckbox == 'on' ? 1 : 0;\r\n var $startAt = $params.hourSelectionFromHour;\r\n var $endAt = $params.hourSelectionToHour;\r\n var $notificationBeforeEvent = $params.notifyBeforeEventCheckbox == 'on' ? 1 : 0;\r\n var $notificationTime = null;\r\n var $notifyNotificationUnitTime = null;\r\n var $inviteUsersCheckbox = $params.inviteUsersCheckbox == 'on' ? 1 : 0;\r\n var $inviteUsersList = $params.inviteUsersList ? JSON.parse($params.inviteUsersList) : [];\r\n var $invitations = [];\r\n var $color = libs.rgb2hex($(\"input[name='settingsColor']\").css('backgroundColor'));\r\n var $available = $params.available == 'on' ? 1 : 0;\r\n switch($period){\r\n case 'weekly':{\r\n var $weeklyDate = $params.weeklyDate;\r\n $days = $params.weeklyDatesSelected;\r\n switch($weeklyDate){\r\n case 'weekly_every':{\r\n $include = 'every';\r\n break;\r\n }\r\n case 'weekly_except':{\r\n $include = 'except';\r\n break;\r\n }\r\n }\r\n break;\r\n }\r\n case 'monthly':{\r\n var $monthlyDate = $params.monthlyDate;\r\n $days = $params.monthlyDatesSelected;\r\n switch($monthlyDate){\r\n case 'monthly_every':{\r\n $include = 'every';\r\n break;\r\n }\r\n case 'monthly_except':{\r\n $include = 'except';\r\n break;\r\n }\r\n }\r\n break;\r\n }\r\n }\r\n if($notificationBeforeEvent == 1){\r\n $notificationTime = $params.notifyNotificationTimes;\r\n $notifyNotificationUnitTime = $params.notifyNotificationUnitTime;\r\n }\r\n if($inviteUsersCheckbox == 1){\r\n $.each($inviteUsersList, function($i, $v){\r\n $invitations.push($v.id);\r\n });\r\n }\r\n var $myCalendar = $(\"#nurseslounge-lounge-calendar\");\r\n var $timeZone = $myCalendar.find(\".time-zone\");\r\n var $area = $timeZone.data('area');\r\n var $event = {\r\n user_id:$userId,\r\n lounge_key:$loungeKey,\r\n area:$area,\r\n title:$title,\r\n description:$description,\r\n link:$link,\r\n type:$type,\r\n permanent:$permanent,\r\n from:$from,\r\n to:$to,\r\n period:$period,\r\n include:$include,\r\n days:$days,\r\n all_time_day:$allTimeDay,\r\n start_at:$startAt,\r\n end_at:$endAt,\r\n notification_time:$notificationTime,\r\n notification_unit_time:$notifyNotificationUnitTime,\r\n color:$color,\r\n available:$available,\r\n invitations:$invitations.join(','),\r\n selected_date:nurseslounge_lounge_calendar.selectedDate.clone().format('DD-MM-YYYY')\r\n };\r\n nurseslounge_lounge_calendar.saveEvent($event);\r\n });\r\n nurseslounge_lounge_calendar.deleteEvent($loungeKey);\r\n $periodicalEventContainer.show();\r\n $periodContainer.show();\r\n },\r\n periodicalEventsValidator:function(cback){\r\n $.validator.addMethod(\"dateGreaterThanHourStart\", function($v, $ele, $params) {\r\n var $periodicalEventFromDate = $(\"#nurseslounge-lounge-calendar-modal form .event_periodicalEvent_container input[name='periodicalEventFromDate']\").val();\r\n var $date = $periodicalEventFromDate+' '+$v;\r\n return $params != false ? moment($date, 'MM/DD/YYYY h:mm A') > moment($params, 'MM/DD/YYYY h:mm A') : true;\r\n },'Date must be greater than {0}.');\r\n $.validator.addMethod(\"dateGreaterThanHourEnd\", function($v, $ele, $params) {\r\n var $periodicalEventPermanentCheckbox = $('#nurseslounge-lounge-calendar-modal form .event_periodicalEvent_container input[name=\"periodicalEventPermanentCheckbox\"]');\r\n var $date;\r\n if($periodicalEventPermanentCheckbox.is(':checked')){\r\n var $periodicalEventFromDate = $(\"#nurseslounge-lounge-calendar-modal form .event_periodicalEvent_container input[name='periodicalEventFromDate']\").val();\r\n $date = $periodicalEventFromDate+' '+$v;\r\n }else{\r\n var $periodicalEventToDate = $(\"#nurseslounge-lounge-calendar-modal form .event_periodicalEvent_container input[name='periodicalEventToDate']\").val();\r\n $date = $periodicalEventToDate+' '+$v;\r\n }\r\n return $params != false ? moment($date, 'MM/DD/YYYY h:mm A') > moment($params, 'MM/DD/YYYY h:mm A') : true;\r\n },'Date must be greater than {0}.');\r\n $.validator.addMethod(\"dateGreaterThanDay\", function($v, $ele, $params) {\r\n return $params;\r\n },'Date must be greater than {0}.');\r\n var $validator;\r\n $.validator.addMethod(\"maxFourteen\", function($v, $ele, $params) {\r\n var $start = $params;\r\n var $end = moment($v, 'MM/DD/YYYY');\r\n var $duration = moment.duration($end.diff($start));\r\n var $days = $duration.asDays();\r\n return $days <= 14 ? true : false;\r\n },'Date must be greater than {0}.');\r\n var $validator;\r\n try {\r\n $validator = $(\"#nurseslounge-lounge-calendar-modal form\").validate();\r\n $validator.destroy();\r\n }catch (e) {\r\n\r\n }\r\n var $typeEventType = $('#nurseslounge-lounge-calendar-modal form .event_type_container select[name=\"typeEventType\"]');\r\n var $hourAllDayCheckbox = $('#nurseslounge-lounge-calendar-modal form .event_hours_container input[name=\"hourAllDayCheckbox\"]');\r\n var $notifyBeforeEventCheckbox = $('#nurseslounge-lounge-calendar-modal form .event_notify_container input[name=\"notifyBeforeEventCheckbox\"]');\r\n var $inviteUsersCheckbox = $('#nurseslounge-lounge-calendar-modal form .event_inviteUsers_container input[name=\"inviteUsersCheckbox\"]');\r\n var $periodicalEventFromDate = $('#nurseslounge-lounge-calendar-modal form .event_periodicalEvent_container input[name=\"periodicalEventFromDate\"]');\r\n var $periodicalEventToDate = $('#nurseslounge-lounge-calendar-modal form .event_periodicalEvent_container input[name=\"periodicalEventToDate\"]');\r\n var $periodicalEventPermanentCheckbox = $('#nurseslounge-lounge-calendar-modal form .event_periodicalEvent_container input[name=\"periodicalEventPermanentCheckbox\"]');\r\n var $periodDate = $('#nurseslounge-lounge-calendar-modal form .event_period_container select[name=\"periodDate\"]');\r\n var $monthlyDatesSelectedArr = [];\r\n var $weeklyDatesSelectedArr = [];\r\n $validator = $(\"#nurseslounge-lounge-calendar-modal form\").validate({\r\n onsubmit: true,\r\n debug: true,\r\n ignore: \"*:not(.validate)\",\r\n rules: {\r\n dataTitle: {\r\n required: true\r\n },\r\n dataDescription: {\r\n required: true,\r\n minlength: 1,\r\n maxlength: 200\r\n },\r\n dataLink: {\r\n required: false\r\n },\r\n typeEventType: {\r\n required: true,\r\n },\r\n periodicalEventFromDate: {\r\n required: function () {\r\n return $typeEventType.val() == 'periodical';\r\n }\r\n },\r\n periodicalEventToDate: {\r\n required: function () {\r\n return $typeEventType.val() == 'periodical';\r\n },\r\n dateGreaterThanDay:function () {\r\n var $nowDay = $periodicalEventFromDate.val();\r\n $nowDay = moment($nowDay, 'MM/DD/YYYY');\r\n $nowDay = $nowDay.subtract(1, 'day');\r\n var $toDate = $periodicalEventToDate.val();\r\n setTimeout(function(){\r\n var $newToDate = $periodicalEventToDate.val();\r\n if($toDate != $newToDate && !$periodicalEventPermanentCheckbox.is(':checked')){\r\n $periodicalEventToDate.blur();\r\n }\r\n },800);\r\n var $toDateMoment = moment($toDate, 'MM/DD/YYYY');\r\n return !$periodicalEventPermanentCheckbox.is(':checked') ? $toDateMoment > $nowDay : false;\r\n },\r\n maxFourteen:function () {\r\n var $nowDay = $periodicalEventFromDate.val();\r\n $nowDay = moment($nowDay, 'MM/DD/YYYY');\r\n return moment($nowDay, 'MM/DD/YYYY');\r\n }\r\n },\r\n monthlyDatesSelected:{\r\n required: function () {\r\n var $monthlyDatesSelected = $('#nurseslounge-lounge-calendar-modal form .event_monthly_container input[name=\"monthlyDatesSelected\"]');\r\n var $monthlyDate = $('#nurseslounge-lounge-calendar-modal form .event_monthly_container select[name=\"monthlyDate\"]');\r\n $monthlyDatesSelectedArr.length = 0;\r\n var $tableDatesSelected = $('#nurseslounge-lounge-calendar-modal form .event_monthly_container_selection_table tr td .dates');\r\n $tableDatesSelected.each(function($i, $v){\r\n $monthlyDatesSelectedArr.push($(this).data('date'));\r\n });\r\n $monthlyDatesSelected.val($monthlyDatesSelectedArr.join(','));\r\n return $periodDate.val() == 'monthly' && $monthlyDate.val() != 'monthly_every_day';\r\n },\r\n },\r\n weeklyDatesSelected:{\r\n required: function () {\r\n var $weeklyDatesSelected = $('#nurseslounge-lounge-calendar-modal form .event_weekly_container input[name=\"weeklyDatesSelected\"]');\r\n var $weeklyDate = $('#nurseslounge-lounge-calendar-modal form .event_weekly_container select[name=\"weeklyDate\"]');\r\n $weeklyDatesSelectedArr.length = 0;\r\n var $tableDatesSelected = $('#nurseslounge-lounge-calendar-modal form .event_weekly_container_selection .weekly_days');\r\n $tableDatesSelected.each(function($i, $v){\r\n var $that = $(this);\r\n if($that.is(':checked') == true){\r\n $weeklyDatesSelectedArr.push($that.data('value'));\r\n }\r\n });\r\n $weeklyDatesSelected.val($weeklyDatesSelectedArr.join(','));\r\n return $periodDate.val() == 'weekly' && $weeklyDate.val() != 'weekly_every_day';\r\n },\r\n },\r\n hourSelectionFromHour:{\r\n required: function () {\r\n return !$hourAllDayCheckbox.is(':checked');\r\n }\r\n },\r\n hourSelectionToHour:{\r\n required: function () {\r\n return !$hourAllDayCheckbox.is(':checked');\r\n },\r\n dateGreaterThanHourEnd:function(){\r\n var $periodicalEventFromDate = $(\"#nurseslounge-lounge-calendar-modal form .event_periodicalEvent_container input[name='periodicalEventFromDate']\").val();\r\n var $hourSelectionFromHour = $(\"#nurseslounge-lounge-calendar-modal form .event_hours_container input[name='hourSelectionFromHour']\").val();\r\n var $date = $periodicalEventFromDate+' '+$hourSelectionFromHour;\r\n return $typeEventType.val() == 'periodical' && !$hourAllDayCheckbox.is(':checked') ? moment($date, 'MM/DD/YYYY h:mm A') : false;\r\n }\r\n },\r\n notifyNotificationTimes:{\r\n required: function () {\r\n return !$notifyBeforeEventCheckbox.is(':checked');\r\n }\r\n },\r\n notifyNotificationUnitTime:{\r\n required: function () {\r\n return !$notifyBeforeEventCheckbox.is(':checked');\r\n }\r\n },\r\n inviteUsersList:{\r\n required: function () {\r\n return $inviteUsersCheckbox.is(':checked');\r\n }\r\n },\r\n },\r\n messages: {\r\n dataTitle: {\r\n required: \"The event title is required\",\r\n },\r\n dataDescription: {\r\n required: \"The event description is required\",\r\n minlength: \"The event description must have at least 1 characters\",\r\n maxlength: \"The event description cannot exceed 200 characters\"\r\n },\r\n dataLink: {\r\n required: \"The event link is not required\",\r\n },\r\n typeEventType: {\r\n required: \"The event type is required\"\r\n },\r\n periodicalEventFromDate: {\r\n required: \"The event from date is required\"\r\n },\r\n periodicalEventToDate: {\r\n required: \"The event to date is required\",\r\n dateGreaterThanDay:\"The event to date must be greater than from date\",\r\n maxFourteen:\"The maximum event length allowed is 14 days.\",\r\n },\r\n monthlyDatesSelected:{\r\n required: \"The event must have at least one day selected of the month\",\r\n },\r\n weeklyDatesSelected:{\r\n required: \"The event must have at least one day selected of the week\",\r\n },\r\n hourSelectionFromHour: {\r\n required: \"The event from hour is required\"\r\n },\r\n hourSelectionToHour: {\r\n required: \"The event to hour is required\",\r\n dateGreaterThanHourEnd:'The event to hour must be greater than from hour'\r\n },\r\n notifyNotificationTimes:{\r\n required: \"The time prev for notification is required\"\r\n },\r\n notifyNotificationUnitTime: {\r\n required: \"The unit time prev for notification is required\"\r\n },\r\n inviteUsersList: {\r\n required: \"The colleagues list is required\"\r\n }\r\n },\r\n errorPlacement: function($error, $element){\r\n var $ele = $($element);\r\n var $name = $ele.attr(\"name\");\r\n if(!$ele.hasClass('is-invalid')){\r\n $ele.addClass('is-invalid');\r\n }\r\n $(\".\"+$name+\"_validate\").html($($error).text()).show();\r\n },\r\n success: function($error, $element) {\r\n var $ele = $($element);\r\n var $name = $ele.attr(\"name\");\r\n if($ele.hasClass('is-invalid')){\r\n $ele.removeClass('is-invalid');\r\n }\r\n $(\".\"+$name+\"_validate\").html('').hide();\r\n },\r\n submitHandler: function($form) {\r\n cback($form);\r\n return false;\r\n }\r\n });\r\n },\r\n monthlyEvents:function(){\r\n var $modal = $(\"#nurseslounge-lounge-calendar-modal\");\r\n var $monthlyContainer = $modal.find('.event_monthly_container');\r\n var $add = $monthlyContainer.find('.add');\r\n var $monthlyDate = $monthlyContainer.find('select[name=\"monthlyDate\"]');\r\n var $monthlyDates = $monthlyContainer.find('select[name=\"monthlyDates\"]');\r\n var $monthlyDatesSelected = $monthlyContainer.find('input[name=\"monthlyDatesSelected\"]');\r\n var $monthlyContainerSelection = $monthlyContainer.find('.event_monthly_container_selection');\r\n var $monthlyContainerSelectionTable = $monthlyContainer.find('.event_monthly_container_selection_table');\r\n var $firstTr = $monthlyContainerSelectionTable.children().first();\r\n var $everyTxt = 'Every day(s)Delete';\r\n var $exceptTxt = 'Except day(s)Delete';\r\n $add.unbind().click(function(){\r\n var $monthlyDatesVal = $monthlyDates.val();\r\n var $chtml = '';\r\n $chtml += '' +\r\n '' +\r\n ' '+$monthlyDatesVal+'' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n '';\r\n $monthlyContainerSelectionTable.children().first().after($chtml);\r\n });\r\n $monthlyDatesSelected = $monthlyDatesSelected.val().split(',');\r\n $.each($monthlyDatesSelected, function($i, $v){\r\n var $chtml = '';\r\n $chtml += '' +\r\n '' +\r\n ' '+$v+'' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n '';\r\n $monthlyContainerSelectionTable.children().first().after($chtml);\r\n });\r\n $monthlyDate.unbind().change(function(){\r\n var $that = $(this);\r\n $monthlyContainerSelection.hide();\r\n if($that.val() == 'monthly_every_day'){\r\n $monthlyContainerSelectionTable.html($monthlyContainerSelectionTable.children().first());\r\n $monthlyContainerSelection.hide();\r\n }else{\r\n if($that.val() == 'monthly_every') {\r\n $firstTr.html($everyTxt);\r\n }else{\r\n $firstTr.html($exceptTxt);\r\n }\r\n $monthlyContainerSelection.show();\r\n }\r\n });\r\n if($monthlyDate.val() == 'monthly_every_day'){\r\n $monthlyContainerSelectionTable.html($monthlyContainerSelectionTable.children().first());\r\n $monthlyContainerSelection.hide();\r\n }else{\r\n if($monthlyDate.val() == 'monthly_every') {\r\n $firstTr.html($everyTxt);\r\n }else{\r\n $firstTr.html($exceptTxt);\r\n }\r\n $monthlyContainerSelection.show();\r\n }\r\n $monthlyContainer.show();\r\n },\r\n weeklyEvents:function(){\r\n var $modal = $(\"#nurseslounge-lounge-calendar-modal\");\r\n var $weeklyContainer = $modal.find('.event_weekly_container');\r\n var $weeklyDate = $modal.find('select[name=\"weeklyDate\"]');\r\n var $weeklyDays = $modal.find('.weekly_days');\r\n var $weeklyContainerSelection = $weeklyContainer.find('.event_weekly_container_selection');\r\n $weeklyDate.unbind().change(function(){\r\n var $that = $(this);\r\n if($that.val() == 'weekly_every_day'){\r\n $weeklyDays.prop('checked', false);\r\n $weeklyContainerSelection.hide();\r\n }else{\r\n $weeklyContainerSelection.show();\r\n }\r\n });\r\n if($weeklyDate.val() == 'weekly_every_day'){\r\n $weeklyDays.prop('checked', false);\r\n $weeklyContainerSelection.hide();\r\n }else{\r\n $weeklyContainerSelection.show();\r\n }\r\n $weeklyContainer.show();\r\n },\r\n mandatoryEvents:function(){\r\n var $now = moment();\r\n var $modal = $(\"#nurseslounge-lounge-calendar-modal\");\r\n var $hoursContainer = $modal.find('.event_hours_container');\r\n var $hoursContainerSelection = $hoursContainer.find('.event_hours_container_selection');\r\n var $hourAllDayCheckbox = $modal.find('input[name=\"hourAllDayCheckbox\"]');\r\n var $hoursContainerFromHour = $(\"#event_hours_container_selection_from_hour\");\r\n var $hoursContainerToHour = $(\"#event_hours_container_selection_to_hour\");\r\n var $notifyContainer = $modal.find('.event_notify_container');\r\n var $notifyContainerSelection = $notifyContainer.find('.event_notify_container_selection');\r\n var $notifyBeforeEventCheckbox = $notifyContainer.find('input[name=\"notifyBeforeEventCheckbox\"]');\r\n var $inviteUsersContainer = $modal.find('.event_inviteUsers_container');\r\n var $inviteUsersContainerSelection = $inviteUsersContainer.find('.event_inviteUsers_container_selection');\r\n var $inviteUsersCheckbox = $inviteUsersContainer.find('input[name=\"inviteUsersCheckbox\"]');\r\n var $inviteUsersList = $inviteUsersContainer.find('input[name=\"inviteUsersList\"]');\r\n var $settingsContainer = $modal.find('.event_settings_container');\r\n var $settingsColor = $settingsContainer.find('input[name=\"settingsColor\"]');\r\n var $modalFooter = $modal.find('.modal-footer');\r\n\r\n $hourAllDayCheckbox.unbind().change(function(){\r\n var $that = $(this);\r\n if($that.is(':checked')){\r\n $hoursContainerSelection.hide();\r\n }else{\r\n var $fromHour = $hoursContainerFromHour.data('value') != '' ? moment($hoursContainerFromHour.data('value'), 'YYYY-MM-DD HH:mm:ss') : $now.clone();\r\n $hoursContainerFromHour.datetimepicker({\r\n defaultDate: $fromHour,\r\n format: 'LT',\r\n });\r\n var $toHour = $hoursContainerFromHour.data('value') != '' ? moment($hoursContainerToHour.data('value'), 'YYYY-MM-DD HH:mm:ss') : $now.clone().add(1,'hour');\r\n $hoursContainerToHour.datetimepicker({\r\n defaultDate: $toHour,\r\n format: 'LT'\r\n });\r\n $hoursContainerSelection.show();\r\n }\r\n });\r\n if($hourAllDayCheckbox.is(':checked')){\r\n $hoursContainerSelection.hide();\r\n }else{\r\n var $fromHour = $hoursContainerFromHour.data('value') != '' ? moment($hoursContainerFromHour.data('value'), 'YYYY-MM-DD HH:mm:ss') : $now.clone();\r\n $hoursContainerFromHour.datetimepicker({\r\n defaultDate: $fromHour,\r\n format: 'LT',\r\n });\r\n var $toHour = $hoursContainerFromHour.data('value') != '' ? moment($hoursContainerToHour.data('value'), 'YYYY-MM-DD HH:mm:ss') : $now.clone().add(1,'hour');\r\n $hoursContainerToHour.datetimepicker({\r\n defaultDate: $toHour,\r\n format: 'LT'\r\n });\r\n $hoursContainerSelection.show();\r\n }\r\n\r\n $notifyBeforeEventCheckbox.unbind().change(function(){\r\n var $that = $(this);\r\n if($that.is(':checked')){\r\n $notifyContainerSelection.show();\r\n }else{\r\n $notifyContainerSelection.hide();\r\n }\r\n });\r\n if($notifyBeforeEventCheckbox.is(':checked')){\r\n $notifyContainerSelection.show();\r\n }else{\r\n $notifyContainerSelection.hide();\r\n }\r\n\r\n $inviteUsersCheckbox.unbind().change(function(){\r\n var $that = $(this);\r\n if($that.is(':checked')){\r\n $inviteUsersContainerSelection.show();\r\n }else{\r\n $inviteUsersContainerSelection.hide();\r\n }\r\n });\r\n if($inviteUsersCheckbox.is(':checked')){\r\n $inviteUsersContainerSelection.show();\r\n }else{\r\n $inviteUsersContainerSelection.hide();\r\n }\r\n nurseslounge_lounge_calendar.colleaguesListAutocomplete($inviteUsersList);\r\n\r\n $settingsColor.paletteColorPicker({\r\n colors: [\r\n \"#00FF00\",\r\n \"#B03060\",\r\n \"#A020F0\",\r\n \"#C0C0C0\",\r\n \"#00FF00\",\r\n \"#FF00FF\",\r\n \"#00FFFF\",\r\n \"#808080\",\r\n \"#008000\",\r\n \"#7F0000\",\r\n \"#7F007F\",\r\n ],\r\n set_background: true,\r\n position: 'downside'\r\n });\r\n\r\n if($settingsColor.val() != ''){\r\n var $settingsColorBackground = $settingsContainer.find('div[data-target=\"settingsColor\"]');\r\n $settingsColorBackground.css('backgroundColor', $settingsColor.val());\r\n }\r\n\r\n $hoursContainer.show();\r\n $notifyContainer.show();\r\n $inviteUsersContainer.show();\r\n $settingsContainer.show();\r\n $modalFooter.show();\r\n },\r\n colleaguesListAutocomplete:function($element){\r\n if($element.length == 0){\r\n return false;\r\n }\r\n var $autocompleteBinding;\r\n var $addAllSuggestionsElm;\r\n try{\r\n var $colleaguesListAutocomplete = libs.memoryGet('lounge_calendar_colleagues_list_autocomplete');\r\n $colleaguesListAutocomplete.destroy();\r\n }catch (e) {\r\n\r\n }\r\n var $tagify = new Tagify($element[0], {\r\n tagTextProp: 'name',\r\n enforceWhitelist: true,\r\n skipInvalid: true,\r\n dropdown: {\r\n closeOnSelect: false,\r\n enabled: 0,\r\n classname: 'users-list',\r\n searchKeys: ['long_name', 'email']\r\n },\r\n whitelist: [],\r\n templates: {\r\n tag: function($tagData){\r\n return \"\" +\r\n \"\" +\r\n \"
    \" +\r\n \"
    \" +\r\n \" \" +\r\n \"
    \" +\r\n \" \"+$tagData.long_name+\"\" +\r\n \"
    \" +\r\n \"
    \";\r\n },\r\n dropdownItem: function($tagData){\r\n return \"
    \" +\r\n $tagData.profile_image_root_friend ?\r\n \"
    \" +\r\n \" $lastWeekOfTheMonth){\r\n $lastWeekOfTheMonth = $weeksInYear;\r\n $lastWeekOfTheMonth = $lastWeekOfTheMonth+1;\r\n $lessYear = 1;\r\n }\r\n for(var $w = $firstWeekOfTheMonth; $w<=($lastWeekOfTheMonth) ; $w++){\r\n var $startOfWeek = $momentDate.clone().week($w).startOf('week');\r\n var $days = [];\r\n for(var $d=0;$d<7;$d++){\r\n var $date = $startOfWeek.clone().subtract($lessYear, 'year').add($d, 'day');\r\n var $day = $date.format('DD');\r\n $day = libs.pad('00',$day,'l');\r\n var $properties = $data && $data.data && $data.data.weeks && $data.data.weeks[$w] && $data.data.weeks[$w][$day] ?\r\n $data.data.weeks[$w][$day] : [];\r\n $days.push([$day, $properties, $date]);\r\n }\r\n $weeks.push([$w, $days]);\r\n }\r\n return $weeks;\r\n },\r\n createCalendarMonth:function($momentDate, $data) {\r\n var $userId = libs.memoryGet('user_id');\r\n var $loungeKey = $data.data.lounge_key;\r\n var $weeks = nurseslounge_lounge_calendar.getWeeks($momentDate, $data);\r\n var $month = $momentDate.clone().format('MM');\r\n var $myCalendar = $(\"#nurseslounge-lounge-calendar\");\r\n var $viewMonth = $myCalendar.find(\".view-month\");\r\n var $viewWeek = $myCalendar.find(\".view-week\");\r\n $viewWeek.hide();\r\n var $viewDay = $myCalendar.find(\".view-day\");\r\n $viewDay.hide();\r\n var $viewList = $myCalendar.find(\".view-list\");\r\n $viewList.hide();\r\n var $viewMonthThead = $viewMonth.find('.view-month-thead');\r\n var $viewMonthTbody = $viewMonth.find('.view-month-tbody');\r\n var $viewMonthTfoot = $viewMonth.find('.view-month-tfoot');\r\n var $weeksDaysMin = moment.weekdaysMin();\r\n var $chtml = '';\r\n $chtml += '';\r\n $.each($weeksDaysMin, function($i, $v){\r\n $chtml += ''+$v+'';\r\n });\r\n $chtml += '';\r\n $viewMonthThead.html($chtml);\r\n $chtml = '';\r\n var $titleContent = [];\r\n var $titleEventContent = [];\r\n //TODO::\r\n $.each($weeks, function($i, $v){\r\n var $w = $v[0] + 1;\r\n var $week = $v[1];\r\n $chtml += '' +\r\n '';\r\n $.each($week, function($i, $v) {\r\n var $day = $v[0];\r\n var $properties = $v[1];\r\n var $date = $v[2];\r\n var $bgSecondary = $date.format('MM') == $month ? '' : 'bg-secondary';\r\n var $textLight = $date.format('MM') == $month ? '' : 'text-light';\r\n var $isToday = $date.format('MM-DD') == moment().format('MM-DD') ? 'month-today': '';\r\n $chtml += '' +\r\n '' +\r\n ' '+$day+'' +\r\n '
    ';\r\n if($properties.eventsCount > 0){\r\n var $toolTipHtml = '' +\r\n ' ' +\r\n ' ' +\r\n ' Event' +\r\n ' Title' +\r\n ' Start At' +\r\n ' End At' +\r\n ' ';\r\n ' ';\r\n $.each($properties.events, function($i, $v){\r\n var $title = $v.title.length <= 15 ? $v.title : $v.title.substring(0, 15) + '...';\r\n var $startAt = moment($v.start_at, 'YYYY-MM-DD HH:mm:ss').format('h:mm A');\r\n var $endAt = moment($v.end_at, 'YYYY-MM-DD HH:mm:ss').format('h:mm A');\r\n if($v.period == 'consecutive' && $v.periodRanges.length > 0){\r\n $startAt = $v.periodRanges[$w][$day] ? moment($v.periodRanges[$w][$day].from_date.trace.date.date, 'YYYY-MM-DD HH:mm:ss').format('h:mm A') : $startAt;\r\n $endAt = $v.periodRanges[$w][$day] ? moment($v.periodRanges[$w][$day].to_date.trace.date.date, 'YYYY-MM-DD HH:mm:ss').format('h:mm A') : $endAt;\r\n }\r\n $toolTipHtml += '' +\r\n '' +\r\n ' ' +\r\n ' '+($i+1)+'' +\r\n ' '+$title+'' +\r\n ' '+$startAt+'' +\r\n ' '+$endAt+'' +\r\n ' ' +\r\n '';\r\n });\r\n $toolTipHtml += '';\r\n $toolTipHtml = $toolTipHtml.replace(/\"/g, \"\\\\'\");\r\n $titleContent.push([$w+'_'+$day, $toolTipHtml]);\r\n $chtml += '' +\r\n '
    events '+$properties.eventsCount+'
    ' +\r\n '
    ';\r\n\r\n $.each($properties.events, function($i, $v){\r\n var $toolTipEventHtml = '';\r\n var $key = $v.key;\r\n var $color = $v.color;\r\n $toolTipEventHtml+= nurseslounge_lounge_calendar.tableDescription($v);\r\n //$toolTipEventHtml = $toolTipEventHtml.replace(/\"/g, \"\\\\'\");\r\n $titleEventContent.push([$key, $toolTipEventHtml, $color]);\r\n $chtml += '' +\r\n '
    ';\r\n });\r\n $chtml += '' +\r\n '
    ';\r\n }\r\n $chtml += '' +\r\n '
    '+\r\n '';\r\n });\r\n $chtml += '' +\r\n '';\r\n });\r\n $viewMonthTbody.html($chtml).promise().done(function(){\r\n var $clickBinding;\r\n var $holdBinding;\r\n var $template = '' +\r\n '
    ' +\r\n '
    ' +\r\n '
    ';\r\n if(!libs.isMobile()){\r\n $viewMonthTbody.find('.with-tooltip-month-events').each(function () {\r\n var $that = $(this);\r\n $that.unbind();\r\n $that.tooltip({\r\n html: true,\r\n title:function(){\r\n var $wd = $(this).data('wd');\r\n var $text = '';\r\n $.each($titleContent, function($i, $v){\r\n if($wd == $v[0]){\r\n $text = $v[1];\r\n return false;\r\n }\r\n });\r\n return $text;\r\n },\r\n sanitize:false,\r\n trigger: 'hover',\r\n template:$template,\r\n placement:'top'\r\n });\r\n $that.click(function($e){\r\n clearTimeout($clickBinding);\r\n });\r\n });\r\n }\r\n $template = '' +\r\n '
    ' +\r\n '
    ' +\r\n '
    ';\r\n if(!libs.isMobile()){\r\n $viewMonthTbody.find('.with-tooltip-month-event').each(function () {\r\n var $that = $(this);\r\n $that.unbind();\r\n $that.tooltip({\r\n html: true,\r\n title:function(){\r\n var $key = $(this).data('key');\r\n var $text = '';\r\n var $color = '';\r\n $.each($titleEventContent, function($i, $v){\r\n if($key == $v[0]){\r\n $text = $v[1];\r\n $color = $v[2];\r\n return false;\r\n }\r\n });\r\n setTimeout(function(){\r\n $(\".tooltip-month-event .tooltip-inner .event-info-table .event-color\").css('color', $color+' !important');\r\n }, 1);\r\n return $text;\r\n },\r\n offset:0,\r\n sanitize:false,\r\n trigger: 'hover',\r\n template:$template,\r\n placement:'auto'\r\n });\r\n $that.click(function($e){\r\n clearTimeout($clickBinding);\r\n var $key = $that.data('key');\r\n nurseslounge_lounge_calendar.getEventModal({key:$key, user_id: $userId, lounge_key:$loungeKey});\r\n });\r\n });\r\n }else{\r\n $viewMonthTbody.find('.with-tooltip-month-event').each(function(){\r\n var $key, $keyHelper;\r\n var $that = $(this);\r\n $that.unbind().on('mousedown touchstart', function($e){\r\n $key = $that.data('key');\r\n }).on('mouseup touchend', function ($e) {\r\n $keyHelper = $that.data('key');\r\n nurseslounge_lounge_calendar.getEventModal({key:$key, user_id: $userId, lounge_key:$loungeKey});\r\n });\r\n });\r\n }\r\n //Add new event from the calendar month\r\n if(!libs.isMobile()) {\r\n var $from = '';\r\n var $to = '';\r\n var $allTimeDay = 1;\r\n var $available = 1;\r\n var $selection = false;\r\n $viewMonthTbody.find('tr td').unbind().on('mousedown touchstart', function ($e) {\r\n $e.stopPropagation();\r\n $e.preventDefault();\r\n var $that = $(this);\r\n $from = $that.data('date');\r\n $selection = true;\r\n $that.addClass('month-focus-selection');\r\n /*\r\n $holdBinding = setTimeout(function () {\r\n clearTimeout($clickBinding);\r\n nurseslounge_lounge_calendar.switchCalendarTo('week', $from);\r\n }, 800);\r\n */\r\n }).on('mousemove touchmove', function ($e) {\r\n $e.stopPropagation();\r\n $e.preventDefault();\r\n var $that = $(this);\r\n $to = $that.data('date');\r\n if ($selection && $to != undefined) {\r\n $viewMonthTbody.find('tr').each(function () {\r\n var $thatTR = $(this);\r\n $thatTR.find('td').each(function () {\r\n var $thatTD = $(this);\r\n if (\r\n moment($from, 'YYYY-MM-DD HH:mm:ss') <= moment($thatTD.data('date'), 'YYYY-MM-DD HH:mm:ss') &&\r\n moment($to, 'YYYY-MM-DD HH:mm:ss') >= moment($thatTD.data('date'), 'YYYY-MM-DD HH:mm:ss')) {\r\n $thatTD.addClass('month-focus-selection');\r\n } else {\r\n $thatTD.removeClass('month-focus-selection');\r\n }\r\n });\r\n });\r\n }\r\n }).on('mouseup touchend', function ($e) {\r\n $e.stopPropagation();\r\n $e.preventDefault();\r\n var $that = $(this);\r\n $to = $that.data('date');\r\n if ($selection) {\r\n $viewMonthTbody.find('.month-focus-selection').removeClass('month-focus-selection');\r\n $selection = false;\r\n $clickBinding = setTimeout(function () {\r\n nurseslounge_lounge_calendar.getEventModal({\r\n user_id: $userId,\r\n lounge_key:$loungeKey,\r\n type: $from == $to ? 'one_time' : 'periodical',\r\n period: $from == $to ? 'consecutive' : 'no_consecutive',\r\n from: $from,\r\n to: $to,\r\n all_time_day: $allTimeDay,\r\n start_at: '',\r\n end_at: '',\r\n available: $available\r\n });\r\n }, 800);\r\n }\r\n //clearTimeout($holdBinding);\r\n });\r\n }else{\r\n /*\r\n $viewMonthTbody.find('tr td').unbind().on('mousedown touchstart', function ($e) {\r\n $e.stopPropagation();\r\n $e.preventDefault();\r\n var $that = $(this);\r\n $from = $that.data('date');\r\n $holdBinding = setTimeout(function () {\r\n nurseslounge_lounge_calendar.switchCalendarTo('week', $from);\r\n $viewMonthTbody.find('.with-tooltip-month-event').unbind('mouseup touchend');\r\n }, 800);\r\n }).on('mouseup touchend', function ($e) {\r\n clearTimeout($holdBinding);\r\n });\r\n */\r\n }\r\n });\r\n $viewMonth.show();\r\n },\r\n createCalendarWeek:function($momentDate, $data){\r\n var $userId = libs.memoryGet('user_id');\r\n var $loungeKey = $data.data.lounge_key;\r\n var $weeks = nurseslounge_lounge_calendar.getWeeks($momentDate, $data);\r\n var $week = $momentDate.clone().week();\r\n var $day = $momentDate.clone().format('DD');\r\n $day = libs.pad('00',$day,'l');\r\n var $currentWeek = $weeks.filter(function($v){\r\n return $v[0] == $week;\r\n })[0];\r\n var $currentDay = $currentWeek[1].filter(function($v){\r\n return $v[0] == $day;\r\n })[0];\r\n var $myCalendar = $(\"#nurseslounge-lounge-calendar\");\r\n var $viewMonth = $myCalendar.find(\".view-month\");\r\n $viewMonth.hide();\r\n var $viewWeek = $myCalendar.find(\".view-week\");\r\n var $viewDay = $myCalendar.find(\".view-day\");\r\n $viewDay.hide();\r\n var $viewList = $myCalendar.find(\".view-list\");\r\n $viewList.hide();\r\n var $viewWeekThead = $viewWeek.find('.view-week-thead');\r\n var $viewWeekTbody = $viewWeek.find('.view-week-tbody');\r\n var $weeksDaysMin = moment.weekdaysMin();\r\n $weeksDaysMin.unshift('         ');\r\n var $chtml = '';\r\n $chtml += '';\r\n var $titleContent = [];\r\n var $titleEventContent = [];\r\n var $clickBinding;\r\n var $holdBinding;\r\n $.each($weeksDaysMin, function($i, $v){\r\n var $content = $v;\r\n var $properties = $i != 0 ? $currentWeek[1][$i - 1][1] : null;\r\n if($properties){\r\n var $w = $properties.trace.week.W;\r\n var $day = $properties.trace.day.d;\r\n var $toolTipHtml = '' +\r\n '' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ';\r\n ' ';\r\n $.each($properties.events, function($i, $v){\r\n var $title = $v.title.length <= 15 ? $v.title : $v.title.substring(0, 15) + '...';\r\n var $startAt = moment($v.start_at, 'YYYY-MM-DD HH:mm:ss').format('h:mm A');\r\n var $endAt = moment($v.end_at, 'YYYY-MM-DD HH:mm:ss').format('h:mm A');\r\n if($v.period == 'consecutive' && $v.periodRanges.length > 0){\r\n $startAt = $v.periodRanges[$w][$day] ? moment($v.periodRanges[$w][$day].from_date.trace.date.date, 'YYYY-MM-DD HH:mm:ss').format('h:mm A') : $startAt;\r\n $endAt = $v.periodRanges[$w][$day] ? moment($v.periodRanges[$w][$day].to_date.trace.date.date, 'YYYY-MM-DD HH:mm:ss').format('h:mm A') : $endAt;\r\n }\r\n $toolTipHtml += '' +\r\n '' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n '';\r\n });\r\n $toolTipHtml += '
    EventTitleStart AtEnd At
    '+($i+1)+''+$title+''+$startAt+''+$endAt+'
    ';\r\n $toolTipHtml = $toolTipHtml.replace(/\"/g, \"\\\\'\");\r\n $titleContent.push([$w+'_'+$day, $toolTipHtml]);\r\n }\r\n $chtml += '' +\r\n '' +\r\n '
    '+$content+'
    ';\r\n if($properties && $properties.eventsCount > 0) {\r\n $chtml += '
    events '+$properties.eventsCount+'
    ';\r\n }\r\n $chtml += '' +\r\n '';\r\n });\r\n $chtml += '';\r\n var $before = false;\r\n $.each($weeksDaysMin, function($i, $v){\r\n var $content = $i != 0 ? $currentWeek[1][$i - 1][0] : $v;\r\n var $class = 'before';\r\n if($before){\r\n $class = 'after';\r\n }\r\n $chtml += '' +\r\n '' +\r\n ' '+$content+'' +\r\n '';\r\n if($currentDay[0] == $content){\r\n $before = true;\r\n }\r\n });\r\n $chtml += '';\r\n $viewWeekThead.html($chtml).promise().done(function(){\r\n var $template = '' +\r\n '
    ' +\r\n '
    ' +\r\n '
    ';\r\n if(!libs.isMobile()){\r\n $viewWeekThead.find('.with-tooltip-week-events').each(function () {\r\n var $that = $(this);\r\n $that.unbind();\r\n $that.tooltip({\r\n html: true,\r\n title:function(){\r\n var $wd = $(this).data('wd');\r\n var $text = '';\r\n $.each($titleContent, function($i, $v){\r\n if($wd == $v[0]){\r\n $text = $v[1];\r\n return false;\r\n }\r\n });\r\n return $text;\r\n },\r\n sanitize:false,\r\n trigger: 'hover',\r\n template:$template,\r\n placement:'bottom'\r\n });\r\n $that.click(function($e){\r\n clearTimeout($clickBinding);\r\n });\r\n });\r\n }\r\n });\r\n $chtml = '';\r\n for(var $halfHour = 0; $halfHour < 48; $halfHour++){\r\n var $hours = Math.floor($halfHour/2);\r\n var $min = (($halfHour+1)%2) > 0 ? '00' : '30';\r\n var $time = moment($hours + ' ' +$min, 'HH mm');\r\n $chtml += '' +\r\n '' +\r\n ' ' +\r\n '
    ' +\r\n $time.clone().format('hh:mm a') +\r\n '
    ' +\r\n ' ';\r\n\r\n $.each($currentWeek[1], function($i, $v){\r\n var $now = moment();\r\n var $properties = $v[1];\r\n var $date = $v[2];\r\n var $dateHtml = $hours+' '+$min+' '+$date.format('DD MM YYYY');\r\n var $startOfDay = moment('00 00 00 '+$date.format('DD MM YYYY'), 'HH mm ss DD MM YYYY');\r\n var $endOfDay = moment('23 59 59 '+$date.format('DD MM YYYY'), 'HH mm ss DD MM YYYY');\r\n var $from = moment($dateHtml, 'HH mm DD MM YYYY');\r\n var $to = $from.clone().add(30, 'minutes');\r\n var $dayRange = moment().range($startOfDay, $endOfDay);\r\n var $isToday = $dayRange.contains($now) ? 'week-today': '';\r\n var $timeRange = moment().range($from, $to);\r\n var $isNow = $timeRange.contains($now) ? 'active': '';\r\n var $diffInMinutes = $now.diff($from, 'minutes');\r\n var $top = (parseInt($diffInMinutes)*2);\r\n $chtml += '' +\r\n ' '+\r\n '
    ';\r\n if($properties.eventsCount > 0){\r\n $.each($properties.events, function($i, $v){\r\n var $toolTipEventHtml = '';\r\n var $key = $v.key;\r\n var $color = $v.color;\r\n $toolTipEventHtml+= nurseslounge_lounge_calendar.tableDescription($v);\r\n //$toolTipEventHtml = $toolTipEventHtml.replace(/\"/g, \"\\\\'\");\r\n $titleEventContent.push([$key, $toolTipEventHtml, $color]);\r\n var $w = $properties.trace.week.W;\r\n var $day = $properties.trace.day.d;\r\n var $startAt = moment($v.start_at, 'YYYY-MM-DD HH:mm:ss');\r\n var $endAt = moment($v.end_at, 'YYYY-MM-DD HH:mm:ss');\r\n if($v.type == 'periodical'){\r\n if($v.period != 'consecutive' && $v.periodRanges.length > 0){\r\n $startAt = $v.periodRanges[$w][$day] ? moment($v.periodRanges[$w][$day].from_date.trace.date.date, 'YYYY-MM-DD HH:mm:ss') : $startAt;\r\n $endAt = $v.periodRanges[$w][$day] ? moment($v.periodRanges[$w][$day].to_date.trace.date.date, 'YYYY-MM-DD HH:mm:ss') : $endAt;\r\n }\r\n }\r\n var $range = moment().range($startAt, $endAt);\r\n if($range.contains($from)) {\r\n $chtml += '' +\r\n '
    ';\r\n }\r\n });\r\n }\r\n $chtml += '' +\r\n ' ';\r\n\r\n });\r\n $chtml += '' +\r\n '';\r\n }\r\n $viewWeekTbody.html($chtml).promise().done(function(){\r\n var $template = '' +\r\n '
    ' +\r\n '
    ' +\r\n '
    ';\r\n if(!libs.isMobile()){\r\n $viewWeekTbody.find('.with-tooltip-week-event').each(function () {\r\n var $that = $(this);\r\n $that.unbind();\r\n $that.tooltip({\r\n html: true,\r\n title:function(){\r\n var $key = $(this).data('key');\r\n var $text = '';\r\n var $color = '';\r\n $.each($titleEventContent, function($i, $v){\r\n if($key == $v[0]){\r\n $text = $v[1];\r\n $color = $v[2];\r\n return false;\r\n }\r\n });\r\n setTimeout(function(){\r\n $(\".tooltip-month-event .tooltip-inner .event-info-table .event-color\").css('color', $color+' !important');\r\n }, 1);\r\n return $text;\r\n },\r\n offset:0,\r\n sanitize:false,\r\n trigger: 'hover',\r\n template:$template,\r\n placement:'auto'\r\n });\r\n $that.click(function($e){\r\n clearTimeout($clickBinding);\r\n var $key = $that.data('key');\r\n nurseslounge_lounge_calendar.getEventModal({key:$key, user_id: $userId, lounge_key:$loungeKey});\r\n });\r\n });\r\n }else{\r\n $viewWeekTbody.find('.with-tooltip-week-event').each(function () {\r\n var $key, $keyHelper;\r\n var $that = $(this);\r\n $that.unbind().on('mousedown touchstart', function($e){\r\n $key = $that.data('key');\r\n }).on('mouseup touchend', function ($e) {\r\n $keyHelper = $that.data('key');\r\n nurseslounge_lounge_calendar.getEventModal({key:$key, user_id: $userId, lounge_key:$loungeKey});\r\n });\r\n });\r\n }\r\n //Add new event from the calendar week\r\n if(!libs.isMobile()) {\r\n var $from = '';\r\n var $to = '';\r\n var $available = 1;\r\n var $selection = false;\r\n var $dayHelper = [];\r\n var $senseY;\r\n var $senseX;\r\n var $sense;\r\n $viewWeekTbody.find('tr td').unbind().on('mousedown touchstart', function($e){\r\n $e.stopPropagation();\r\n $e.preventDefault();\r\n var $that = $(this);\r\n $dayHelper.length = 0;\r\n $from = $that.data('from');\r\n $to = $that.data('to');\r\n if($to != undefined) {\r\n $that.addClass('week-focus-selection');\r\n $dayHelper.push(moment($that.data('to'), 'YYYY-MM-DD HH:mm:ss'));\r\n $selection = true;\r\n $senseY = true;\r\n $senseX = true;\r\n }\r\n /*\r\n $holdBinding = setTimeout(function(){\r\n clearTimeout($clickBinding);\r\n nurseslounge_lounge_calendar.switchCalendarTo('day', $from);\r\n }, 800);\r\n */\r\n }).on('mousemove touchmove', function($e){\r\n $e.stopPropagation();\r\n $e.preventDefault();\r\n var $that = $(this);\r\n $to = $that.data('to');\r\n if($selection && $to != undefined){\r\n if($dayHelper.length >= 2){\r\n var $currentDay = $dayHelper[0].format('DD');\r\n var $toDay = moment($to, 'YYYY-MM-DD HH:mm:ss').format('DD');\r\n var $currentHour = $dayHelper[0].format('HH:mm:ss');\r\n var $toHour = moment($to, 'YYYY-MM-DD HH:mm:ss').format('HH:mm:ss');\r\n $sense = $dayHelper[0].format('DD') == $dayHelper[1].format('DD') ? 'y' : 'x';\r\n if($sense == 'y' && $senseY){\r\n $senseX = false;\r\n if(\r\n $currentDay == $toDay &&\r\n moment($currentHour, 'HH:mm:ss')\r\n <=\r\n moment($toHour, 'HH:mm:ss')\r\n ){\r\n $that.addClass('week-focus-selection');\r\n }\r\n $viewWeekTbody.find('.week-focus-selection').each(function(){\r\n var $toHourHelper = moment($(this).data('to'), 'YYYY-MM-DD HH:mm:ss').format('HH:mm:ss');\r\n if(\r\n moment($toHour, 'HH:mm:ss')\r\n <\r\n moment($toHourHelper, 'HH:mm:ss')\r\n ){\r\n $that.removeClass('week-focus-selection');\r\n }\r\n });\r\n }\r\n if($sense == 'x' && $senseX){\r\n $senseY = false;\r\n if(\r\n $currentHour == $toHour &&\r\n (parseInt($dayHelper[0].format('DDD')) * parseInt($dayHelper[0].format('YYYY')))\r\n <=\r\n (parseInt(moment($to, 'YYYY-MM-DD HH:mm:ss').format('DDD')) * parseInt(moment($to, 'YYYY-MM-DD HH:mm:ss').format('YYYY')))\r\n ){\r\n $that.addClass('week-focus-selection');\r\n }\r\n $viewWeekTbody.find('.week-focus-selection').each(function(){\r\n var $toDayHelper = parseInt(moment($(this).data('to'), 'YYYY-MM-DD HH:mm:ss').format('DDD')) * parseInt(moment($(this).data('to'), 'YYYY-MM-DD HH:mm:ss').format('YYYY'));\r\n if(\r\n (parseInt(moment($to, 'YYYY-MM-DD HH:mm:ss').format('DDD')) * parseInt(moment($to, 'YYYY-MM-DD HH:mm:ss').format('YYYY')))\r\n <\r\n $toDayHelper\r\n ){\r\n $that.removeClass('week-focus-selection');\r\n }\r\n });\r\n }\r\n }else{\r\n var $newDate = moment($to, 'YYYY-MM-DD HH:mm:ss');\r\n $.each($dayHelper, function($i, $v){\r\n if($v < $newDate){\r\n $dayHelper.push($newDate);\r\n $that.addClass('week-focus-selection');\r\n return false;\r\n }\r\n });\r\n }\r\n }\r\n }).on('mouseup touchend', function($e){\r\n $e.stopPropagation();\r\n $e.preventDefault();\r\n var $that = $(this);\r\n var $eventsOfDate = $that.data('from');\r\n $to = $that.data('to');\r\n if($selection){\r\n $dayHelper.length = 0;\r\n $viewWeekTbody.find('.week-focus-selection').removeClass('week-focus-selection');\r\n $selection = false;\r\n $clickBinding = setTimeout(function(){\r\n nurseslounge_lounge_calendar.getEventModal({\r\n user_id: $userId,\r\n lounge_key:$loungeKey,\r\n type: $sense == 'y' ? 'one_time' : 'periodical',\r\n period: $sense == 'y' ? 'consecutive': 'no_consecutive',\r\n from: $from,\r\n to: $to,\r\n all_time_day:0,\r\n start_at: $from,\r\n end_at: $to,\r\n available:$available\r\n });\r\n }, 800);\r\n }\r\n //clearTimeout($holdBinding);\r\n });\r\n }else{\r\n /*\r\n $viewWeekTbody.find('tr td').unbind().on('mousedown touchstart', function ($e) {\r\n $e.stopPropagation();\r\n $e.preventDefault();\r\n var $that = $(this);\r\n $from = $that.data('from');\r\n $holdBinding = setTimeout(function () {\r\n nurseslounge_lounge_calendar.switchCalendarTo('day', $from);\r\n $viewWeekTbody.find('.with-tooltip-week-event').unbind('mouseup touchend');\r\n }, 800);\r\n }).on('mouseup touchend', function ($e) {\r\n clearTimeout($holdBinding);\r\n });\r\n */\r\n }\r\n });\r\n $viewWeek.show();\r\n },\r\n createCalendarDay:function($momentDate, $data){\r\n var $userId = libs.memoryGet('user_id');\r\n var $loungeKey = $data.data.lounge_key;\r\n var $weeks = nurseslounge_lounge_calendar.getWeeks($momentDate, $data);\r\n var $week = $momentDate.clone().week();\r\n var $day = $momentDate.clone().format('DD');\r\n $day = libs.pad('00',$day,'l');\r\n var $currentWeek = $weeks.filter(function($v){\r\n return $v[0] == $week;\r\n })[0];\r\n var $currentDay = $currentWeek[1].filter(function($v){\r\n return $v[0] == $day;\r\n })[0];\r\n var $myCalendar = $(\"#nurseslounge-lounge-calendar\");\r\n var $viewMonth = $myCalendar.find(\".view-month\");\r\n $viewMonth.hide();\r\n var $viewWeek = $myCalendar.find(\".view-week\");\r\n $viewWeek.hide();\r\n var $viewDay = $myCalendar.find(\".view-day\");\r\n var $viewList = $myCalendar.find(\".view-list\");\r\n $viewList.hide();\r\n var $viewDayThead = $viewDay.find('.view-day-thead');\r\n var $viewDayTbody = $viewDay.find('.view-day-tbody');\r\n var $chtml = '';\r\n $chtml += '';\r\n var $titleContent = [];\r\n var $titleEventContent = [];\r\n var $clickBinding;\r\n var $holdBinding;\r\n for(var $i = 0; $i<=1 ; $i++) {\r\n var $content = $i == 0 ? '         ' : $currentDay[$i].trace.day.l + ' - ' + $currentDay[$i].trace.day.d;\r\n var $width = $i == 0 ? 'w-week' : 'w-100';\r\n var $properties = $i != 0 ? $currentDay[$i] : null;\r\n if ($properties) {\r\n var $w = $properties.trace.week.W;\r\n var $day = $properties.trace.day.d;\r\n var $toolTipHtml = '' +\r\n '' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ';\r\n ' ';\r\n $.each($properties.events, function ($i, $v) {\r\n var $title = $v.title.length <= 15 ? $v.title : $v.title.substring(0, 15) + '...';\r\n var $startAt = moment($v.start_at, 'YYYY-MM-DD HH:mm:ss').format('h:mm A');\r\n var $endAt = moment($v.end_at, 'YYYY-MM-DD HH:mm:ss').format('h:mm A');\r\n if ($v.period == 'consecutive' && $v.periodRanges.length > 0) {\r\n $startAt = $v.periodRanges[$w][$day] ? moment($v.periodRanges[$w][$day].from_date.trace.date.date, 'YYYY-MM-DD HH:mm:ss').format('h:mm A') : $startAt;\r\n $endAt = $v.periodRanges[$w][$day] ? moment($v.periodRanges[$w][$day].to_date.trace.date.date, 'YYYY-MM-DD HH:mm:ss').format('h:mm A') : $endAt;\r\n }\r\n $toolTipHtml += '' +\r\n '' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n '';\r\n });\r\n $toolTipHtml += '
    EventTitleStart AtEnd At
    ' + ($i + 1) + '' + $title + '' + $startAt + '' + $endAt + '
    ';\r\n $toolTipHtml = $toolTipHtml.replace(/\"/g, \"\\\\'\");\r\n $titleContent.push([$w + '_' + $day, $toolTipHtml]);\r\n }\r\n $chtml += '' +\r\n '' +\r\n '
    ' +\r\n ' ' + $content + '' +\r\n '
    ';\r\n if ($properties && $properties.eventsCount > 0) {\r\n $chtml += '
    events ' + $properties.eventsCount + '
    ';\r\n }\r\n $chtml += '';\r\n }\r\n $chtml += '';\r\n $viewDayThead.html($chtml).promise().done(function(){\r\n var $template = '' +\r\n '
    ' +\r\n '
    ' +\r\n '
    ';\r\n if(!libs.isMobile()){\r\n $viewDayThead.find('.with-tooltip-day-events').each(function () {\r\n var $that = $(this);\r\n $that.unbind();\r\n $that.tooltip({\r\n html: true,\r\n title:function(){\r\n var $wd = $(this).data('wd');\r\n var $text = '';\r\n $.each($titleContent, function($i, $v){\r\n if($wd == $v[0]){\r\n $text = $v[1];\r\n return false;\r\n }\r\n });\r\n return $text;\r\n },\r\n sanitize:false,\r\n trigger: 'hover',\r\n template:$template,\r\n placement:'bottom'\r\n });\r\n $that.click(function($e){\r\n clearTimeout($clickBinding);\r\n });\r\n });\r\n }\r\n });\r\n $chtml = '';\r\n for(var $halfHour = 0; $halfHour < 48; $halfHour++){\r\n var $hours = Math.floor($halfHour/2);\r\n var $min = (($halfHour+1)%2) > 0 ? '00' : '30';\r\n var $time = moment($hours + ' ' +$min, 'HH mm');\r\n $chtml += '' +\r\n '' +\r\n ' ' +\r\n '
    ' +\r\n $time.clone().format('hh:mm a') +\r\n '
    ' +\r\n ' ';\r\n\r\n var $now = moment();\r\n var $properties = $currentDay[1];\r\n var $date = $currentDay[2];\r\n var $dateHtml = $hours+' '+$min+' '+$date.format('DD MM YYYY');\r\n var $startOfDay = moment('00 00 00 '+$date.format('DD MM YYYY'), 'HH mm ss DD MM YYYY');\r\n var $endOfDay = moment('23 59 59 '+$date.format('DD MM YYYY'), 'HH mm ss DD MM YYYY');\r\n var $from = moment($dateHtml, 'HH mm DD MM YYYY');\r\n var $to = $from.clone().add(30, 'minutes');\r\n var $dayRange = moment().range($startOfDay, $endOfDay);\r\n var $isToday = $dayRange.contains($now) ? 'day-today': '';\r\n var $timeRange = moment().range($from, $to);\r\n var $isNow = $timeRange.contains($now) ? 'active': '';\r\n var $diffInMinutes = $now.diff($from, 'minutes');\r\n var $top = (parseInt($diffInMinutes)*2);\r\n $chtml += '' +\r\n ' '+\r\n '
    ';\r\n if($properties.eventsCount > 0){\r\n $.each($properties.events, function($i, $v){\r\n var $toolTipEventHtml = '';\r\n var $type = $v.type;\r\n var $by = '';\r\n switch($type){\r\n case 'one_time':\r\n $type = 'One time event';\r\n break;\r\n case 'periodical':\r\n $type = 'Periodical';\r\n break;\r\n case 'consecutive':\r\n $type = 'Consecutive';\r\n break;\r\n case 'no_consecutive':\r\n $type = 'No Consecutive';\r\n break;\r\n case 'weekly':\r\n $type = 'Weekly';\r\n break;\r\n case 'monthly':\r\n $type = 'Monthly';\r\n break;\r\n }\r\n if($v.owner_system == 1){\r\n $by = 'Nurses Lounge';\r\n }\r\n if($v.ownerUser && $v.ownerUser.email){\r\n $by = $v.ownerUser.long_name;\r\n }\r\n if($v.ownerLounge && $v.ownerLounge.name){\r\n $by = $v.ownerLounge.name;\r\n }\r\n var $title = $v.title;\r\n $title = $title.length > 20 ? $title.substring(0, 20) + '...' : $title;\r\n //var $name = $v.name;\r\n //$name = $name.length > 20 ? $name.substring(0, 20) + '...' : $name;\r\n //var $description = $v.description;\r\n //$description = $description.length > 30 ? $description.substring(0, 30) + '...' : $description;\r\n //var $image;\r\n //if($v.owner_system == 1){\r\n // $image = '/bimg/Login/small-logo.jpeg';\r\n //}\r\n //if($v.ownerUser && $v.ownerUser.email){\r\n // $image = $v.ownerUser.profile_image_root_friend+'?resize=65';\r\n //}\r\n //if($v.ownerLounge && $v.ownerLounge.name){\r\n // $image = $v.ownerLounge.logo_root_lounge+'?resize=65';\r\n //}\r\n var $key = $v.key;\r\n var $color = $v.color;\r\n $toolTipEventHtml+= nurseslounge_lounge_calendar.tableDescription($v);\r\n //$toolTipEventHtml = $toolTipEventHtml.replace(/\"/g, \"\\\\'\");\r\n $titleEventContent.push([$key, $toolTipEventHtml, $color]);\r\n var $w = $properties.trace.week.W;\r\n var $day = $properties.trace.day.d;\r\n var $startAt = moment($v.start_at, 'YYYY-MM-DD HH:mm:ss');\r\n var $endAt = moment($v.end_at, 'YYYY-MM-DD HH:mm:ss');\r\n if($v.type == 'periodical'){\r\n if($v.period != 'consecutive' && $v.periodRanges.length > 0){\r\n $startAt = $v.periodRanges[$w][$day] ? moment($v.periodRanges[$w][$day].from_date.trace.date.date, 'YYYY-MM-DD HH:mm:ss') : $startAt;\r\n $endAt = $v.periodRanges[$w][$day] ? moment($v.periodRanges[$w][$day].to_date.trace.date.date, 'YYYY-MM-DD HH:mm:ss') : $endAt;\r\n }\r\n }\r\n var $fontColor;\r\n switch($color.toUpperCase()){\r\n case '#00FF00':\r\n $fontColor = '#46565f';\r\n break;\r\n case '#B03060':\r\n $fontColor = '#cccccc';\r\n break;\r\n case '#A020F0':\r\n $fontColor = '#f1f1f1';\r\n break;\r\n case '#C0C0C0':\r\n $fontColor = '#000000';\r\n break;\r\n case '#FF00FF':\r\n $fontColor = '#ffffff';\r\n break;\r\n case '#00FFFF':\r\n $fontColor = '#46565f';\r\n break;\r\n case '#808080':\r\n $fontColor = '#f1f1f1';\r\n break;\r\n case '#008000':\r\n $fontColor = '#f1f1f1';\r\n break;\r\n case '#7F0000':\r\n $fontColor = '#f1f1f1';\r\n break;\r\n case '#7F007F':\r\n $fontColor = '#f1f1f1';\r\n break;\r\n }\r\n var $range = moment().range($startAt, $endAt);\r\n if($range.contains($from)) {\r\n $chtml += '' +\r\n '
    ' +\r\n //'
    ' +\r\n //' ' +\r\n //'
    ' +\r\n '
    ' +\r\n ' '+ $type + ' by ' + $by + ' - ' + $title + ' from ' + $v.start_at +' to ' + $v.end_at + ' ' +\r\n '
    ' +\r\n //'
    ' +\r\n //' '+$description+'' +\r\n //'
    ' +\r\n '
    ';\r\n }\r\n });\r\n }\r\n $chtml += '' +\r\n ' '+\r\n '';\r\n }\r\n $viewDayTbody.html($chtml).promise().done(function(){\r\n var $template = '' +\r\n '
    ' +\r\n '
    ' +\r\n '
    ';\r\n if(!libs.isMobile()){\r\n $viewDayTbody.find('.with-tooltip-day-event').each(function () {\r\n var $that = $(this);\r\n $that.unbind();\r\n $that.tooltip({\r\n html: true,\r\n title:function(){\r\n var $key = $(this).data('key');\r\n var $text = '';\r\n var $color = '';\r\n $.each($titleEventContent, function($i, $v){\r\n if($key == $v[0]){\r\n $text = $v[1];\r\n $color = $v[2];\r\n return false;\r\n }\r\n });\r\n setTimeout(function(){\r\n $(\".tooltip-month-event .tooltip-inner .event-info-table .event-color\").css('color', $color+' !important');\r\n }, 1);\r\n return $text;\r\n },\r\n offset:0,\r\n sanitize:false,\r\n trigger: 'hover',\r\n template:$template,\r\n placement:'auto'\r\n });\r\n $that.click(function($e){\r\n clearTimeout($clickBinding);\r\n var $key = $that.data('key');\r\n nurseslounge_lounge_calendar.getEventModal({key:$key, user_id: $userId, lounge_key:$loungeKey});\r\n });\r\n });\r\n }else{\r\n $viewDayTbody.find('.with-tooltip-day-event').each(function(){\r\n var $key, $keyHelper;\r\n var $that = $(this);\r\n $that.unbind().on('mousedown touchstart', function($e){\r\n $key = $that.data('key');\r\n }).on('mouseup touchend', function ($e) {\r\n $keyHelper = $that.data('key');\r\n nurseslounge_lounge_calendar.getEventModal({key:$key, user_id: $userId, lounge_key:$loungeKey});\r\n });\r\n });\r\n }\r\n //Add new event from the calendar day\r\n if(!libs.isMobile()){\r\n var $from = '';\r\n var $to = '';\r\n var $available = 1;\r\n var $selection = false;\r\n var $dayHelper = [];\r\n var $senseY;\r\n var $senseX;\r\n var $sense;\r\n $viewDayTbody.find('tr td').unbind().on('mousedown touchstart', function($e){\r\n $e.stopPropagation();\r\n $e.preventDefault();\r\n var $that = $(this);\r\n $dayHelper.length = 0;\r\n $from = $that.data('from');\r\n $to = $that.data('to');\r\n if($to != undefined) {\r\n $that.addClass('week-focus-selection');\r\n $dayHelper.push(moment($that.data('to'), 'YYYY-MM-DD HH:mm:ss'));\r\n $selection = true;\r\n $senseY = true;\r\n $senseX = true;\r\n }\r\n /*\r\n $holdBinding = setTimeout(function(){\r\n clearTimeout($clickBinding);\r\n nurseslounge_lounge_calendar.switchCalendarTo('list', $from);\r\n }, 800);\r\n */\r\n }).on('mousemove touchmove', function($e){\r\n $e.stopPropagation();\r\n $e.preventDefault();\r\n var $that = $(this);\r\n $to = $that.data('to');\r\n if($selection && $to != undefined){\r\n if($dayHelper.length >= 2){\r\n var $currentDay = $dayHelper[0].format('DD');\r\n var $toDay = moment($to, 'YYYY-MM-DD HH:mm:ss').format('DD');\r\n var $currentHour = $dayHelper[0].format('HH:mm:ss');\r\n var $toHour = moment($to, 'YYYY-MM-DD HH:mm:ss').format('HH:mm:ss');\r\n $sense = $dayHelper[0].format('DD') == $dayHelper[1].format('DD') ? 'y' : 'x';\r\n if($sense == 'y' && $senseY){\r\n $senseX = false;\r\n if(\r\n $currentDay == $toDay &&\r\n moment($currentHour, 'HH:mm:ss')\r\n <=\r\n moment($toHour, 'HH:mm:ss')\r\n ){\r\n $that.addClass('week-focus-selection');\r\n }\r\n $viewDayTbody.find('.week-focus-selection').each(function(){\r\n var $toHourHelper = moment($(this).data('to'), 'YYYY-MM-DD HH:mm:ss').format('HH:mm:ss');\r\n if(\r\n moment($toHour, 'HH:mm:ss')\r\n <\r\n moment($toHourHelper, 'HH:mm:ss')\r\n ){\r\n $that.removeClass('week-focus-selection');\r\n }\r\n });\r\n }\r\n }else{\r\n var $newDate = moment($to, 'YYYY-MM-DD HH:mm:ss');\r\n $.each($dayHelper, function($i, $v){\r\n if($v < $newDate){\r\n $dayHelper.push($newDate);\r\n $that.addClass('week-focus-selection');\r\n return false;\r\n }\r\n });\r\n }\r\n }\r\n }).on('mouseup touchend', function($e){\r\n $e.stopPropagation();\r\n $e.preventDefault();\r\n var $that = $(this);\r\n $to = $that.data('to');\r\n if($selection){\r\n $dayHelper.length = 0;\r\n $viewDayTbody.find('.week-focus-selection').removeClass('week-focus-selection');\r\n $selection = false;\r\n $clickBinding = setTimeout(function(){\r\n nurseslounge_lounge_calendar.getEventModal({\r\n user_id: $userId,\r\n lounge_key:$loungeKey,\r\n type: 'one_time',\r\n period: 'consecutive',\r\n from: $from,\r\n to: $to,\r\n all_time_day:0,\r\n start_at: $from,\r\n end_at: $to,\r\n available:$available\r\n });\r\n }, 800);\r\n }\r\n //clearTimeout($holdBinding);\r\n });\r\n }else{\r\n /*\r\n $viewDayTbody.find('tr td').unbind().on('mousedown touchstart', function ($e) {\r\n $e.stopPropagation();\r\n $e.preventDefault();\r\n var $that = $(this);\r\n $from = $that.data('from');\r\n $holdBinding = setTimeout(function () {\r\n nurseslounge_lounge_calendar.switchCalendarTo('list', $from);\r\n $viewDayTbody.find('.with-tooltip-day-event').unbind('mouseup touchend');\r\n }, 800);\r\n }).on('mouseup touchend', function ($e) {\r\n clearTimeout($holdBinding);\r\n });\r\n */\r\n }\r\n });\r\n $viewDay.show();\r\n },\r\n switchCalendarTo:function($selectedView, $date){\r\n var $userId = libs.memoryGet('user_id');\r\n var $myCalendar = $(\"#nurseslounge-lounge-calendar\");\r\n var $timeZone = $myCalendar.find(\".time-zone\");\r\n var $area = $timeZone.data('area');\r\n var $params = $.extend({}, {user_id:$userId, area:$area});\r\n var $selectedDate = moment($date, 'YYYY-MM-DD HH:mm:ss');\r\n switch ($selectedView) {\r\n case 'month':{\r\n $params = $.extend({}, $params, {month:$selectedDate.clone().startOf('month').format('DD-MM-YYYY')});\r\n break;\r\n }\r\n case 'week':{\r\n $params = $.extend({}, $params, {week:$selectedDate.clone().startOf('week').format('DD-MM-YYYY')});\r\n break;\r\n }\r\n case 'day':{\r\n $params = $.extend({}, $params, {week:$selectedDate.clone().startOf('week').format('DD-MM-YYYY')});\r\n break;\r\n }\r\n case 'list':{\r\n $params = $.extend({}, $params, {week:$selectedDate.clone().startOf('week').format('DD-MM-YYYY')});\r\n break;\r\n }\r\n }\r\n nurseslounge_lounge_calendar.get($params, function($data){\r\n nurseslounge_lounge_calendar.createCalendar($selectedView, $selectedDate.clone(), $data);\r\n });\r\n nurseslounge_lounge_calendar.selectedView = $selectedView;\r\n },\r\n tableDescription:function($v){\r\n var $title = $v.title;\r\n var $description = $v.description;\r\n var $link = $v.link ? 'Yes' : 'No';\r\n var $allTimeDay = $v.all_time_day === 1;\r\n var $fromDay = moment($v.from, 'YYYY-MM-DD HH:mm:ss').format('MM/DD/YYYY');\r\n var $toDay = moment($v.to, 'YYYY-MM-DD HH:mm:ss').format('MM/DD/YYYY');\r\n var $fromHour = moment($v.start_at, 'YYYY-MM-DD HH:mm:ss').format('h:mm A');\r\n var $toHour = moment($v.end_at, 'YYYY-MM-DD HH:mm:ss').format('h:mm A');\r\n var $include = $v.include;\r\n $include = $include ? $include.charAt(0).toUpperCase() + $include.slice(1) : null;\r\n var $days = $v.days;\r\n $days = $days ? $days.split(',').join(', ') : '';\r\n\r\n var $chtml = '' +\r\n '
    ' +\r\n '
    ';\r\n\r\n /*Top Window Init*/\r\n $chtml +='' +\r\n '
    ';\r\n if($v.owner_system == 1){\r\n $chtml +='' +\r\n '
    ' +\r\n ' ' +\r\n '
    ' +\r\n '
    ' +\r\n '

    Nurses Lounge

    ' +\r\n '
    ';\r\n }\r\n if($v.ownerUser && $v.ownerUser.email){\r\n $chtml +='' +\r\n '
    ' +\r\n ' ' +\r\n '
    ' +\r\n '
    ' +\r\n '

    '+$v.ownerUser.long_name+'

    ' +\r\n //'

    '+$v.ownerUser.email+'

    ' +\r\n '
    '+$v.ownerUser.profile.profile+'
    ' +\r\n '
    ';\r\n }\r\n if($v.ownerLounge && $v.ownerLounge.name){\r\n $chtml +='' +\r\n '
    ' +\r\n ' ' +\r\n '
    ' +\r\n '
    ' +\r\n '

    '+$v.ownerLounge.name+'

    ' +\r\n '
    '+$v.ownerLounge.lounge_type.type+'
    ' +\r\n '
    ';\r\n }\r\n $chtml += '' +\r\n '
    ' +\r\n '
    ' +\r\n '
    ';\r\n /*Top Window End*/\r\n /*Top Window Table Init*/\r\n $chtml+= '' +\r\n '' +\r\n '';\r\n\r\n $chtml+= '' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ';\r\n if($v.type == 'one_time'){\r\n $chtml+= '' +\r\n //' ' +\r\n //' ' +\r\n //' ' +\r\n //' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ';\r\n if($allTimeDay){\r\n $chtml+= '' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ';\r\n }else{\r\n $chtml+= '' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ';\r\n }\r\n }\r\n if($v.type == 'periodical'){\r\n //$chtml+= '' +\r\n //' ' +\r\n //' ' +\r\n //' ' +\r\n //' ';\r\n if($v.period == 'consecutive'){\r\n $chtml+= '' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ';\r\n if($allTimeDay){\r\n $chtml+= '' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' '+\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ';\r\n }else{\r\n $chtml+= '' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ';\r\n }\r\n }\r\n if($v.period == 'no_consecutive'){\r\n $chtml+= '' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ';\r\n if($allTimeDay){\r\n $chtml+= '' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ';\r\n }else{\r\n $chtml+= '' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ';\r\n }\r\n }\r\n if($v.period == 'weekly'){\r\n $chtml+= '' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ';\r\n if($allTimeDay){\r\n $chtml+= '' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ';\r\n }else{\r\n $chtml+= '' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ';\r\n }\r\n }\r\n if($v.period == 'monthly'){\r\n $chtml+= '' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ';\r\n if($allTimeDay){\r\n $chtml+= '' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ';\r\n }else{\r\n $chtml+= '' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ';\r\n }\r\n }\r\n }\r\n $chtml+= '' +\r\n ''+\r\n '
    Title'+$title+'
    Description'+$description+'
    Link'+$link+'
    Event TypeOne time event
    Event Day'+$fromDay+'
    ScheduleAll Day
    Schedule'+$fromHour+' to '+$toHour+'
    Event TypePeriodical
    PeriodConsecutive
    Duration'+$fromDay+' to '+$toDay+'
    ScheduleAll Day
    Duration'+$fromDay+' '+$fromHour+'\\n to \\n'+$toDay+' '+$toHour+'
    PeriodNo Consecutive
    Duration'+$fromDay+' to '+$toDay+'
    ScheduleAll Day
    Duration'+$fromDay+' to '+$toDay+'
    Schedule'+$fromHour+' to '+$toHour+'
    PeriodWeekly
    Duration'+$fromDay+' to '+$toDay+'
    ScheduleAll Day
    '+$include+''+$days+'
    Duration'+$fromDay+' to '+$toDay+'
    Schedule'+$fromHour+' to '+$toHour+'
    '+$include+''+$days+'
    PeriodMonthly
    Duration'+$fromDay+' to '+$toDay+'
    ScheduleAll Day
    '+$include+' day(s)'+$days+'
    Duration'+$fromDay+' to '+$toDay+'
    Schedule'+$fromHour+' to '+$toHour+'
    '+$include+' day(s)'+$days+'
    ' +\r\n '
    ' +\r\n '
    ';\r\n return $chtml;\r\n },\r\n getEvents:function($momentDate, $data){\r\n var $events = [];\r\n var $weeks = nurseslounge_lounge_calendar.getWeeks($momentDate, $data);\r\n var $week = $momentDate.clone().week();\r\n var $day = $momentDate.clone().format('DD');\r\n $day = libs.pad('00',$day,'l');\r\n var $currentWeek = $weeks.filter(function($v){\r\n return $v[0] == $week;\r\n })[0];\r\n var $_w = $currentWeek[0];\r\n var $currentDay = $currentWeek[1].filter(function($v){\r\n return $v[0] == $day;\r\n })[0];\r\n var $_day = $currentDay[0];\r\n var $properties = $currentDay[1];\r\n var $from = $currentDay[2];\r\n var $to = moment($from.format('DD-MM-YYYY') + ' 23:59:59', 'DD-MM-YYYY HH:mm:ss');\r\n $.each($properties.events, function($i, $v){\r\n var $startAt = moment($v.start_at, 'YYYY-MM-DD HH:mm:ss');\r\n var $endAt = moment($v.end_at, 'YYYY-MM-DD HH:mm:ss');\r\n if($v.type == 'periodical'){\r\n if($v.period != 'consecutive' && $v.periodRanges.length > 0){\r\n $startAt = $v.periodRanges[$_w][$_day] ? moment($v.periodRanges[$_w][$_day].from_date.trace.date.date, 'YYYY-MM-DD HH:mm:ss') : $startAt;\r\n $endAt = $v.periodRanges[$_w][$_day] ? moment($v.periodRanges[$_w][$_day].to_date.trace.date.date, 'YYYY-MM-DD HH:mm:ss') : $endAt;\r\n }\r\n }\r\n var $range = moment().range($from, $to);\r\n var $_from = moment($v.from, 'YYYY-MM-DD HH:mm:ss');\r\n if($range.contains($_from)) {\r\n var $unix = $startAt.clone().format('X');\r\n if($events[$unix] == undefined){\r\n $events[$unix] = [];\r\n }\r\n $events[$unix].push($v);\r\n }\r\n });\r\n return [$events, $currentDay];\r\n },\r\n tableBorderCSS:function($classBorder){\r\n $classBorder == undefined ? 1 : $classBorder;\r\n var $myCalendar = $(\"#nurseslounge-lounge-calendar\");\r\n var $calendarTable = $myCalendar.find(\".view-list .calendar.table:first\");\r\n var $viewListThead = $calendarTable.find('.view-list-thead');\r\n if($calendarTable.hasClass('border')){\r\n if($classBorder == 0){\r\n $calendarTable.removeClass('border');\r\n }\r\n }\r\n if($viewListThead.hasClass('border')){\r\n if($classBorder == 0) {\r\n $viewListThead.removeClass('border');\r\n }\r\n }\r\n },\r\n createCalendarList:function($momentDate, $data){\r\n var $userId = libs.memoryGet('user_id');\r\n var $loungeKey = $data.data.lounge_key;\r\n nurseslounge_lounge_calendar.tableBorderCSS(0);\r\n var $getEvents = nurseslounge_lounge_calendar.getEvents($momentDate, $data);\r\n var $events = $getEvents[0];\r\n var $currentDay = $getEvents[1];\r\n var $myCalendar = $(\"#nurseslounge-lounge-calendar\");\r\n var $calendar = $myCalendar.find(\".calendar:first\");\r\n var $viewMonth = $myCalendar.find(\".view-month\");\r\n $viewMonth.hide();\r\n var $viewWeek = $myCalendar.find(\".view-week\");\r\n $viewWeek.hide();\r\n var $viewDay = $myCalendar.find(\".view-day\");\r\n $viewDay.hide();\r\n var $viewList = $myCalendar.find(\".view-list\");\r\n var $viewListThead = $viewList.find('.view-list-thead');\r\n var $viewListTbody = $viewList.find('.view-list-tbody');\r\n var $chtml = '';\r\n $chtml += '' +\r\n '' +\r\n ' ' +\r\n ' ' +\r\n $currentDay[1].trace.day.l + ' - ' + $currentDay[1].trace.day.d +\r\n ' ' +\r\n ' ' +\r\n '';\r\n $viewListThead.html($chtml);\r\n $chtml = '';\r\n var $carousel = [];\r\n var $newEvents = 0;\r\n var $oldEvents = 0;\r\n var $isTheNext = false;\r\n for(var $time in $events){\r\n $carousel.push($time);\r\n var $list = $events[$time];\r\n var $currentEvent = moment($time, 'X');\r\n var $now = moment();\r\n var $new = $currentEvent > $now;\r\n if($new){\r\n $isTheNext = $isTheNext == false ? true : false;\r\n var $timelineActive = '';\r\n if($isTheNext){\r\n $timelineActive = 'timeline active';\r\n }\r\n $newEvents++;\r\n $chtml += '' +\r\n '
    ' +\r\n '
    ' +\r\n '
    ';\r\n }else{\r\n $oldEvents++;\r\n $chtml += '' +\r\n '
    ' +\r\n '
    ' +\r\n '
    ';\r\n }\r\n //Carousel\r\n $chtml += '' +\r\n '
    ' +\r\n '
    ';\r\n $.each($list, function($i, $v){\r\n var $listDescription = nurseslounge_lounge_calendar.listDescription($v);\r\n var $key = $v.key;\r\n var $active = $i == 0 ? 'active' : '';\r\n $chtml += '' +\r\n '
    ' +\r\n $listDescription +\r\n '
    ';\r\n });\r\n $chtml += '
    ';\r\n if($list.length > 1){\r\n $chtml += '' +\r\n ' ' +\r\n ' ' +\r\n ' Previous' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' Next' +\r\n ' ';\r\n }\r\n $chtml += '
    ';\r\n //Carousel end\r\n $chtml += '
    ' +\r\n '
    ';\r\n if($new) {\r\n $chtml += '' +\r\n '
    ' +\r\n '
    ' +\r\n '
    ';\r\n $.each($list, function($i, $v) {\r\n var $key = $v.key;\r\n var $image;\r\n var $display = $i == 0 ? '' : 'none';\r\n if($v.owner_system == 1){\r\n $image = '/bimg/Login/small-logo.jpeg';\r\n }\r\n if($v.ownerUser && $v.ownerUser.email){\r\n $image = $v.ownerUser.profile_image_root_friend+'?resize=65';\r\n }\r\n if($v.ownerLounge && $v.ownerLounge.name){\r\n $image = $v.ownerLounge.logo_root_lounge+'?resize=65';\r\n }\r\n $chtml += '' +\r\n ' ';\r\n });\r\n $chtml += '' +\r\n '
    ' +\r\n '
    ';\r\n }else{\r\n $chtml += '' +\r\n '
    ' +\r\n '
    ' +\r\n '
    ';\r\n $.each($list, function($i, $v) {\r\n var $key = $v.key;\r\n var $image;\r\n var $display = $i == 0 ? '' : 'none';\r\n if($v.owner_system == 1){\r\n $image = '/bimg/Login/small-logo.jpeg';\r\n }\r\n if($v.ownerUser && $v.ownerUser.email){\r\n $image = $v.ownerUser.profile_image_root_friend+'?resize=65';\r\n }\r\n if($v.ownerLounge && $v.ownerLounge.name){\r\n $image = $v.ownerLounge.logo_root_lounge+'?resize=65';\r\n }\r\n $chtml += '' +\r\n ' ';\r\n });\r\n $chtml += '' +\r\n '
    ' +\r\n '
    ';\r\n }\r\n }\r\n $viewListTbody.html($chtml).promise().done(function(){\r\n var $calendar = $(\"#nurseslounge-lounge-calendar\");\r\n $.each($carousel, function($i, $v){\r\n $('#carousel_'+$v).on('slide.bs.carousel', function ($ev) {\r\n var $active = $($ev.relatedTarget);\r\n var $carousel = $active.data('carousel');\r\n var $key = $active.data('key');\r\n $(\".view-list-tbody-img img[data-carousel='\"+$carousel+\"']\").hide();\r\n $(\".view-list-tbody-img img[data-key='\"+$key+\"']\").fadeIn();\r\n }).carousel({\r\n interval: 6000,\r\n ride:true\r\n });\r\n });\r\n $calendar.find(\".view-list-tbody-img img\").unbind().click(function(){\r\n var $that = $(this);\r\n var $key = $that.data('key');\r\n nurseslounge_lounge_calendar.getEventModal({key:$key, user_id: $userId, lounge_key:$loungeKey});\r\n });\r\n $calendar.find(\".carousel-item\").unbind().click(function(){\r\n var $that = $(this);\r\n var $key = $that.data('key');\r\n nurseslounge_lounge_calendar.getEventModal({key:$key, user_id: $userId, lounge_key:$loungeKey});\r\n });\r\n libs.checkImageLoad($($chtml).find('img'), function(){\r\n $viewList.show();\r\n //var $top = $viewListThead.offset().top - $calendar.offset().top + $viewListThead.height();\r\n //var $height = $viewListTbody.height() - 10;\r\n //$('style[data=\"nurseslounge-lounge-calendar\"]').remove();\r\n //$('').appendTo('head');\r\n nurseslounge_lounge_calendar.createCalendarListClock($newEvents, $oldEvents);\r\n });\r\n });\r\n },\r\n listDescription:function($v){\r\n var $allTimeDay = $v.all_time_day === 1;\r\n var $fromDay = moment($v.from, 'YYYY-MM-DD HH:mm:ss').format('MM/DD/YYYY');\r\n var $toDay = moment($v.to, 'YYYY-MM-DD HH:mm:ss').format('MM/DD/YYYY');\r\n var $fromHour = moment($v.start_at, 'YYYY-MM-DD HH:mm:ss').format('h:mm A');\r\n var $toHour = moment($v.end_at, 'YYYY-MM-DD HH:mm:ss').format('h:mm A');\r\n var $include = $v.include;\r\n $include = $include ? $include.charAt(0).toUpperCase() + $include.slice(1) : null;\r\n var $days = $v.days;\r\n $days = $days ? $days.split(',').join(', ') : '';\r\n var $color = $v.color;\r\n var $chtml = '' +\r\n '
    ' +\r\n '
    ';\r\n\r\n if($v.owner_system == 1){\r\n $chtml +='' +\r\n '

    Nurses Lounge

    ';\r\n }\r\n if($v.ownerUser && $v.ownerUser.email){\r\n $chtml +='' +\r\n '

    '+$v.ownerUser.long_name+'

    ' +\r\n '
    '+$v.ownerUser.profile.profile+'
    ';\r\n }\r\n if($v.ownerLounge && $v.ownerLounge.name){\r\n $chtml +='' +\r\n '

    '+$v.ownerLounge.name+'

    ' +\r\n '
    '+$v.ownerLounge.lounge_type.type+'
    ';\r\n }\r\n\r\n $chtml +='' +\r\n '
    ' +\r\n '
    '+\r\n ' ' +\r\n ' ';\r\n if($v.type == 'one_time'){\r\n $chtml+= '' +\r\n //' ' +\r\n //' ' +\r\n //' ' +\r\n //' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ';\r\n if($allTimeDay){\r\n $chtml+= '' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ';\r\n }else{\r\n $chtml+= '' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ';\r\n }\r\n }\r\n if($v.type == 'periodical'){\r\n //$chtml+= '' +\r\n // ' ' +\r\n // ' ' +\r\n // ' ' +\r\n // ' ';\r\n if($v.period == 'consecutive'){\r\n $chtml+= '' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ';\r\n if($allTimeDay){\r\n $chtml+= '' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' '+\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ';\r\n }else{\r\n $chtml+= '' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ';\r\n }\r\n }\r\n if($v.period == 'no_consecutive'){\r\n $chtml+= '' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ';\r\n if($allTimeDay){\r\n $chtml+= '' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ';\r\n }else{\r\n $chtml+= '' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ';\r\n }\r\n }\r\n if($v.period == 'weekly'){\r\n $chtml+= '' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ';\r\n if($allTimeDay){\r\n $chtml+= '' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ';\r\n }else{\r\n $chtml+= '' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ';\r\n }\r\n }\r\n if($v.period == 'monthly'){\r\n $chtml+= '' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ';\r\n if($allTimeDay){\r\n $chtml+= '' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ';\r\n }else{\r\n $chtml+= '' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ';\r\n }\r\n }\r\n }\r\n $chtml+= '' +\r\n ' '+\r\n '
    Event TypeOne time event
    Event Day'+$fromDay+'
    ScheduleAll Day
    Schedule'+$fromHour+' to '+$toHour+'
    Event TypePeriodical
    PeriodConsecutive
    Duration'+$fromDay+' to '+$toDay+'
    ScheduleAll Day
    Duration'+$fromDay+' '+$fromHour+'\\n to \\n'+$toDay+' '+$toHour+'
    PeriodNo Consecutive
    Duration'+$fromDay+' to '+$toDay+'
    ScheduleAll Day
    Duration'+$fromDay+' to '+$toDay+'
    Schedule'+$fromHour+' to '+$toHour+'
    PeriodWeekly
    Duration'+$fromDay+' to '+$toDay+'
    ScheduleAll Day
    '+$include+''+$days+'
    Duration'+$fromDay+' to '+$toDay+'
    Schedule'+$fromHour+' to '+$toHour+'
    '+$include+''+$days+'
    PeriodMonthly
    Duration'+$fromDay+' to '+$toDay+'
    ScheduleAll Day
    '+$include+' day(s)'+$days+'
    Duration'+$fromDay+' to '+$toDay+'
    Schedule'+$fromHour+' to '+$toHour+'
    '+$include+' day(s)'+$days+'
    ' +\r\n '
    ' +\r\n '
    ';\r\n return $chtml;\r\n },\r\n createCalendarListClock:function($newEvents, $oldEvents){\r\n var $userId = libs.memoryGet('user_id');\r\n var $calendarClockBinding = libs.memoryGet('lounge_calendar_calendar_clock_binding') ? libs.memoryGet('lounge_calendar_calendar_clock_binding') : null;\r\n var $now = moment();\r\n var $myCalendar = $(\"#nurseslounge-lounge-calendar\");\r\n var $viewList = $myCalendar.find(\".view-list\");\r\n var $viewListTbody = $viewList.find('.view-list-tbody');\r\n var $news = 0;\r\n var $olds = 0;\r\n $viewListTbody.find('.clock').each(function($i, $v){\r\n var $dateString = [];\r\n var $that = $(this);\r\n var $startat = $that.data('startat');\r\n var $date = moment.unix($startat);\r\n var $sense = $date.clone().diff($now, 'seconds') > 0;\r\n var $diffSeconds = $sense ? $date.clone().diff($now, 'seconds') : $now.clone().diff($date, 'seconds');\r\n var $diffMinutes = $sense ? $date.clone().diff($now, 'minutes') : $now.clone().diff($date, 'minutes');\r\n var $diffHours = $sense ? $date.clone().diff($now, 'hours') : $now.clone().diff($date, 'hours');\r\n var $diffDays = $sense ? $date.clone().diff($now, 'days') : $now.clone().diff($date, 'days');\r\n var $diffMonths = $sense ? $date.clone().diff($now, 'months') : $now.clone().diff($date, 'months');\r\n var $diffYears = $sense ? $date.clone().diff($now, 'years') : $now.clone().diff($date, 'years');\r\n var $years = parseInt($diffYears);\r\n var $monthsHelper = $sense ? $date.clone().subtract($diffYears, 'years') : $date.clone().add($diffYears, 'years');\r\n var $months = $now.clone().diff($monthsHelper, 'months');\r\n $months = parseInt($months);\r\n $months = $months > 0 ? $months : (-1 * $months);\r\n $months = $months > 0 ? $months == 1 ? $months+' month' : $months+' months' : '';\r\n $dateString.push($months);\r\n var $daysHelper = $sense ? $date.clone().subtract($diffMonths, 'months') : $date.clone().add($diffMonths, 'months');\r\n var $days = $now.clone().diff($daysHelper, 'days');\r\n $days = parseInt($days);\r\n $days = $days > 0 ? $days : (-1 * $days);\r\n $days = $days > 0 ? $days == 1 ? $days+' day' : $days+' days' : '';\r\n $dateString.push($days);\r\n var $hoursHelper = $sense ? $date.clone().subtract($diffDays, 'days') : $date.clone().add($diffDays, 'days');\r\n var $hours = $now.clone().diff($hoursHelper, 'hours');\r\n $hours = parseInt($hours);\r\n $hours = $hours > 0 ? $hours : (-1 * $hours);\r\n $hours = $hours > 0 ? $hours == 1 ? $hours+' hour' : $hours+' hours' : '';\r\n $dateString.push($hours);\r\n var $minutesHelper = $sense ? $date.clone().subtract($diffHours, 'hours') : $date.clone().add($diffHours, 'hours');\r\n var $minutes = $now.clone().diff($minutesHelper, 'minutes');\r\n $minutes = parseInt($minutes);\r\n $minutes = $minutes > 0 ? $minutes : (-1 * $minutes);\r\n $minutes = $minutes > 0 ? $minutes == 1 ? $minutes+' minute' : $minutes+' minutes' : '';\r\n $dateString.push($minutes);\r\n var $secondsHelper = $sense ? $date.clone().subtract($diffMinutes, 'minutes') : $date.clone().add($diffMinutes, 'minutes');\r\n var $seconds = $now.clone().diff($secondsHelper, 'seconds');\r\n $seconds = parseInt($seconds);\r\n $seconds = $seconds > 0 ? $seconds : (-1 * $seconds);\r\n $seconds = $seconds > 0 ? $seconds == 1 ? $seconds+' second' : $seconds+' seconds' : '';\r\n $dateString.push($seconds);\r\n if($days > 3){\r\n $that.html($date.format('YYYY-MM-DD HH:mm:ss'));\r\n }else{\r\n if($sense){\r\n $news++;\r\n $that.html('start in ' + $dateString.join(' '));\r\n }else{\r\n $olds++;\r\n $that.html($dateString.join(' ') + ' ago');\r\n }\r\n }\r\n });\r\n if($newEvents != $news && $oldEvents != $olds){\r\n var $timeZone = $myCalendar.find(\".time-zone\");\r\n var $area = $timeZone.data('area');\r\n var $params = $.extend({}, {user_id:$userId, area:$area, week:$now.clone().format('DD-MM-YYYY')});\r\n nurseslounge_lounge_calendar.get($params, function($data){\r\n nurseslounge_lounge_calendar.createCalendar('list', $now.clone(), $data);\r\n });\r\n }\r\n try{\r\n clearTimeout($calendarClockBinding);\r\n }catch ($e) {\r\n\r\n }\r\n $calendarClockBinding = setTimeout(function(){\r\n nurseslounge_lounge_calendar.createCalendarListClock($newEvents, $oldEvents);\r\n }, 1000);\r\n libs.memorySave('lounge_calendar_calendar_clock_binding', $calendarClockBinding);\r\n }\r\n};\r\n","var nurseslounge_lounge_nursingJobs = {\r\n init:function($params){\r\n try{\r\n nurseslounge_lounge_nursingJobs.jobs_search($params);\r\n }catch (e) {\r\n\r\n }\r\n },\r\n jobs_search:function($params){\r\n $params = $.extend({},$params, {\r\n action:'info',\r\n tab:'jobs'\r\n });\r\n var $jobs = $(\"#nurseslounge-lounge-nursing-jobs\");\r\n var $jobsDown = $jobs.find(\".nurseslounge-lounge-nursing-jobs-down\");\r\n var $jobListContainer = $jobsDown.find(\".jobs-list-container:first\");\r\n var $preview = nurseslounge_lounge_nursingJobs.jobs_search_list_preview();\r\n var $bindingResize;\r\n var $map = new google.maps.Map(document.getElementById('search-location-map'), {\r\n center: {lat: 29.8550297, lng: -97.9463043},\r\n mapTypeId: google.maps.MapTypeId.ROADMAP,\r\n mapTypeControl: false,\r\n streetViewControl: false,\r\n fullscreenControl: false,\r\n zoom: 5,\r\n zoomControl: true,\r\n zoomControlOptions: {\r\n position: google.maps.ControlPosition.TOP_LEFT\r\n },\r\n });\r\n $map.setTilt(0);\r\n google.maps.event.trigger($map, 'resize');\r\n $jobListContainer.html($preview).promise().done(function(){\r\n nurseslounge_lounge_nursingJobs.nursing_jobs_up_request($params, function($data){\r\n nurseslounge_lounge_nursingJobs.nursing_jobs_search_map_list($params, $map, $data);\r\n nurseslounge_lounge_nursingJobs.lounge_jobs_information_edit($params, $data);\r\n });\r\n });\r\n $(window).unbind('resize').resize(function(){\r\n try{\r\n clearTimeout($bindingResize);\r\n }catch (e) {\r\n }\r\n $bindingResize = setTimeout(function(){\r\n $jobListContainer.html($preview).promise().done(function(){\r\n nurseslounge_lounge_nursingJobs.nursing_jobs_up_request($params, function($data){\r\n nurseslounge_lounge_nursingJobs.nursing_jobs_search_map_list($params, $map, $data);\r\n nurseslounge_lounge_nursingJobs.lounge_jobs_information_edit($params, $data);\r\n });\r\n });\r\n }, 800);\r\n });\r\n },\r\n jobs_search_list_preview:function(){\r\n var $chtml = '';\r\n for(var $x=0;$x<10;$x++){\r\n $chtml+= '' +\r\n '
  • ' +\r\n ' ' +\r\n '
    ' +\r\n '
    ' +\r\n '
    ' +\r\n '
    ';\r\n for(var $s = 1; $s<=5; $s++) {\r\n $chtml+= '' +\r\n '' +\r\n ' ' +\r\n '';\r\n }\r\n $chtml+= '' +\r\n '
    ' +\r\n '
    ' +\r\n '    ' +\r\n '    ' +\r\n '
    ' +\r\n '
    ' +\r\n '
    ' +\r\n '
    ' +\r\n '
    ' +\r\n '
    ' +\r\n '     ' +\r\n '     ' +\r\n '     ' +\r\n '     ' +\r\n '     ' +\r\n '
    ' +\r\n '
    ' +\r\n '

    ' +\r\n '         ' +\r\n '         ' +\r\n '         ' +\r\n '         ' +\r\n '

    ' +\r\n '

    ' +\r\n '                    ' +\r\n '                    ' +\r\n '                    ' +\r\n '                    ' +\r\n '

    ' +\r\n '
    ' +\r\n '
    ' +\r\n '
    ' +\r\n '
    ' +\r\n '
    ' +\r\n '
  • ';\r\n }\r\n return $chtml;\r\n },\r\n nursing_jobs_up_request:function($params, cback){\r\n $.ajax({\r\n url: \"/lounge/nursingJobs/get\",\r\n method: \"POST\",\r\n cache:false,\r\n dataType: \"json\",\r\n data:$params,\r\n success: function ($data) {\r\n libs.expire($data);\r\n if($data.status == 'error'){\r\n $(\"#nurseslounge-job-information-edit-modal\").modal('hide');\r\n }\r\n if($data.status == 'success'){\r\n nurseslounge_lounge_nursingJobs.form_set_values($data.data, function(){\r\n cback($data);\r\n });\r\n }\r\n }\r\n });\r\n },\r\n form_set_values:function($data, cback){\r\n var $jobs = $(\"#nurseslounge-lounge-nursing-jobs\");\r\n var $jobsDown = $jobs.find(\".nurseslounge-lounge-nursing-jobs-down\");\r\n $jobsDown.find(\".result-numbers:first\").html('Showing '+$data.total+' availables Jobs');\r\n if(cback != undefined){\r\n cback();\r\n }\r\n },\r\n nursing_jobs_search_map_list:function($params, $map, $data){\r\n var $mapsMarkers = libs.memoryGet('maps_markers') ? libs.memoryGet('maps_markers') : [];\r\n $.each($mapsMarkers, function($i, $v){\r\n $v.setMap(null);\r\n });\r\n libs.memorySave('maps_markers', []);\r\n var $positionSave = [];\r\n var $bounds = new google.maps.LatLngBounds();\r\n var $locations = $data && $data.data && $data.data.locations && $data.data.locations ? $data.data.locations : null;\r\n var $locationsLength = $locations && $locations.length > 0 ? true : false;\r\n if($locationsLength){\r\n nurseslounge_jobs.add_map_marker_with_info($map, $locations, $positionSave, true, function(){\r\n nurseslounge_lounge_nursingJobs.nursing_jobs_pagination($params, $locations, function(){\r\n $.each($positionSave, function ($i, $v) {\r\n $bounds.extend($v);\r\n });\r\n if($locations.length > 1){\r\n $map.fitBounds($bounds);\r\n $map.panToBounds($bounds);\r\n }else{\r\n $map.fitBounds($bounds);\r\n $map.setZoom(20);\r\n }\r\n });\r\n });\r\n }else{\r\n nurseslounge_lounge_nursingJobs.nursing_jobs_pagination($params, $locations, function(){\r\n if($data.data.location.address_is_unmappable == 0){\r\n $map.setCenter({lat:parseFloat($data.data.location.address_latitude),lng:parseFloat($data.data.location.address_longitude)});\r\n $map.setZoom(Math.round(14-Math.log(10)/Math.LN2) + 0.7);\r\n }\r\n });\r\n }\r\n //$map.addListener(\"click\", function(){});\r\n },\r\n nursing_jobs_pagination:function($params, $locations, cback){\r\n var $reload;\r\n var $loaded = false;\r\n var $afterFirstPagination = false;\r\n var $jobs = $(\"#nurseslounge-lounge-nursing-jobs\");\r\n var $jobListContainer = $jobs.find(\".nurseslounge-lounge-nursing-jobs-down .jobs-list-container\");\r\n var $paginationContainer = $jobs.find(\".nurseslounge-lounge-nursing-jobs-down .pagination-nav\");\r\n var $previewHeight = $jobs.find(\".nurseslounge-lounge-nursing-jobs-down .jobs-list-container .preview:first\").innerHeight();\r\n var $jobHeight = $jobListContainer.parents(':first').innerHeight();\r\n var $pageSize = Math.round(($jobHeight/$previewHeight));\r\n var $paginationObj;\r\n try{\r\n $paginationObj = libs.memoryGet('nursing_jobs_pagination');\r\n if($paginationObj){\r\n $paginationObj.pagination('destroy');\r\n }\r\n }catch ($e) {\r\n }\r\n $paginationObj = $paginationContainer.pagination({\r\n pageSize: $pageSize > 0 ? $pageSize : 0,\r\n showPageNumbers: true,\r\n showPrevious: true,\r\n showNext: true,\r\n showNavigator: true,\r\n showFirstOnEllipsisShow: true,\r\n showLastOnEllipsisShow: true,\r\n dataSource:$locations.filter(function($obj){\r\n return $obj.employer_have_clicks > 0;\r\n }),\r\n callback: function($data, $pagination) {\r\n $loaded = true;\r\n if($jobListContainer.length > 0 && $jobListContainer.offset().top > 0 && $afterFirstPagination){\r\n $('html, body').animate({scrollTop:$jobListContainer.offset().top - 100});\r\n }else{\r\n $afterFirstPagination = true;\r\n }\r\n var $chtml = nurseslounge_jobs.add_map_list_html($params, $data);\r\n if($chtml == ''){\r\n $chtml = '' +\r\n '
    ' +\r\n '

    Jobs for this area coming soon.

    ' +\r\n '
    ' +\r\n ' ' +\r\n '
    ' +\r\n '
    ';\r\n }\r\n libs.checkImageLoad($($chtml).find('img'), function () {\r\n $jobListContainer.html('').html($chtml).promise().done(function(){\r\n nurseslounge_lounge_nursingJobs.jobs_map_events(function() {});\r\n });\r\n });\r\n }\r\n });\r\n libs.memorySave('nursing_jobs_pagination', $paginationObj);\r\n $reload = setTimeout(function(){\r\n if(!$loaded){\r\n nurseslounge_lounge_nursingJobs.nursing_jobs_pagination($params, $locations, cback);\r\n }else{\r\n clearTimeout($reload);\r\n }\r\n }, 10000);\r\n if (cback != undefined) {\r\n cback();\r\n }\r\n },\r\n jobs_map_events:function(cback){\r\n var $jobs = $(\"#nurseslounge-lounge-nursing-jobs\");\r\n var $jobListContainer = $jobs.find(\".nurseslounge-lounge-nursing-jobs-down .jobs-list-container\");\r\n var $spu = $jobListContainer.find('.spu');\r\n var $mapsMarkers = libs.memoryGet('maps_markers');\r\n var $originalIcon;\r\n var $originalMarker;\r\n $spu.unbind();\r\n $spu.click(function(){\r\n nurseslounge_jobs.add_map_show_spu($(this).data('key'), $(this).data('facility_key'));\r\n }).mouseover(function(){\r\n var $location = $(this).data('location').split(',');\r\n var $iconUrl = './../../bimg/NursesLounge/onfocus.png';\r\n $.each($mapsMarkers, function($i, $v){\r\n var $position = $v.getPosition();\r\n if(parseFloat($location[0]) == $position.lat() && parseFloat($location[1]) == $position.lng()){\r\n $originalMarker = $v;\r\n $originalIcon = $originalMarker.getIcon();\r\n $originalMarker.setIcon({url:$iconUrl, scaledSize: (new google.maps.Size(20, 35))});\r\n return false;\r\n }\r\n });\r\n }).mouseout(function(){\r\n try{\r\n $originalMarker.setIcon($originalIcon);\r\n }catch (e) {\r\n\r\n }\r\n });\r\n if(cback != undefined){\r\n cback();\r\n }\r\n },\r\n\r\n add_map_show_spu_request:function($params, cback){\r\n $.ajax({\r\n url: \"/lounge/nursingJobs/employerList/get\",\r\n method: \"POST\",\r\n cache:false,\r\n dataType: \"json\",\r\n data:$params,\r\n success: function ($data) {\r\n libs.expire($data);\r\n if($data.status == 'success'){\r\n cback($data);\r\n }else{\r\n $(\"#nurseslounge-employer-jobs-modal\").modal('hide');\r\n }\r\n }\r\n });\r\n },\r\n\r\n lounge_jobs_information_edit:function($params, $data){\r\n var $credential = $data && $data.data && $data.data.user_credential ? $data.data.user_credential : [];\r\n $credential = $credential.map(function($x){return parseInt($x);});\r\n var $allowTabs = {\r\n 'job_information': $.inArray(19, $credential) != -1 ? true : false,\r\n 'job_location': $.inArray(19, $credential) != -1 ? true : false\r\n };\r\n var $allowTabsFiltered = $allowTabs;\r\n $allowTabs = {};\r\n $.each($allowTabsFiltered, function($k, $v) {var $newObj = {};$newObj[$k]=$v;if($v){$.extend($allowTabs, $newObj);}});\r\n var $information = $(\"#nurseslounge-lounge-nursing-jobs\");\r\n var $informationRight = $information.find('.nurseslounge-lounge-nursing-jobs-up:first .administrator:first');\r\n var $options = $informationRight.find('.option');\r\n $options.each(function(){\r\n var $that = $(this);\r\n var $action = $that.data('action');\r\n if(\r\n $action == 'create'\r\n ) {\r\n $that.unbind().click(function () {\r\n var $tab = null;\r\n $.each($allowTabs, function($i, $v){\r\n if($v){\r\n $tab = $i;\r\n return false;\r\n }\r\n });\r\n if(\r\n $tab && $action == 'create'\r\n ){\r\n nurseslounge_job_jobDetail.information_request_select_tab($action, $tab, $allowTabs, $params, function () {\r\n $(\"#nurseslounge-job-information-edit-modal\").scrollTop(0);\r\n $(\"#nurseslounge-job-information-edit-modal\").modal('show');\r\n });\r\n }\r\n });\r\n }\r\n });\r\n },\r\n};\r\n","var nurseslounge_lounge_followers = {\r\n init:function($params){\r\n nurseslounge_lounge_followers.lounge_followers_load($params);\r\n nurseslounge_lounge_followers.banners_location(function($config){\r\n nurseslounge_myDashboard_myProfile.banners_engine($config);\r\n });\r\n nurseslounge_lounge_followers.task_list_container(function($container){\r\n $params = $.extend({}, $params, {only:'owners'});\r\n nurseslounge_myDashboard_myProfile.task_list($container, $params);\r\n });\r\n },\r\n lounge_followers_load:function($params){\r\n var $loungeFollowersLeft = $(\"#nurseslounge-lounge-followers .nurseslounge-lounge-followers-left\");\r\n var $form = $loungeFollowersLeft.find('form:first');\r\n var $name = $loungeFollowersLeft.find(\"input[name='name']\");\r\n var $reset = $loungeFollowersLeft.find('.reset');\r\n $form.unbind().submit(function($e){\r\n $e.preventDefault();\r\n nurseslounge_lounge_followers.lounge_followers_search($params);\r\n });\r\n nurseslounge_lounge_followers.lounge_followers_autocomplete(\r\n $name,\r\n $params,\r\n \"/lounge/followers/autocomplete\",\r\n function($keyword){\r\n nurseslounge_lounge_followers.lounge_followers_search($params);\r\n }\r\n );\r\n $reset.unbind().click(function(){\r\n $form[0].reset();\r\n nurseslounge_lounge_followers.lounges_home_search($params);\r\n });\r\n nurseslounge_lounge_followers.lounge_followers_search($params);\r\n },\r\n lounge_followers_autocomplete:function($target, $data, $url, cback){\r\n try {\r\n $($target).autocomplete(\"destroy\");\r\n }catch (e) {\r\n }\r\n var $value = '';\r\n $($target).autocomplete({\r\n minLength\t:2,\r\n search\t\t: function(){\r\n $(this).addClass(\"ui-autocomplete-loading\");\r\n },\r\n open \t\t: function(){\r\n $(this).removeClass(\"ui-autocomplete-loading\");\r\n },\r\n source: function(request, response) {\r\n $.ajax({\r\n method: 'POST',\r\n url:$url,\r\n data:$.extend({},{\r\n keyword:$($target).val()\r\n }, $data),\r\n dataType: \"json\",\r\n success: function($data){\r\n libs.expire($data);\r\n $value = '';\r\n response($data);\r\n }\r\n });\r\n },\r\n create:function(){\r\n $(this).prev().remove();\r\n $(this).trigger(\"keypress.autocomplete\");\r\n },\r\n select: function (event, ui) {\r\n $value = ui.item.value;\r\n $(this).val($value);\r\n cback($value);\r\n return false;\r\n }\r\n }).keypress(function ($e) {\r\n if ($e.which == 13) {\r\n cback($(this).val());\r\n $(this).autocomplete(\"close\");\r\n }\r\n });\r\n },\r\n lounge_followers_search:function($params){\r\n var $loungeFollowersLeft = $(\"#nurseslounge-lounge-followers .nurseslounge-lounge-followers-left\");\r\n var $name = $loungeFollowersLeft.find(\"input[name='name']\");\r\n var $followersList = $loungeFollowersLeft.find(\".followers-list:first\");\r\n var $followersListPreview = nurseslounge_lounge_followers.followers_preview();\r\n var $resultInfo = $loungeFollowersLeft.find(\".result-info-count:first\");\r\n var $resultPreview = ' ';\r\n var $paginationNav = $loungeFollowersLeft.find('.pagination-nav');\r\n var $paginationNavPreview = ' ';\r\n $params = $.extend({},$params,{\r\n name:$name.val(),\r\n });\r\n $resultInfo.addClass('nurseslounge-lounge-followers-preload').html($resultPreview);\r\n $paginationNav.addClass('nurseslounge-lounge-followers-preload').html($paginationNavPreview);\r\n $followersList.html($followersListPreview).promise().done(function(){\r\n nurseslounge_lounge_followers.followers_pagination($params);\r\n });\r\n },\r\n followers_preview:function(){\r\n var $chtml = '';\r\n for(var $i=1; $i<=10; $i++){\r\n $chtml+= '' +\r\n '
  • ' +\r\n '
    ' +\r\n '
    ' +\r\n '
    ' +\r\n '
    ' +\r\n '                 ' +\r\n '                 ' +\r\n '
    ' +\r\n '
    ' +\r\n '

    ' +\r\n '                 ' +\r\n '                 ' +\r\n '                 ' +\r\n '                 ' +\r\n '

    ' +\r\n '

    ' +\r\n '                 ' +\r\n '

    ' +\r\n '
    ' +\r\n '
    ' +\r\n '
    ' +\r\n '
    ' +\r\n '
    ' +\r\n '                 ' +\r\n '                 ' +\r\n '
    ' +\r\n '
    ' +\r\n '
    ' +\r\n '
  • ';\r\n }\r\n return $chtml;\r\n },\r\n followers_pagination:function($params){\r\n var $reload;\r\n var $loaded = false;\r\n var $afterFirstPagination = false;\r\n var $loungeFollowersLeft = $(\"#nurseslounge-lounge-followers .nurseslounge-lounge-followers-left\");\r\n var $followersList = $loungeFollowersLeft.find(\".followers-list:first\");\r\n var $paginationNav = $loungeFollowersLeft.find('.pagination-nav');\r\n var $previewHeight = $loungeFollowersLeft.find('.followers-list .preview:first').innerHeight();\r\n var $followersHeight = $followersList.innerHeight();\r\n var $pageSize = Math.round(($followersHeight/$previewHeight));\r\n var $resultInfo = $loungeFollowersLeft.find(\".result-info-count:first\");\r\n var $saveParams = $params;\r\n var $paginationObj;\r\n try{\r\n $paginationObj = libs.memoryGet('followers_pagination');\r\n if($paginationObj){\r\n $paginationObj.pagination('destroy');\r\n }\r\n }catch ($e) {\r\n }\r\n $paginationObj = $paginationNav.pagination({\r\n pageSize: $pageSize,\r\n showPageNumbers: true,\r\n showPrevious: true,\r\n showNext: true,\r\n showNavigator: true,\r\n showFirstOnEllipsisShow: true,\r\n showLastOnEllipsisShow: true,\r\n dataSource: window.location.protocol +'//'+ window.location.hostname + \"/lounge/followers/get\",\r\n locator: 'data.followers',\r\n ajax:{\r\n method: \"POST\",\r\n cache:false,\r\n dataType: \"json\",\r\n data:$params,\r\n beforeSend: function() {\r\n $followersList.html(nurseslounge_lounge_followers.followers_preview());\r\n },\r\n complete:function($data){\r\n libs.expire($data.responseJSON);\r\n }\r\n },\r\n totalNumberLocator: function($data) {\r\n return $data.data.total;\r\n },\r\n callback: function($data, $pagination) {\r\n $loaded = true;\r\n if($followersList.length > 0 && $followersList.offset().top > 0 && $afterFirstPagination){\r\n $('html, body').animate({scrollTop:$followersList.offset().top - 100});\r\n }else{\r\n $afterFirstPagination = true;\r\n }\r\n var $pageNumber = $pagination.pageNumber;\r\n var $pageSize = $pagination.pageSize;\r\n var $totalNumber = $pagination.totalNumber;\r\n var $first = $totalNumber > 0 ? (($pageNumber-1) * $pageSize) + 1 : 0;\r\n var $last = $totalNumber > 0 ? ($first + $data.length - 1) : 0;\r\n $paginationNav.removeClass('nurseslounge-lounge-followers-preload');\r\n $resultInfo.removeClass('nurseslounge-lounge-followers-preload').html('Showing '+$first+' - '+$last+' of '+$totalNumber+' results for Degrees');\r\n var $chtml = nurseslounge_lounge_followers.followers_item_html($data);\r\n libs.checkImageLoad($($chtml).find('img'), function () {\r\n $followersList.html('').html($chtml).promise().done(function () {\r\n nurseslounge_lounge_followers.followers_list_events($saveParams);\r\n });\r\n });\r\n }\r\n });\r\n libs.memorySave('lounge_pagination', $paginationObj);\r\n $reload = setTimeout(function(){\r\n if(!$loaded){\r\n nurseslounge_lounge_followers.followers_pagination($params);\r\n }else{\r\n clearTimeout($reload);\r\n }\r\n }, 10000);\r\n },\r\n followers_item_html:function($followers){\r\n var $chtml = '';\r\n $.each($followers, function($i, $v){\r\n var $img = $v.user.profile_image_root_wall;\r\n $chtml+='' +\r\n '
  • ' +\r\n '
    ' +\r\n '
    ' +\r\n '
    ' +\r\n '
    ' +\r\n ' \"profile\"' +\r\n '
    ' +\r\n '
    ' +\r\n '

    ' +\r\n $v.user.long_name+\r\n '

    ' +\r\n '

    ' +\r\n $v.user.profile.profile+\r\n '

    ' +\r\n '
    ' +\r\n '
    ' +\r\n '
    ' +\r\n '
    ' +\r\n '
    '+\r\n ' '+\r\n '
    ' +\r\n '
    ' +\r\n '
    ' +\r\n '
  • ';\r\n });\r\n return $chtml;\r\n },\r\n followers_list_events:function($saveParams){\r\n var $loungeFollowersLeft = $(\"#nurseslounge-lounge-followers .nurseslounge-lounge-followers-left\");\r\n var $followersList = $loungeFollowersLeft.find(\".followers-list:first\");\r\n $loungeFollowersLeft.find('.send-invite').unbind().click(function($e){\r\n $e.stopPropagation();\r\n var $that = $(this);\r\n var $item = $that.parents('.item:first');\r\n var $toUserId = $item.data('id');\r\n var $params = $.extend({}, $saveParams, {to_user_id:$toUserId, status_id:1});\r\n nurseslounge_myDashboard_colleagues.colleagues_home_set($params, function(){\r\n nurseslounge_lounge_followers.init($saveParams);\r\n });\r\n });\r\n $followersList.find('.item').unbind().click(function () {\r\n var $that = $(this);\r\n var $profileUrl = $that.data('url');\r\n window.open($profileUrl, '_blank');\r\n });\r\n },\r\n //Banners\r\n banners_location:function(cback){\r\n cback({\r\n 'banners':$(\"#nurseslounge-lounge-followers .nurseslounge-lounge-followers-right .banners\")\r\n });\r\n },\r\n //Task List Container\r\n task_list_container:function(cback){\r\n var $container = $(\"#nurseslounge-lounge-followers .nurseslounge-lounge-followers-right\");\r\n cback($container);\r\n },\r\n};\r\n","var nurseslounge_job = {\r\n jobDetail:function($params){\r\n nurseslounge_myDashboard_recommendations.init($params);\r\n nurseslounge_myDashboard_accountSettings.init($params);\r\n nurseslounge_lounge_header.init($params, 'nurseslounge_job', 'jobDetail');\r\n nurseslounge_job.submenu($params, function(){\r\n $(\".nav-underline a[data-id='jobDetail']\").click();\r\n });\r\n },\r\n jobDetail_sub:function($params){\r\n nurseslounge_job_jobDetail.init($params);\r\n },\r\n submenu:function($params, cback){\r\n $(\".nav-underline a\").unbind().click(function(){\r\n $(\".nav-underline a\").removeClass('active');\r\n nurseslounge_job.submenu_open(this, $(this).data('url'), $(this).data('id')+'_sub', $params)\r\n });\r\n nurseslounge_job.menu_selector();\r\n cback();\r\n },\r\n submenu_open:function($this, $url, $module, $params){\r\n $($this).addClass('active');\r\n router.pause();\r\n router.navigate($url);\r\n router.resume();\r\n $params = $.extend({}, $params, {user_id:libs.memoryGet('user_id')});\r\n libs.subrender($url, 'nurseslounge_job', $module, $params, 'POST');\r\n },\r\n menu_selector:function(){\r\n libs.globalUrl();\r\n }\r\n};\r\n","var nurseslounge_job_jobDetail = {\r\n init:function($params, cback){\r\n $params = $.extend({},$params, {action:'info',tab:'job_init'});\r\n nurseslounge_job_jobDetail.information_job_get($params, function($data){\r\n nurseslounge_job_jobDetail.information_know_more($params, $data);\r\n nurseslounge_job_jobDetail.information_rating($params, $data);\r\n nurseslounge_job_jobDetail.information_request_edit($params, $data);\r\n try{\r\n google.maps.event.addListener(window, \"load\", nurseslounge_job_jobDetail.information_location_map($data));\r\n }catch (e) {\r\n\r\n }\r\n if(cback != undefined){\r\n cback($data);\r\n }\r\n });\r\n nurseslounge_job_jobDetail.information_meet_our_recruiters(function($config){\r\n nurseslounge_lounge_overview.information_meet_our_recruiters_engine($config);\r\n });\r\n nurseslounge_job_jobDetail.banners_location(function($config){\r\n nurseslounge_myDashboard_myProfile.banners_engine($config);\r\n });\r\n },\r\n information_job_get:function($params, cback){\r\n $.ajax({\r\n url: \"/job/get\",\r\n method: \"POST\",\r\n cache:false,\r\n dataType: \"json\",\r\n data:$params,\r\n success: function ($data) {\r\n libs.expire($data);\r\n if($data.status == 'error'){\r\n $(\"#nurseslounge-job-information-edit-modal\").modal('hide');\r\n $(\"#nurseslounge-job-request-info-modal\").modal('hide');\r\n }\r\n cback($data);\r\n }\r\n });\r\n },\r\n information_know_more:function($params, $data){\r\n var $isEmail = $data && $data.data && $data.data.job && $data.data.job.contact_is_email ? $data.data.job.contact_is_email : false;\r\n var $contactEmailUrl = $data && $data.data && $data.data.job && $data.data.job.contact_email_url ? $data.data.job.contact_email_url : false;\r\n var $title = $data && $data.data && $data.data.job && $data.data.job.title ? $data.data.job.title : null;\r\n var $loungeLink = $data && $data.data && $data.data.job && $data.data.job.lounge && $data.data.job.lounge.link ? $data.data.job.lounge.link : null;\r\n var $jobInformation = $(\"#nurseslounge-job-information\");\r\n var $jobInformationRight = $jobInformation.find('.nurseslounge-job-information-right:first');\r\n var $requestInfo = $jobInformationRight.find(\".know-more .option[data-action='request-info']\");\r\n var $jobInformationLeft = $jobInformation.find('.nurseslounge-job-information-left:first');\r\n var $applyOnWebsite = $jobInformationLeft.find(\".apply-on-website\");\r\n var $whyWorkHere = $jobInformationLeft.find(\".why-work-here\");\r\n var $body = 'I saw your job on Nurses Lounge and would like to apply.';\r\n var $subject = 'Application for '+$title+' - via Nurses Lounge';\r\n $whyWorkHere.unbind().click(function(){\r\n router.navigate($loungeLink,true);\r\n }).html('Why Work Here').removeClass('disabled');\r\n $requestInfo.unbind().click(function(){\r\n nurseslounge_job_jobDetail.information_request_info_events($params, $data);\r\n });\r\n $applyOnWebsite.unbind().click(function(){\r\n nurseslounge_job_jobDetail.information_apply_set('apply', $params,function($data){\r\n var $statistics = $jobInformationRight.find('.statistics:first');\r\n libs.refreshBoxFrom($statistics, $params, function(){\r\n if($isEmail){\r\n window.open('mailto:'+$contactEmailUrl+'?body='+$body+'&subject='+$subject, '_blank');\r\n }else{\r\n window.open($contactEmailUrl, '_blank');\r\n }\r\n });\r\n });\r\n }).html('Apply on Website').removeClass('disabled');\r\n },\r\n information_apply_set:function($action, $params, cback){\r\n $.ajax({\r\n url: \"/job/set\",\r\n method: \"POST\",\r\n cache:false,\r\n dataType: \"json\",\r\n data:$.extend({},$params, {action:$action}),\r\n success: function ($data) {\r\n libs.expire($data);\r\n if($data.status == 'error'){\r\n $(\"#nurseslounge-job-information-edit-modal\").modal('hide');\r\n $(\"#nurseslounge-job-request-info-modal\").modal('hide');\r\n }\r\n cback($data);\r\n }\r\n });\r\n },\r\n information_rating:function($params, $data){\r\n var $typeId = $data.data.job.lounge.lounge_type_id ? $data.data.job.lounge.lounge_type_id : 0;\r\n var $jobInformation = $(\"#nurseslounge-job-information\");\r\n var $reviewModal = $(\"#nurseslounge-lounge-information-review-modal\");\r\n var $jobInformationRight = $jobInformation.find('.nurseslounge-job-information-right:first');\r\n var $ratingFirst = $jobInformationRight.find('.rating-stars:first');\r\n var $ratingCount = $jobInformationRight.find('.rating-count:first');\r\n var $addReviewFirst = $jobInformationRight.find('.add-review:first');\r\n var $deleteReviewFirst = $jobInformationRight.find('.delete-review:first');\r\n $ratingFirst.unbind().click(function(){\r\n nurseslounge_lounge_overview.information_review($typeId, $params, $data, function(){\r\n libs.refreshBoxFrom('.review-box', $params, function(){\r\n nurseslounge_job_jobDetail.init($params);\r\n $reviewModal.modal('hide');\r\n });\r\n });\r\n });\r\n $ratingCount.unbind().click(function(){\r\n nurseslounge_lounge_overview.information_review($typeId, $params, $data, function(){\r\n libs.refreshBoxFrom('.review-box', $params, function(){\r\n nurseslounge_job_jobDetail.init($params);\r\n $reviewModal.modal('hide');\r\n });\r\n });\r\n });\r\n $addReviewFirst.unbind().click(function(){\r\n nurseslounge_lounge_overview.information_review($typeId, $params, $data, function(){\r\n libs.refreshBoxFrom('.review-box', $params, function(){\r\n nurseslounge_job_jobDetail.init($params);\r\n $reviewModal.modal('hide');\r\n });\r\n });\r\n });\r\n $deleteReviewFirst.unbind().click(function(){\r\n if(confirm('Are you sure you want to delete your review?')){\r\n nurseslounge_lounge_overview.information_remove_review($params, function(){\r\n libs.refreshBoxFrom('.review-box', $params, function(){\r\n nurseslounge_job_jobDetail.init($params);\r\n $reviewModal.modal('hide');\r\n });\r\n });\r\n }\r\n });\r\n },\r\n information_location_map:function($data){\r\n var $location = $data && $data.data && $data.data.job && $data.data.job.location && $data.data.job.location ? $data.data.job.location : null;\r\n if($location && $location.address_latitude && $location.address_longitude && $location.address_is_unmappable == 0){\r\n var $position = new google.maps.LatLng(parseFloat($location.address_latitude), parseFloat($location.address_longitude));\r\n var $iconUrl = './../../../../bimg/NursesLounge/active.png';\r\n var $map = new google.maps.Map(document.getElementById('nurseslounge-job-information-right-map'), {\r\n center:$position,\r\n mapTypeId: google.maps.MapTypeId.ROADMAP,\r\n mapTypeControl: false,\r\n streetViewControl: false,\r\n fullscreenControl: false,\r\n zoom: 15\r\n });\r\n $map.setTilt(0);\r\n var $marker = new google.maps.Marker({\r\n position:$position,\r\n map: $map,\r\n animation: google.maps.Animation.DROP,\r\n icon: {url:$iconUrl, scaledSize: (new google.maps.Size(20, 35))},\r\n });\r\n }\r\n },\r\n information_request_info_events:function($params, $data){\r\n var $loungeLink = $data && $data.data && $data.data.job && $data.data.job.lounge && $data.data.job.lounge.link ? $data.data.job.lounge.link : null;\r\n var $modal = $(\"#nurseslounge-job-request-info-modal\");\r\n var $container = $modal.find(\".request-info-modal-container\");\r\n nurseslounge_job_jobDetail.information_request_info_request($params, function($chtml){\r\n $container.html('').html($chtml).promise().done(function(){\r\n $container.find(\"form input[name='userPhoneNumber']\").mask('+(00) 000-000-0000');\r\n nurseslounge_job_jobDetail.information_request_info_validate(function($form){\r\n $params = $.extend({},$params, libs.getObjForm($form));\r\n nurseslounge_job_jobDetail.information_apply_set('info', $params, function(){\r\n var $jobInformation = $(\"#nurseslounge-job-information\");\r\n var $jobInformationRight = $jobInformation.find('.nurseslounge-job-information-right:first');\r\n var $statistics = $jobInformationRight.find('.statistics:first');\r\n libs.refreshBoxFrom($statistics, $params, function(){\r\n $modal.modal('hide');\r\n });\r\n });\r\n });\r\n /*\r\n var $reviewProfileLink = $modal.find(\".review-profile-link\");\r\n $reviewProfileLink.unbind().click(function(){\r\n router.navigate($loungeLink,true);\r\n $modal.modal('hide');\r\n });\r\n */\r\n $modal.modal('show');\r\n });\r\n });\r\n },\r\n information_request_info_request:function($params, cback){\r\n $.ajax({\r\n type: 'POST',\r\n url: '/job/requestInfoView/get',\r\n data: $params,\r\n method: \"POST\",\r\n cache:false,\r\n dataType: \"html\",\r\n success: function ($data) {\r\n libs.expire($data);\r\n if($data.status == 'error'){\r\n $(\"#nurseslounge-job-information-edit-modal\").modal('hide');\r\n $(\"#nurseslounge-job-request-info-modal\").modal('hide');\r\n }\r\n cback($data);\r\n }\r\n });\r\n },\r\n information_request_info_validate:function(cback){\r\n var $validator = $(\"#nurseslounge-job-request-info-modal form\").validate({\r\n onsubmit: true,\r\n ignore: \"*:not(.validate)\",\r\n debug: true,\r\n rules: {\r\n jobTitle: {\r\n required: true,\r\n minlength: 2,\r\n maxlength: 600\r\n },\r\n userName: {\r\n required: true,\r\n minlength: 2,\r\n maxlength: 600\r\n },\r\n userEmail: {\r\n required: true,\r\n email:true,\r\n minlength: 2,\r\n maxlength: 191\r\n },\r\n userPhoneNumber: {\r\n required: true,\r\n minlength: 2,\r\n maxlength: 18\r\n },\r\n userZipCode: {\r\n required: false,\r\n minlength: 2,\r\n maxlength: 191\r\n }\r\n },\r\n messages: {\r\n jobTitle: {\r\n required: \"The job title is required\",\r\n minlength: \"The job title must have at least 2 characters\",\r\n maxlength: \"The job title cannot exceed 600 characters\"\r\n },\r\n userName: {\r\n required: \"The user name is required\",\r\n minlength: \"The user name must have at least 2 characters\",\r\n maxlength: \"The user name cannot exceed 600 characters\"\r\n },\r\n userEmail: {\r\n required: \"The user email is required\",\r\n email:\"The user email is invalid\",\r\n minlength: \"The user email must have at least 2 characters\",\r\n maxlength: \"The user email cannot exceed 191 characters\"\r\n },\r\n userPhoneNumber: {\r\n required: \"The user phone is required\",\r\n minlength: \"The user phone must have at least 2 characters\",\r\n maxlength: \"The user phone cannot exceed 18 characters\"\r\n },\r\n userZipCode: {\r\n required: \"The user zip code is not required\",\r\n minlength: \"The user zip code must have at least 2 characters\",\r\n maxlength: \"The user zip code cannot exceed 191 characters\"\r\n }\r\n },\r\n errorPlacement: function($error, $element){\r\n var $ele = $($element);\r\n var $name = $ele.attr(\"name\");\r\n if(!$ele.hasClass('is-invalid')){\r\n $ele.addClass('is-invalid');\r\n }\r\n $(\".\"+$name+\"_validate\").html($($error).text()).show();\r\n },\r\n success: function($error, $element) {\r\n var $ele = $($element);\r\n var $name = $ele.attr(\"name\");\r\n if($ele.hasClass('is-invalid')){\r\n $ele.removeClass('is-invalid');\r\n }\r\n $(\".\"+$name+\"_validate\").html('').hide();\r\n },\r\n submitHandler: function($form) {\r\n cback($form);\r\n return false;\r\n }\r\n });\r\n },\r\n\r\n information_request_info_qr:function($params, $loungeLink){\r\n var $qr = $(\"#nurseslounge-job-request-info-qr\");\r\n var $form = $qr.find(\"form\");\r\n $form.find(\"input[name='userPhoneNumber']\").mask('+(00) 000-000-0000');\r\n nurseslounge_job_jobDetail.information_request_info_qr_validate(function($form){\r\n nurseslounge_job_jobDetail.information_request_info_qr_set($params, libs.getObjForm($form), function($data){\r\n window.open($data.data.job_link, '_self');\r\n });\r\n });\r\n /*\r\n var $reviewProfileLink = $qr.find(\".review-profile-link\");\r\n $reviewProfileLink.unbind().click(function(){\r\n window.open($loungeLink, '_self');\r\n });\r\n */\r\n },\r\n information_request_info_qr_validate:function(cback){\r\n var $validator = $(\"#nurseslounge-job-information-qr form\").validate({\r\n onsubmit: true,\r\n ignore: \"*:not(.validate)\",\r\n debug: true,\r\n rules: {\r\n jobTitle: {\r\n required: true,\r\n minlength: 2,\r\n maxlength: 600\r\n },\r\n userName: {\r\n required: true,\r\n minlength: 2,\r\n maxlength: 600\r\n },\r\n userEmail: {\r\n required: true,\r\n email:true,\r\n minlength: 2,\r\n maxlength: 191\r\n },\r\n userPhoneNumber: {\r\n required: true,\r\n minlength: 2,\r\n maxlength: 18\r\n },\r\n userZipCode: {\r\n required: false,\r\n minlength: 2,\r\n maxlength: 191\r\n }\r\n },\r\n messages: {\r\n jobTitle: {\r\n required: \"The job title is required\",\r\n minlength: \"The job title must have at least 2 characters\",\r\n maxlength: \"The job title cannot exceed 600 characters\"\r\n },\r\n userName: {\r\n required: \"The user name is required\",\r\n minlength: \"The user name must have at least 2 characters\",\r\n maxlength: \"The user name cannot exceed 600 characters\"\r\n },\r\n userEmail: {\r\n required: \"The user email is required\",\r\n email:\"The user email is invalid\",\r\n minlength: \"The user email must have at least 2 characters\",\r\n maxlength: \"The user email cannot exceed 191 characters\"\r\n },\r\n userPhoneNumber: {\r\n required: \"The user phone is required\",\r\n minlength: \"The user phone must have at least 2 characters\",\r\n maxlength: \"The user phone cannot exceed 18 characters\"\r\n },\r\n userZipCode: {\r\n required: \"The user zip code is not required\",\r\n minlength: \"The user zip code must have at least 2 characters\",\r\n maxlength: \"The user zip code cannot exceed 191 characters\"\r\n }\r\n },\r\n errorPlacement: function($error, $element){\r\n var $ele = $($element);\r\n var $name = $ele.attr(\"name\");\r\n if(!$ele.hasClass('is-invalid')){\r\n $ele.addClass('is-invalid');\r\n }\r\n $(\".\"+$name+\"_validate\").html($($error).text()).show();\r\n },\r\n success: function($error, $element) {\r\n var $ele = $($element);\r\n var $name = $ele.attr(\"name\");\r\n if($ele.hasClass('is-invalid')){\r\n $ele.removeClass('is-invalid');\r\n }\r\n $(\".\"+$name+\"_validate\").html('').hide();\r\n },\r\n submitHandler: function($form) {\r\n cback($form);\r\n return false;\r\n }\r\n });\r\n },\r\n information_request_info_qr_set:function($params, $form, cback){\r\n $.ajax({\r\n url: \"/job/information/qr/requestInfo/\"+$params.hash+\"/set\",\r\n method: \"POST\",\r\n cache:false,\r\n dataType: \"json\",\r\n data:$.extend({},$params, $form),\r\n success: function ($data) {\r\n libs.expire($data);\r\n if(cback != undefined){\r\n cback($data);\r\n }\r\n }\r\n });\r\n },\r\n //Admin\r\n information_request_edit:function($params, $data){\r\n var $credential = $data && $data.data && $data.data.user_credential ? $data.data.user_credential : [];\r\n $credential = $credential.map(function($x){return parseInt($x);});\r\n var $allowTabs = {\r\n 'job_information': $.inArray(19, $credential) != -1 ? true : false,\r\n 'job_location': $.inArray(19, $credential) != -1 ? true : false\r\n };\r\n var $allowTabsFiltered = $allowTabs;\r\n $allowTabs = {};\r\n $.each($allowTabsFiltered, function($k, $v) {var $newObj = {};$newObj[$k]=$v;if($v){$.extend($allowTabs, $newObj);}});\r\n var $information = $(\"#nurseslounge-job-information\");\r\n var $informationRight = $information.find('.nurseslounge-job-information-right:first .administrator:first');\r\n var $options = $informationRight.find('.option');\r\n $options.each(function(){\r\n var $that = $(this);\r\n var $action = $that.data('action');\r\n if(\r\n $action == 'create' ||\r\n $action == 'edit' ||\r\n $action == 'delete'\r\n ) {\r\n $that.unbind().click(function () {\r\n var $tab = null;\r\n $.each($allowTabs, function($i, $v){\r\n if($v){\r\n $tab = $i;\r\n return false;\r\n }\r\n });\r\n if(\r\n $tab && $action == 'create' ||\r\n $tab && $action == 'edit'\r\n ){\r\n nurseslounge_job_jobDetail.information_request_select_tab($action, $tab, $allowTabs, $params, function () {\r\n $(\"#nurseslounge-job-information-edit-modal\").scrollTop(0);\r\n $(\"#nurseslounge-job-information-edit-modal\").modal('show');\r\n });\r\n }else\r\n if($action == 'delete'){\r\n if(confirm('Are you sure you want to delete this job?')){\r\n $params = $.extend({},$params, {action:$action,tab:$tab});\r\n nurseslounge_job_jobDetail.information_apply_set($action, $params, function($data){\r\n if($data.status == 'success'){\r\n router.navigate('/lounge/'+$data.data.key);\r\n }\r\n });\r\n }\r\n }\r\n });\r\n }\r\n });\r\n },\r\n information_request_select_tab:function($action, $tab, $allowTabs, $params, cback){\r\n nurseslounge_job_jobDetail.information_request_tabs_events($action, $tab, $allowTabs, $params,function(){\r\n $params = $.extend({},$params, {user_id:libs.memoryGet('user_id'), tab:$tab, action:$action});\r\n nurseslounge_job_jobDetail.information_request_load($tab, $params, function(){\r\n switch ($tab) {\r\n case 'job_information':\r\n nurseslounge_job_jobDetail.information_job_get($params, function($data){\r\n nurseslounge_job_jobDetail.information_request_tab_information($action, $tab, $allowTabs, $params, $data, cback);\r\n });\r\n break;\r\n case 'job_location':\r\n nurseslounge_job_jobDetail.information_job_get($params, function($data){\r\n nurseslounge_job_jobDetail.information_request_tab_location($action, $tab, $allowTabs, $params, $data, cback);\r\n });\r\n break;\r\n\r\n }\r\n });\r\n });\r\n },\r\n information_request_tabs_events:function($action, $tab, $allowTabs, $params, cback){\r\n //Disable All\r\n $('#nurseslounge-job-information-edit-modal .nav-pills .nav-link').addClass('disabled').removeClass('active');\r\n $('#nurseslounge-job-information-edit-modal .job-information-modal-container .tab-pane .container').html('');\r\n //Events\r\n $('#nurseslounge-job-information-edit-modal .nav-pills a[data-toggle=\"tab\"]').unbind().on('shown.bs.tab', function ($e) {\r\n var $selectedTab = $e.currentTarget.dataset.target.replace('#','');\r\n if($.inArray($selectedTab, Object.keys($allowTabs)) > -1){\r\n nurseslounge_job_jobDetail.information_request_select_tab($action, $selectedTab, $allowTabs, $params, function(){\r\n $(\"#nurseslounge-job-information-edit-modal\").scrollTop(0);\r\n });\r\n }\r\n });\r\n //Enable selected\r\n $.each($allowTabs, function ($i, $v) {\r\n $(\"#\"+$v).removeClass('active').removeClass('show');\r\n $('#nurseslounge-job-information-edit-modal .nav-pills .nav-link[data-target=\"#'+$i+'\"]').removeClass('disabled');\r\n });\r\n $('#nurseslounge-job-information-edit-modal .nav-pills .nav-link[data-target=\"#'+$tab+'\"]').addClass('active');\r\n $(\"#\"+$tab).addClass('active').addClass('show');\r\n if($action == 'create'){\r\n $(\"#nurseslounge-job-information-edit-modal .modal-title\").html('Create');\r\n }\r\n if($action == 'edit'){\r\n $(\"#nurseslounge-job-information-edit-modal .modal-title\").html('Edit');\r\n }\r\n if(cback != undefined){\r\n cback();\r\n }\r\n },\r\n information_request_load:function($tab, $params, cback){\r\n nurseslounge_job_jobDetail.information_request_edit_view_get($tab, $params, function($chtml){\r\n var $images = $($chtml).find('img');\r\n libs.checkImageLoad($images, function(){\r\n $(\"#\"+$tab+\" .container\").html($chtml).promise().done(function(){\r\n if(cback != undefined){\r\n cback();\r\n }\r\n });\r\n });\r\n });\r\n },\r\n information_request_edit_view_get:function($tab, $params, cback){\r\n $params = $.extend({},$params,{user_id:libs.memoryGet('user_id'),tab:$tab});\r\n $.ajax({\r\n type: 'POST',\r\n url: '/job/informationView/get',\r\n data: $params,\r\n method: \"POST\",\r\n cache:false,\r\n dataType: \"html\",\r\n success: function ($data) {\r\n libs.expire($data);\r\n cback($data);\r\n }\r\n });\r\n },\r\n\r\n information_request_tab_information:function($action, $tab, $allowTabs, $params, $data, cback){\r\n var $job = $data && $data.data && $data.data.job ? $data.data.job : null;\r\n var $jobListingType = $data && $data.data && $data.data.job_listing_type ? $data.data.job_listing_type : null;\r\n var $jobEmployerType = $data && $data.data && $data.data.job_employer_type ? $data.data.job_employer_type : null;\r\n var $location = $data && $data.data && $data.data.job && $data.data.job.location ? $data.data.job.location : null;\r\n var $modal = $('#nurseslounge-job-information-edit-modal');\r\n var $information = $modal.find('.job-information-modal-container #job_information .container');\r\n var $informationForm = $information.find('form:first');\r\n var $description = $informationForm.find('.description');\r\n var $jobListingTypeOptions = '';\r\n $jobListingTypeOptions += '';\r\n $.each($jobListingType, function($i, $v){\r\n $jobListingTypeOptions += '';\r\n });\r\n var $jobEmployerTypeOptions = '';\r\n $jobEmployerTypeOptions += '';\r\n $.each($jobEmployerType, function($i, $v){\r\n $jobEmployerTypeOptions += '';\r\n });\r\n $informationForm.find(\"select[name='jobListingType']\").html($jobListingTypeOptions);\r\n $informationForm.find(\"select[name='jobEmployerType']\").html($jobEmployerTypeOptions).promise().done(function(){\r\n nurseslounge_job_jobDetail.information_request_tab_information_validate(function($form){\r\n var $formObj = libs.getObjForm($form);\r\n var $formDescription = $description.summernote('code');\r\n var $newParams = $.extend({},$params, $formObj);\r\n $newParams = $.extend({},$newParams, {description:$formDescription,tab:$tab});\r\n nurseslounge_job_jobDetail.information_apply_set($action, $newParams, function($data){\r\n var $action = $data.data.action;\r\n var $jobKey = $data.data.job_key;\r\n $params = $.extend({},$params, {job_key:$jobKey,action:$action});\r\n if($data.status == 'success'){\r\n if($newParams.action == 'create'){\r\n router.navigate($data.data.job_link,true);\r\n nurseslounge_job_jobDetail.init($params, function($data){\r\n nurseslounge_job_jobDetail.information_request_select_tab($action, $tab, $allowTabs, $params, cback);\r\n });\r\n }\r\n if($newParams.action == 'edit'){\r\n libs.refreshBoxFrom('.page-contents', $params, function(){\r\n nurseslounge_job_jobDetail.init($params, function($data){\r\n nurseslounge_job_jobDetail.information_request_select_tab($action, $tab, $allowTabs, $params, cback);\r\n });\r\n });\r\n }\r\n }else{\r\n $modal.modal('hide');\r\n }\r\n });\r\n });\r\n try{\r\n $description.summernote('destroy');\r\n }catch (e) {\r\n\r\n }\r\n var $stripTags = function ($context) {\r\n var $ui = $.summernote.ui;\r\n var $button = $ui.button({\r\n contents: 'Remove Formatting',\r\n tooltip: 'Strip Tags',\r\n click: function () {\r\n var $text = [];\r\n var $code = $description.summernote(\"code\");\r\n $($code).each(function(){\r\n $text.push('

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

    ');\r\n });\r\n $code = $text.join('');\r\n $description.summernote(\"code\", $code);\r\n }\r\n });\r\n return $button.render();\r\n }\r\n $description.summernote({\r\n placeholder: 'Description ...',\r\n height: '400px',\r\n width: '100%',\r\n focus: true,\r\n disableResizeEditor: true,\r\n dialogsInBody: true,\r\n dialogsFade: true,\r\n codeviewFilter: true,\r\n codeviewIframeFilter: true,\r\n spellCheck: true,\r\n disableGrammar: false,\r\n styleTags: [\r\n 'p',\r\n 'pre', 'h1', 'h2', 'h3', 'h4', 'h5', 'h6'\r\n ],\r\n fontNames: ['Arial', 'Arial Black', 'Comic Sans MS', 'Courier New'],\r\n fontSizeUnits: ['pt', 'px'],\r\n toolbar: [\r\n ['style', ['style']],\r\n ['font', ['fontname', 'fontsize', 'fontsizeunit']],\r\n ['font', ['forecolor', 'backcolor']],\r\n ['font', ['bold', 'italic', 'underline']],\r\n ['para', ['ul', 'ol', 'paragraph']],\r\n ['para', ['height']],\r\n ['stripTags', ['stripTags']]\r\n ],\r\n buttons: {\r\n stripTags: $stripTags\r\n }\r\n });\r\n if($job.internal_id) {\r\n $informationForm.find(\"input[name='jobInternalId']\").val($job.internal_id);\r\n }\r\n if($job.title) {\r\n $informationForm.find(\"input[name='jobTitle']\").val($job.title);\r\n }\r\n if($job.signing_bonus) {\r\n $informationForm.find(\"input[name='jobSigningBonus']\").val($job.signing_bonus);\r\n }\r\n if($job.education_level) {\r\n $informationForm.find(\"input[name='jobEducationLevel']\").val($job.education_level);\r\n }\r\n if($job.years_of_experience) {\r\n $informationForm.find(\"input[name='jobYearsOfExperience']\").val($job.years_of_experience);\r\n }\r\n if($job.listing_type_id) {\r\n $informationForm.find(\"select[name='jobListingType']\").val($job.listing_type_id);\r\n }\r\n if($job.employer_type_id) {\r\n $informationForm.find(\"select[name='jobEmployerType']\").val($job.employer_type_id);\r\n }\r\n if($job.shift) {\r\n $informationForm.find(\"input[name='jobShift']\").val($job.shift);\r\n }\r\n if($job.shift_length) {\r\n $informationForm.find(\"input[name='jobShiftLength']\").val($job.shift_length);\r\n }\r\n if($job.schedule) {\r\n $informationForm.find(\"input[name='jobSchedule']\").val($job.schedule);\r\n }\r\n if($job.compensation) {\r\n $informationForm.find(\"input[name='jobCompensation']\").val($job.compensation);\r\n }\r\n if($job.contact_email_url) {\r\n $informationForm.find(\"input[name='jobContactEmailUrl']\").val($job.contact_email_url);\r\n }\r\n if($job.description) {\r\n $description.summernote('code', $job.description);\r\n }\r\n if($location && $location.name) {\r\n $informationForm.find('input[name=\"jobEmployerName\"]').val($location.name);\r\n }\r\n });\r\n if(cback != undefined){\r\n cback();\r\n }\r\n },\r\n information_request_tab_information_validate:function(cback){\r\n var $validator;\r\n try {\r\n $validator = $(\"#job_information form\").validate();\r\n $validator.destroy();\r\n }catch (e) {\r\n\r\n }\r\n $validator = $(\"#job_information form\").validate({\r\n onsubmit: true,\r\n debug: true,\r\n ignore: '*:not(.validate)',\r\n rules: {\r\n jobEmployerName: {\r\n required: true,\r\n minlength: 3,\r\n maxlength: 600\r\n },\r\n jobTitle: {\r\n required: true,\r\n minlength: 3,\r\n maxlength: 600\r\n },\r\n jobInternalId: {\r\n required: false,\r\n minlength: 3,\r\n maxlength: 600\r\n },\r\n jobSigningBonus: {\r\n required: false,\r\n minlength: 3,\r\n maxlength: 600\r\n },\r\n jobEducationLevel: {\r\n required: false,\r\n minlength: 3,\r\n maxlength: 600\r\n },\r\n jobYearsOfExperience: {\r\n required: false,\r\n minlength: 3,\r\n maxlength: 600\r\n },\r\n jobListingType: {\r\n required: true\r\n },\r\n jobEmployerType: {\r\n required: true\r\n },\r\n jobShift: {\r\n required: false,\r\n minlength: 3,\r\n maxlength: 600\r\n },\r\n jobShiftLength: {\r\n required: false,\r\n minlength: 3,\r\n maxlength: 600\r\n },\r\n jobSchedule: {\r\n required: false,\r\n minlength: 3,\r\n maxlength: 600\r\n },\r\n jobCompensation: {\r\n required: false,\r\n minlength: 3,\r\n maxlength: 600\r\n },\r\n jobContactEmailUrl: {\r\n required: true,\r\n minlength: 3,\r\n maxlength: 600\r\n },\r\n },\r\n messages: {\r\n jobEmployerName: {\r\n required: \"The job employer name is required\",\r\n minlength: \"The job employer name must have at least 3 characters\",\r\n maxlength: \"The job employer name cannot exceed 600 characters\"\r\n },\r\n jobTitle: {\r\n required: \"The job title is required\",\r\n minlength: \"The job title must have at least 3 characters\",\r\n maxlength: \"The job title cannot exceed 600 characters\"\r\n },\r\n jobInternalId: {\r\n required: \"The job internal id is not required\",\r\n minlength: \"The job internal must have at least 3 characters\",\r\n maxlength: \"The job internal cannot exceed 600 characters\"\r\n },\r\n jobSigningBonus: {\r\n required: \"The job signing bonus is not required\",\r\n minlength: \"The job signing bonus must have at least 3 characters\",\r\n maxlength: \"The job signing bonus cannot exceed 600 characters\"\r\n },\r\n jobEducationLevel: {\r\n required: \"The job education level is not required\",\r\n minlength: \"The job education level must have at least 3 characters\",\r\n maxlength: \"The job education level cannot exceed 600 characters\"\r\n },\r\n jobYearsOfExperience: {\r\n required: \"The job years of experience is not required\",\r\n minlength: \"The job years of experience must have at least 3 characters\",\r\n maxlength: \"The job years of experience cannot exceed 600 characters\"\r\n },\r\n jobListingType: {\r\n required: \"The job listing type is required\"\r\n },\r\n jobEmployerType: {\r\n required: \"The job employer type is required\"\r\n },\r\n jobShift: {\r\n required: \"The job shift is not required\",\r\n minlength: \"The job shift must have at least 3 characters\",\r\n maxlength: \"The job shift cannot exceed 600 characters\"\r\n },\r\n jobShiftLength: {\r\n required: \"The job shift length is not required\",\r\n minlength: \"The job shift length have at least 3 characters\",\r\n maxlength: \"The job shift length cannot exceed 600 characters\"\r\n },\r\n jobSchedule: {\r\n required: \"The job schedule is not required\",\r\n minlength: \"The job schedule have at least 3 characters\",\r\n maxlength: \"The job schedule cannot exceed 600 characters\"\r\n },\r\n jobCompensation: {\r\n required: \"The job compensation is not required\",\r\n minlength: \"The job compensation have at least 3 characters\",\r\n maxlength: \"The job compensation cannot exceed 600 characters\"\r\n },\r\n jobContactEmailUrl: {\r\n required: \"The job contact email or url is required\",\r\n minlength: \"The job contact email or url have at least 3 characters\",\r\n maxlength: \"The job contact email or url cannot exceed 600 characters\"\r\n },\r\n },\r\n errorPlacement: function($error, $element){\r\n var $ele = $($element);\r\n var $name = $ele.attr(\"name\");\r\n if(!$ele.hasClass('is-invalid')){\r\n $ele.addClass('is-invalid');\r\n }\r\n $(\".\"+$name+\"_validate\").html($($error).text()).show();\r\n },\r\n success: function($error, $element) {\r\n var $ele = $($element);\r\n var $name = $ele.attr(\"name\");\r\n if($ele.hasClass('is-invalid')){\r\n $ele.removeClass('is-invalid');\r\n }\r\n $(\".\"+$name+\"_validate\").html('').hide();\r\n },\r\n submitHandler: function($form) {\r\n cback($form);\r\n return false;\r\n }\r\n });\r\n },\r\n\r\n information_request_tab_location:function($action, $tab, $allowTabs, $params, $data, cback){\r\n var $location = $data && $data.data && $data.data.job && $data.data.job.location ? $data.data.job.location : null;\r\n var $states = $data && $data.data && $data.data.states ? $data.data.states :null;\r\n var $addressStateId = $data && $data.data && $data.data.address_state_id ? $data.data.address_state_id : null;\r\n var $modal = $('#nurseslounge-job-information-edit-modal');\r\n var $jobLocation = $modal.find('.job-information-modal-container #job_location .container');\r\n var $jobLocationForm = $jobLocation.find('form:first');\r\n var $stateChtml = '';\r\n $stateChtml += '';\r\n $.each($states, function($i, $v){\r\n $stateChtml += '';\r\n });\r\n $jobLocationForm.find('select[name=\"jobState\"]').html($stateChtml).promise().done(function(){\r\n nurseslounge_job_jobDetail.information_request_tab_location_validate(function($form){\r\n var $formObj = libs.getObjForm($form);\r\n var $newParams = $.extend({},$params, $formObj);\r\n $newParams = $.extend({},$newParams, {tab:$tab});\r\n nurseslounge_job_jobDetail.information_apply_set($action, $newParams, function($data){\r\n var $action = $data.data.action;\r\n var $jobKey = $data.data.job_key;\r\n $params = $.extend({},$params, {job_key:$jobKey,action:$action});\r\n if($data.status == 'success'){\r\n router.navigate($data.data.job_link,true);\r\n nurseslounge_job_jobDetail.init($params, function($data){\r\n nurseslounge_job_jobDetail.information_request_select_tab($action, $tab, $allowTabs, $params, cback);\r\n });\r\n }else{\r\n $modal.modal('hide');\r\n }\r\n });\r\n });\r\n if($location && $location.facility) {\r\n $jobLocationForm.find('input[name=\"jobFacility\"]').val($location.facility);\r\n }\r\n if($location && $location.address_street) {\r\n $jobLocationForm.find('input[name=\"jobStreet\"]').val($location.address_street);\r\n }\r\n if($location && $location.address_city) {\r\n $jobLocationForm.find('input[name=\"jobCity\"]').val($location.address_city);\r\n }\r\n if($addressStateId) {\r\n $jobLocationForm.find('select[name=\"jobState\"]').val($addressStateId);\r\n }\r\n if($location && $location.address_zip_code) {\r\n $jobLocationForm.find('input[name=\"jobZipCode\"]').val($location.address_zip_code);\r\n }\r\n if($location && $location.address_latitude && $location.address_longitude) {\r\n nurseslounge_job_jobDetail.information_request_tab_location_map($location, function () {\r\n if ($location.address_is_unmappable == 0) {\r\n $jobLocationForm.find('.lat').html($location.address_latitude).show();\r\n $jobLocationForm.find('.lng').html($location.address_longitude).show();\r\n $jobLocationForm.find('#job-edit-location-map').show();\r\n } else {\r\n $jobLocationForm.find('.lat').hide();\r\n $jobLocationForm.find('.lng').hide();\r\n $jobLocationForm.find('#job-edit-location-map').hide();\r\n }\r\n });\r\n }\r\n });\r\n if(cback != undefined){\r\n cback();\r\n }\r\n },\r\n information_request_tab_location_validate:function(cback){\r\n var $validator;\r\n try {\r\n $validator = $(\"#job_location form\").validate();\r\n $validator.destroy();\r\n }catch (e) {\r\n\r\n }\r\n $validator = $(\"#job_location form\").validate({\r\n onsubmit: true,\r\n debug: true,\r\n ignore: '*:not(.validate)',\r\n rules: {\r\n jobFacility: {\r\n required: true,\r\n minlength: 3,\r\n maxlength: 600\r\n },\r\n jobStreet: {\r\n required: false,\r\n minlength: 3,\r\n maxlength: 600\r\n },\r\n jobCity: {\r\n required: false,\r\n minlength: 3,\r\n maxlength: 600\r\n },\r\n jobState: {\r\n required: true\r\n },\r\n jobZipCode: {\r\n required: false,\r\n minlength: 3,\r\n maxlength: 600\r\n }\r\n },\r\n messages: {\r\n jobFacility: {\r\n required: \"The job facility is required\",\r\n minlength: \"The job facility must have at least 3 characters\",\r\n maxlength: \"The job facility cannot exceed 600 characters\"\r\n },\r\n jobStreet: {\r\n required: \"The job street is not required\",\r\n minlength: \"The job street must have at least 3 characters\",\r\n maxlength: \"The job street cannot exceed 600 characters\"\r\n },\r\n jobCity: {\r\n required: \"The job city is not required\",\r\n minlength: \"The job city must have at least 3 characters\",\r\n maxlength: \"The job city cannot exceed 600 characters\"\r\n },\r\n jobState: {\r\n required: \"The job state is required\"\r\n },\r\n jobZipCode: {\r\n required: \"The job zip code is not required\",\r\n minlength: \"The job zip code must have at least 3 characters\",\r\n maxlength: \"The job zip code cannot exceed 600 characters\"\r\n }\r\n },\r\n errorPlacement: function($error, $element){\r\n var $ele = $($element);\r\n var $name = $ele.attr(\"name\");\r\n if(!$ele.hasClass('is-invalid')){\r\n $ele.addClass('is-invalid');\r\n }\r\n $(\".\"+$name+\"_validate\").html($($error).text()).show();\r\n },\r\n success: function($error, $element) {\r\n var $ele = $($element);\r\n var $name = $ele.attr(\"name\");\r\n if($ele.hasClass('is-invalid')){\r\n $ele.removeClass('is-invalid');\r\n }\r\n $(\".\"+$name+\"_validate\").html('').hide();\r\n },\r\n submitHandler: function($form) {\r\n cback($form);\r\n return false;\r\n }\r\n });\r\n },\r\n information_request_tab_location_map:function($location, cback){\r\n if($location && $location.address_latitude && $location.address_longitude && $location.address_is_unmappable == 0){\r\n try{\r\n var $position = new google.maps.LatLng(parseFloat($location.address_latitude), parseFloat($location.address_longitude));\r\n var $iconUrl = './../../../../bimg/NursesLounge/active.png';\r\n var $map = new google.maps.Map(document.getElementById('job-edit-location-map'), {\r\n center:$position,\r\n mapTypeId: google.maps.MapTypeId.ROADMAP,\r\n mapTypeControl: false,\r\n streetViewControl: false,\r\n fullscreenControl: false,\r\n zoom: 15\r\n });\r\n $map.setTilt(0);\r\n var $marker = new google.maps.Marker({\r\n position:$position,\r\n map: $map,\r\n animation: google.maps.Animation.DROP,\r\n icon: {url:$iconUrl, scaledSize: (new google.maps.Size(20, 35))},\r\n });\r\n }catch (e) {\r\n\r\n }\r\n }\r\n if(cback != undefined){\r\n cback();\r\n }\r\n },\r\n //Meet our recruiters\r\n information_meet_our_recruiters:function(cback){\r\n cback({\r\n 'container':$(\"#nurseslounge-job-information .nurseslounge-job-information-right .meet-our-recruiters\")\r\n });\r\n },\r\n //Banners\r\n banners_location:function(cback){\r\n cback({\r\n 'banners':$(\"#nurseslounge-job-information .nurseslounge-job-information-right .banners\")\r\n });\r\n },\r\n};\r\n","var nurseslounge_degrees = {\n home:function($params){\n nurseslounge_myDashboard_recommendations.init($params);\n nurseslounge_myDashboard_accountSettings.init($params);\n nurseslounge_degrees.submenu($params, function(){\n $(\".nav-underline a:eq(0)\").click();\n });\n },\n home_sub:function($params){\n nurseslounge_degrees_home.init($params);\n },\n submenu:function($params, cback){\n $(\".nav-underline a\").unbind().click(function(){\n $(\".nav-underline a\").removeClass('active');\n nurseslounge_degrees.submenu_open(this, $(this).data('url'), 'home_sub', $params)\n });\n nurseslounge_degrees.menu_selector();\n cback();\n },\n submenu_open:function($this, $url, $module, $params){\n $($this).addClass('active');\n router.pause();\n router.navigate($url);\n router.resume();\n $params = $.extend({}, $params, {user_id:libs.memoryGet('user_id')});\n libs.subrender($url, 'nurseslounge_degrees', $module, $params, 'POST');\n },\n menu_selector:function(){\n libs.globalUrl();\n }\n};\n","var nurseslounge_degrees_home = {\n init:function($params){\n nurseslounge_degrees_home.degrees_home_first_load($params);\n nurseslounge_degrees_home.banners_location(function($config){\n nurseslounge_myDashboard_myProfile.banners_engine($config);\n });\n },\n degrees_home_first_load:function($params){\n var $degreesHomeLeft = $(\"#nurseslounge-degrees-home .nurseslounge-degrees-home-left\");\n var $degreeForm = $degreesHomeLeft.find('form');\n var $subcategory = $degreeForm.find('select[name=\"subcategory\"]');\n var $states = $degreeForm.find('select[name=\"states\"]');\n var $school = $degreeForm.find('input[name=\"school\"]');\n var $offered = $degreeForm.find('input[name=\"offered\"]');\n var $search = $degreeForm.find('.search');\n var $reset = $degreeForm.find('.reset');\n var $bindingSelector;\n try{\n $subcategory.chosen('destroy');\n }catch (e) {}\n $subcategory.chosen();\n $subcategory.unbind();\n try{\n $states.chosen('destroy');\n }catch (e) {}\n $states.chosen();\n $states.unbind();\n nurseslounge_degrees_home.degrees_home_autocomplete(\n $school,\n $params,\n \"/degrees/home/autocomplete\",\n function($keyword){\n nurseslounge_degrees_home.degrees_home_search($params);\n }\n );\n $subcategory.change(function(){\n try {\n clearTimeout($bindingSelector);\n }catch (e) {\n }\n $bindingSelector = setTimeout(function(){\n nurseslounge_degrees_home.degrees_home_search($params);\n }, 800);\n });\n $states.change(function(){\n try {\n clearTimeout($bindingSelector);\n }catch (e) {\n }\n $bindingSelector = setTimeout(function(){\n nurseslounge_degrees_home.degrees_home_search($params);\n }, 800);\n });\n $offered.unbind().click(function(){\n nurseslounge_degrees_home.degrees_home_search($params);\n });\n $search.unbind().click(function(){\n nurseslounge_degrees_home.degrees_home_search($params);\n });\n $reset.unbind().click(function(){\n $degreeForm[0].reset();\n $subcategory.find('option').prop('selected',false);\n $states.find('option').prop('selected',false);\n nurseslounge_degrees_home.degrees_home_first_load($params);\n });\n nurseslounge_degrees_home.degrees_home_search($params);\n },\n degrees_home_autocomplete:function($target, $params, $url, cback){\n try {\n $($target).autocomplete(\"destroy\");\n }catch (e) {\n }\n var $value = '';\n $($target).autocomplete({\n minLength\t:2,\n search\t\t: function(){\n $(this).addClass(\"ui-autocomplete-loading\");\n },\n open \t\t: function(){\n $(this).removeClass(\"ui-autocomplete-loading\");\n },\n source: function(request, response) {\n $.ajax({\n method: 'POST',\n url:$url,\n data:$.extend({\n keyword:$($target).val()\n }, $params),\n dataType: \"json\",\n success: function($data){\n libs.expire($data);\n $value = '';\n response($data);\n }\n });\n },\n create:function(){\n $(this).prev().remove();\n $(this).trigger(\"keypress.autocomplete\");\n },\n select: function (event, ui) {\n $value = ui.item.value;\n $(this).val($value);\n cback($value);\n return false;\n }\n }).keypress(function ($e) {\n if ($e.which == 13) {\n cback($(this).val());\n $(this).autocomplete(\"close\");\n }\n });\n },\n degrees_home_search:function($params){\n var $degreesHomeLeft = $(\"#nurseslounge-degrees-home .nurseslounge-degrees-home-left\");\n var $degreeForm = $degreesHomeLeft.find('form');\n var $subcategory = $degreeForm.find('select[name=\"subcategory\"]');\n var $states = $degreeForm.find('select[name=\"states\"]');\n var $school = $degreeForm.find('input[name=\"school\"]');\n var $offered = $degreeForm.find('input[name=\"offered\"]:checked');\n var $degreeList = $degreesHomeLeft.find(\".degree-list:first\");\n var $degreeListPreview = nurseslounge_degrees_home.degree_preview();\n var $resultInfo = $degreesHomeLeft.find(\".result-info-count:first\");\n var $resultPreview = ' ';\n var $paginationNav = $degreesHomeLeft.find('.pagination-nav');\n var $paginationNavPreview = ' ';\n $params = $.extend({}, $params,{\n subcategory:$subcategory.val(),\n states:$states.val(),\n school:$school.val(),\n offered:$offered.val(),\n });\n $resultInfo.addClass('nurseslounge-degrees-home-preload').html($resultPreview);\n $paginationNav.addClass('nurseslounge-degrees-home-preload').html($paginationNavPreview);\n $degreeList.html($degreeListPreview).promise().done(function(){\n nurseslounge_degrees_home.degree_pagination($params);\n });\n },\n degree_preview:function(){\n var $userId = libs.memoryGet('user_id');\n var $chtml = '';\n for(var $i=1; $i<=10; $i++){\n $chtml+= '' +\n '
  • ' +\n '
    ' +\n '
    ' +\n '
    ' +\n '
    ' +\n '                 ' +\n '                 ' +\n '
    ' +\n '
    ' +\n '

    ' +\n '                   ' +\n '                   ' +\n '                   ' +\n '                   ' +\n '

    ' +\n '

     

    ' +\n '

     

    ' +\n '
    ' +\n '
    ' +\n '
    ' +\n '
    ' +\n '
    ' +\n '
    ' +\n ' ' +\n ' ' +\n ' ' +\n ' ' +\n ' ' +\n '
    ' +\n '
    ' +\n '  ' +\n '
    ' +\n '
    ' +\n ' ';\n if($userId != 'guest'){\n $chtml+= '';\n }\n $chtml+= '' +\n '
    ' +\n '
    ' +\n '
  • ';\n }\n return $chtml;\n },\n degree_pagination:function($params){\n var $reload;\n var $loaded = false;\n var $afterFirstPagination = false;\n var $degreesHomeLeft = $(\"#nurseslounge-degrees-home .nurseslounge-degrees-home-left\");\n var $degreeList = $degreesHomeLeft.find('.degree-list');\n var $paginationNav = $degreesHomeLeft.find('.pagination-nav');\n var $previewHeight = $degreesHomeLeft.find('.degree-list .preview:first').innerHeight();\n var $degreeHeight = $degreeList.innerHeight();\n var $pageSize = Math.round(($degreeHeight/$previewHeight));\n var $resultInfo = $degreesHomeLeft.find(\".result-info-count:first\");\n var $saveParams = $params;\n var $paginationObj;\n try{\n $paginationObj = libs.memoryGet('degree_pagination');\n if($paginationObj){\n $paginationObj.pagination('destroy');\n }\n }catch ($e) {\n }\n $paginationObj = $paginationNav.pagination({\n pageSize: $pageSize,\n showPageNumbers: true,\n showPrevious: true,\n showNext: true,\n showNavigator: true,\n showFirstOnEllipsisShow: true,\n showLastOnEllipsisShow: true,\n dataSource:window.location.protocol +'//'+ window.location.hostname + \"/degrees/home/get\",\n locator: 'data.degrees',\n ajax:{\n method: \"POST\",\n cache:false,\n dataType: \"json\",\n data:$params,\n beforeSend: function() {\n $degreeList.html(nurseslounge_degrees_home.degree_preview());\n },\n complete:function($data){\n libs.expire($data.responseJSON);\n }\n },\n totalNumberLocator: function($data) {\n return $data.data.total;\n },\n callback: function($data, $pagination) {\n $loaded = true;\n if($degreeList.length > 0 && $degreeList.offset().top > 0 && $afterFirstPagination){\n $('html, body').animate({scrollTop:$degreeList.offset().top - 100});\n }else{\n $afterFirstPagination = true;\n }\n var $pageNumber = $pagination.pageNumber;\n var $pageSize = $pagination.pageSize;\n var $totalNumber = $pagination.totalNumber;\n var $first = $totalNumber > 0 ? (($pageNumber-1) * $pageSize) + 1 : 0;\n var $last = $totalNumber > 0 ? ($first + $data.length - 1) : 0;\n $paginationNav.removeClass('nurseslounge-degrees-home-preload');\n $resultInfo.removeClass('nurseslounge-degrees-home-preload').html('Showing '+$first+' - '+$last+' of '+$totalNumber+' results for Degrees');\n var $chtml = nurseslounge_degrees_home.degrees_home_item_html($data);\n libs.checkImageLoad($($chtml).find('img'), function () {\n $degreeList.html('').html($chtml).promise().done(function () {\n nurseslounge_degrees_home.degrees_home_list_events($saveParams);\n });\n });\n }\n });\n libs.memorySave('degree_pagination', $paginationObj);\n $reload = setTimeout(function(){\n if(!$loaded){\n nurseslounge_degrees_home.degree_pagination($params);\n }else{\n clearTimeout($reload);\n }\n }, 10000);\n },\n degrees_home_item_html:function($loungeDegrees){\n var $userId = libs.memoryGet('user_id');\n var $chtml = '';\n $.each($loungeDegrees, function($i, $v){\n var $img = $v.lounge.logo_root_lounge;\n $chtml+='' +\n '
  • ';\n $chtml += '';\n if($v.sponsored == 1) {\n $chtml += '';\n }\n $chtml += '';\n $chtml +=\n '
    ' +\n '
    ' +\n '
    ' +\n '
    ' +\n ' \"hospital\"' +\n '
    ' +\n '
    ' +\n '

    ' +\n ' '+$v.title+'' +\n '

    ' +\n '

    '+$v.lounge.small_name+'

    ' +\n '

    ';\n if($v.lounge.location.address_city) {\n $chtml+='' +\n $v.lounge.location.address_city + ', ';\n }\n if($v.lounge.location.address_state) {\n $chtml+='' +\n $v.lounge.location.address_state;\n }\n $chtml+='' +\n '

    ' +\n '
    ' +\n '
    ' +\n '
    ' +\n '
    ' +\n '
    ' +\n '
    ' +\n nurseslounge_degrees_home.add_stars($v.rating) +\n '
    ' +\n '
    ' +\n $v.rating + ' / 5' +\n '
    ' +\n '
    ';\n if($userId != 'guest'){\n $chtml += '';\n }\n $chtml += '' +\n '
    ' +\n '
    ' +\n '
  • ';\n });\n return $chtml;\n },\n add_stars:function($rating){\n var $chtml = '';\n for(var $i=1; $i<=5; $i++) {\n var $star = $rating - $i;\n var $offsetOn;\n var $offsetOff;\n var $unique = libs.getUniqueId();\n if($star >= 0){\n $offsetOn = 100;\n $offsetOff = 0;\n }else if($star < 0 && $star > -1){\n $star = ($star * -1);\n $offsetOff = ($star * 100);\n $offsetOn = (100 - $offsetOff);\n }else{\n $offsetOn = 0;\n $offsetOff = 100;\n }\n $chtml += '' +\n '' +\n ' ' +\n ' ';\n if($offsetOn > 0) {\n $chtml += '' +\n '';\n }\n if($offsetOff > 0){\n $chtml += '' +\n '';\n }\n $chtml += '' +\n ' ' +\n ' ' +\n ' ' +\n '';\n }\n return $chtml;\n },\n degrees_home_list_events:function($params){\n var $key = $params.key;\n var $userId = libs.memoryGet('user_id');\n var $degreesHomeLeft = $(\"#nurseslounge-degrees-home .nurseslounge-degrees-home-left\");\n var $degreeList = $degreesHomeLeft.find('.degree-list');\n $degreeList.find(\".open-degree\").unbind().click(function(){\n var $key = $(this).parents('.item:first').data('key');\n var $publicLink = $(this).parents('.item:first').data('public_link');\n if($userId == 'guest'){\n var $params = $.extend({}, {key:$key}, {id:'degrees'});\n public_nurseslounge_lounge_overview.login_popup($params);\n //window.open($publicLink, '_blank');\n }else{\n nurseslounge_lounge_degrees.add_map_show_spu($key);\n }\n });\n },\n //Banners\n banners_location:function(cback){\n cback({\n 'banners':$(\"#nurseslounge-degrees-home .nurseslounge-degrees-home-right .banners\")\n });\n },\n};\n","var nurseslounge_degree = {\r\n information:function($params){\r\n nurseslounge_myDashboard_recommendations.init($params);\r\n nurseslounge_myDashboard_accountSettings.init($params);\r\n nurseslounge_lounge_header.init($params, 'nurseslounge_degree', 'information');\r\n nurseslounge_degree.submenu($params, function(){\r\n $(\".nav-underline a[data-id='information']\").click();\r\n });\r\n },\r\n information_sub:function($params){\r\n nurseslounge_degree_information.init($params);\r\n },\r\n reviews:function($params){\r\n nurseslounge_myDashboard_recommendations.init($params);\r\n nurseslounge_myDashboard_accountSettings.init($params);\r\n nurseslounge_lounge_header.init($params, 'nurseslounge_degree', 'reviews');\r\n nurseslounge_degree.submenu($params, function(){\r\n $(\".nav-underline a[data-id='reviews']\").click();\r\n });\r\n },\r\n reviews_sub:function($params){\r\n nurseslounge_degree_reviews.init($params);\r\n },\r\n submenu:function($params, cback){\r\n $(\".nav-underline a\").unbind().click(function(){\r\n $(\".nav-underline a\").removeClass('active');\r\n nurseslounge_degree.submenu_open(this, $(this).data('url'), $(this).data('id')+'_sub', $params)\r\n });\r\n nurseslounge_degree.menu_selector();\r\n var $notification = nurseslounge_degree.notification_open($params, window.location.href.toString());\r\n if($notification.valid){\r\n var $open = '';\r\n switch($params.notification_type){\r\n case 'degreeReviews':{$open = 'reviews';break;}\r\n }\r\n $(\".nav-underline a\").each(function(){\r\n var $that = $(this);\r\n if($that.data('id') == $open){\r\n $that.addClass('active')\r\n }\r\n });\r\n $params = $.extend({}, $params, {user_id:libs.memoryGet('user_id')});\r\n libs.subrender($notification.url, 'nurseslounge_degree', $notification.module+'_sub', $params, 'POST');\r\n }else{\r\n cback();\r\n }\r\n },\r\n submenu_open:function($this, $url, $module, $params){\r\n $($this).addClass('active');\r\n router.pause();\r\n router.navigate($url);\r\n router.resume();\r\n $params = $.extend({}, $params, {user_id:libs.memoryGet('user_id')});\r\n libs.subrender($url, 'nurseslounge_degree', $module, $params, 'POST');\r\n },\r\n notification_open:function($params, $location)\r\n {\r\n var $notification = {};\r\n var $notificationData = [];\r\n if($params.notification_key){$notificationData.push($params.notification_key);}\r\n if($params.notification_type){$notificationData.push($params.notification_type);}\r\n if($params.notification_type_key){$notificationData.push($params.notification_type_key);}\r\n $notification.valid = $notificationData.length == 3;\r\n $notification.url = $location.replace('/notification/'+$notificationData.join('/'), '');\r\n var $url = $notification.url.split('/');\r\n $notification.module = $url[$url.length-1];\r\n return $notification;\r\n },\r\n menu_selector:function(){\r\n libs.globalUrl();\r\n }\r\n};\r\n","var nurseslounge_degree_information = {\r\n init:function($params, cback){\r\n $params = $.extend({}, $params, {action:'info',tab:'degree_init'});\r\n nurseslounge_degree_information.information_degree_get($params, function($data){\r\n nurseslounge_degree_information.information_know_more($params, $data);\r\n nurseslounge_degree_information.information_rating($params, $data);\r\n nurseslounge_degree_information.information_request_edit($params, $data);\r\n try{\r\n google.maps.event.addListener(window, \"load\", nurseslounge_degree_information.information_location_map($data));\r\n }catch (e) {\r\n\r\n }\r\n if(cback != undefined){\r\n cback($data);\r\n }\r\n });\r\n nurseslounge_degree_information.information_meet_our_recruiters(function($config){\r\n nurseslounge_lounge_overview.information_meet_our_recruiters_engine($config);\r\n });\r\n nurseslounge_degree_information.banners_location(function($config){\r\n nurseslounge_myDashboard_myProfile.banners_engine($config);\r\n });\r\n },\r\n information_degree_get:function($params, cback){\r\n $.ajax({\r\n url: \"/degree/get\",\r\n method: \"POST\",\r\n cache:false,\r\n dataType: \"json\",\r\n data:$params,\r\n success: function ($data) {\r\n libs.expire($data);\r\n if($data.status == 'error'){\r\n $(\"#nurseslounge-degree-information-edit-modal\").modal('hide');\r\n $(\"#nurseslounge-degree-request-info-modal\").modal('hide');\r\n }\r\n cback($data);\r\n }\r\n });\r\n },\r\n information_know_more:function($params, $data){\r\n var $key = $data && $data.data && $data.data.key;\r\n var $isEmail = $data && $data.data && $data.data.degree && $data.data.degree.contact_is_email ? $data.data.degree.contact_is_email : false;\r\n var $contactEmailUrl = $data && $data.data && $data.data.degree && $data.data.degree.email ? $data.data.degree.email : false;\r\n var $title = $data && $data.data && $data.data.degree && $data.data.degree.title ? $data.data.degree.title : null;\r\n var $loungeLink = $data && $data.data && $data.data.degree && $data.data.degree.lounge && $data.data.degree.lounge.link ? $data.data.degree.lounge.link : null;\r\n var $degreeInformation = $(\"#nurseslounge-degree-information\");\r\n var $degreeInformationRight = $degreeInformation.find('.nurseslounge-degree-information-right:first');\r\n var $whyWorkHere = $degreeInformationRight.find(\".know-more .option[data-action='why-study-here']\");\r\n var $requestInfo = $degreeInformationRight.find(\".know-more .option[data-action='request-info']\");\r\n var $applyOnWebsite = $degreeInformationRight.find(\".know-more .option[data-action='apply-on-website']\");\r\n var $degreeInformationLeft = $degreeInformation.find(\".nurseslounge-degree-information-left:first\");\r\n var $detail = $degreeInformationLeft.find(\".detail\");\r\n var $body = 'I saw your degree on Nurses Lounge and would like to apply.';\r\n var $subject = 'Application for '+$title+' - via Nurses Lounge';\r\n $whyWorkHere.unbind().click(function(){\r\n router.navigate($loungeLink,true);\r\n });\r\n $requestInfo.unbind().click(function(){\r\n nurseslounge_degree_information.information_request_info_events($params, $data);\r\n });\r\n $applyOnWebsite.unbind().click(function(){\r\n nurseslounge_degree_information.information_apply_set('apply', $params,function($data){\r\n var $statistics = $degreeInformationRight.find('.statistics:first');\r\n libs.refreshBoxFrom($statistics, $params, function(){\r\n if($isEmail){\r\n window.open('mailto:'+$contactEmailUrl+'?body='+$body+'&subject='+$subject, '_blank');\r\n }else{\r\n window.open($contactEmailUrl, '_blank');\r\n }\r\n });\r\n });\r\n });\r\n $detail.unbind().click(function(){\r\n nurseslounge_degree_information.information_request_info_events($params, $data);\r\n });\r\n },\r\n information_apply_set:function($action, $params, cback){\r\n $.ajax({\r\n url: \"/degree/set\",\r\n method: \"POST\",\r\n cache:false,\r\n dataType: \"json\",\r\n data:$.extend({}, $params, {action:$action}),\r\n success: function ($data) {\r\n libs.expire($data);\r\n if($data.status == 'error'){\r\n $(\"#nurseslounge-degree-information-edit-modal\").modal('hide');\r\n $(\"#nurseslounge-degree-request-info-modal\").modal('hide');\r\n }\r\n cback($data);\r\n }\r\n });\r\n },\r\n information_rating:function($params, $data){\r\n var $typeId = $data.data.degree.lounge.lounge_type_id ? $data.data.degree.lounge.lounge_type_id : 0;\r\n var $loungeKey = $data.data.degree.lounge.key ? $data.data.degree.lounge.key : null;\r\n var $loungeData = $data.data.degree.lounge ? $data.data.degree.lounge : [];\r\n var $degreeInformation = $(\"#nurseslounge-degree-information\");\r\n var $reviewModal = $(\"#nurseslounge-degree-information-review-modal\");\r\n var $degreeInformationRight = $degreeInformation.find('.nurseslounge-degree-information-right:first');\r\n var $ratingFirst = $degreeInformationRight.find('.rating-stars:first');\r\n var $ratingCount = $degreeInformationRight.find('.rating-count:first');\r\n var $addReviewFirst = $degreeInformationRight.find('.add-review:first');\r\n var $deleteReviewFirst = $degreeInformationRight.find('.delete-review:first');\r\n $params = $.extend({}, $params, {key:$loungeKey}, {data:{lounge:$loungeData}});\r\n $ratingFirst.unbind().click(function(){\r\n nurseslounge_degree_information.information_review($params, $data, function(){\r\n libs.refreshBoxFrom('.review-box', $params, function(){\r\n nurseslounge_degree_information.init($params);\r\n $reviewModal.modal('hide');\r\n });\r\n });\r\n });\r\n $ratingCount.unbind().click(function(){\r\n nurseslounge_degree_information.information_review($params, $data, function(){\r\n libs.refreshBoxFrom('.review-box', $params, function(){\r\n nurseslounge_degree_information.init($params);\r\n $reviewModal.modal('hide');\r\n });\r\n });\r\n });\r\n $addReviewFirst.unbind().click(function(){\r\n nurseslounge_degree_information.information_review($params, $data, function(){\r\n libs.refreshBoxFrom('.review-box', $params, function(){\r\n nurseslounge_degree_information.init($params);\r\n $reviewModal.modal('hide');\r\n });\r\n });\r\n });\r\n $deleteReviewFirst.unbind().click(function(){\r\n if(confirm('Are you sure you want to delete your review?')){\r\n nurseslounge_degree_information.information_remove_review($params, function(){\r\n libs.refreshBoxFrom('.review-box', $params, function(){\r\n nurseslounge_degree_information.init($params);\r\n $reviewModal.modal('hide');\r\n });\r\n });\r\n }\r\n });\r\n },\r\n information_location_map:function($data){\r\n var $location = $data && $data.data && $data.data.degree && $data.data.degree.lounge && $data.data.degree.lounge.location ? $data.data.degree.lounge.location : null;\r\n if($location && $location.address_latitude && $location.address_longitude && $location.address_is_unmappable == 0){\r\n var $position = new google.maps.LatLng(parseFloat($location.address_latitude), parseFloat($location.address_longitude));\r\n var $iconUrl = './../../../../bimg/NursesLounge/active.png';\r\n var $map = new google.maps.Map(document.getElementById('nurseslounge-degree-information-right-map'), {\r\n center:$position,\r\n mapTypeId: google.maps.MapTypeId.ROADMAP,\r\n mapTypeControl: false,\r\n streetViewControl: false,\r\n fullscreenControl: false,\r\n zoom: 15\r\n });\r\n $map.setTilt(0);\r\n var $marker = new google.maps.Marker({\r\n position:$position,\r\n map: $map,\r\n animation: google.maps.Animation.DROP,\r\n icon: {url:$iconUrl, scaledSize: (new google.maps.Size(20, 35))},\r\n });\r\n }\r\n },\r\n information_request_info_events:function($params, $data){\r\n var $loungeLink = $data && $data.data && $data.data.degree && $data.data.degree.lounge && $data.data.degree.lounge.link ? $data.data.degree.lounge.link : null;\r\n var $modal = $(\"#nurseslounge-degree-request-info-modal\");\r\n var $container = $modal.find(\".request-info-modal-container\");\r\n nurseslounge_degree_information.information_request_info_request($params, function($chtml){\r\n $container.html('').html($chtml).promise().done(function(){\r\n $modal.find(\"form\").find(\"input[name='userPhoneNumber']\").mask('+(00) 000-000-0000');\r\n nurseslounge_degree_information.information_request_info_validate(function($form){\r\n $params = $.extend({}, $params, libs.getObjForm($form));\r\n nurseslounge_degree_information.information_apply_set('info', $params, function(){\r\n var $degreeInformation = $(\"#nurseslounge-degree-information\");\r\n var $degreeInformationRight = $degreeInformation.find('.nurseslounge-degree-information-right:first');\r\n var $statistics = $degreeInformationRight.find('.statistics:first');\r\n libs.refreshBoxFrom($statistics, $params, function(){\r\n $modal.modal('hide');\r\n });\r\n });\r\n });\r\n /*\r\n var $reviewProfileLink = $modal.find(\".review-profile-link\");\r\n $reviewProfileLink.unbind().click(function(){\r\n router.navigate($loungeLink,true);\r\n $modal.modal('hide');\r\n });\r\n */\r\n $modal.modal('show');\r\n });\r\n });\r\n },\r\n information_request_info_request:function($params, cback){\r\n $.ajax({\r\n type: 'POST',\r\n url: '/degree/requestInfoView/get',\r\n data: $params,\r\n method: \"POST\",\r\n cache:false,\r\n dataType: \"html\",\r\n success: function ($data) {\r\n libs.expire($data);\r\n if($data.status == 'error'){\r\n $(\"#nurseslounge-degree-information-edit-modal\").modal('hide');\r\n $(\"#nurseslounge-degree-request-info-modal\").modal('hide');\r\n }\r\n cback($data);\r\n }\r\n });\r\n },\r\n information_request_info_validate:function(cback){\r\n var $validator = $(\"#nurseslounge-degree-request-info-modal form\").validate({\r\n onsubmit: true,\r\n ignore: \"*:not(.validate)\",\r\n debug: true,\r\n rules: {\r\n userName: {\r\n required: true,\r\n minlength: 2,\r\n maxlength: 600\r\n },\r\n userEmail: {\r\n required: true,\r\n email:true,\r\n minlength: 2,\r\n maxlength: 191\r\n },\r\n userPhoneNumber: {\r\n required: false,\r\n minlength: 2,\r\n maxlength: 18\r\n },\r\n userZipCode: {\r\n required: false,\r\n minlength: 2,\r\n maxlength: 191\r\n }\r\n },\r\n messages: {\r\n userName: {\r\n required: \"The user name is required\",\r\n minlength: \"The user name must have at least 2 characters\",\r\n maxlength: \"The user name cannot exceed 600 characters\"\r\n },\r\n userEmail: {\r\n required: \"The user email is required\",\r\n email:\"The user email is invalid\",\r\n minlength: \"The user email must have at least 2 characters\",\r\n maxlength: \"The user email cannot exceed 191 characters\"\r\n },\r\n userPhoneNumber: {\r\n required: \"The user phone is not required\",\r\n minlength: \"The user phone must have at least 2 characters\",\r\n maxlength: \"The user phone cannot exceed 18 characters\"\r\n },\r\n userZipCode: {\r\n required: \"The user zip code is not required\",\r\n minlength: \"The user zip code must have at least 2 characters\",\r\n maxlength: \"The user zip code cannot exceed 191 characters\"\r\n }\r\n },\r\n errorPlacement: function($error, $element){\r\n var $ele = $($element);\r\n var $name = $ele.attr(\"name\");\r\n if(!$ele.hasClass('is-invalid')){\r\n $ele.addClass('is-invalid');\r\n }\r\n $(\".\"+$name+\"_validate\").html($($error).text()).show();\r\n },\r\n success: function($error, $element) {\r\n var $ele = $($element);\r\n var $name = $ele.attr(\"name\");\r\n if($ele.hasClass('is-invalid')){\r\n $ele.removeClass('is-invalid');\r\n }\r\n $(\".\"+$name+\"_validate\").html('').hide();\r\n },\r\n submitHandler: function($form) {\r\n cback($form);\r\n return false;\r\n }\r\n });\r\n },\r\n\r\n information_request_info_qr:function($params, $loungeLink){\r\n var $qr = $(\"#nurseslounge-degree-request-info-qr\");\r\n var $form = $qr.find(\"form\");\r\n $form.find(\"input[name='userPhoneNumber']\").mask('+(00) 000-000-0000');\r\n nurseslounge_degree_information.information_request_info_qr_validate(function($form){\r\n nurseslounge_degree_information.information_request_info_qr_set($params, libs.getObjForm($form), function($data){\r\n window.open($data.data.link, '_self');\r\n });\r\n });\r\n /*\r\n var $reviewProfileLink = $qr.find(\".review-profile-link\");\r\n $reviewProfileLink.unbind().click(function(){\r\n window.open($loungeLink, '_self');\r\n });\r\n */\r\n },\r\n information_request_info_qr_validate:function(cback){\r\n var $validator = $(\"#nurseslounge-degree-request-info-qr form\").validate({\r\n onsubmit: true,\r\n ignore: \"*:not(.validate)\",\r\n debug: true,\r\n rules: {\r\n userName: {\r\n required: true,\r\n minlength: 2,\r\n maxlength: 600\r\n },\r\n userEmail: {\r\n required: true,\r\n email:true,\r\n minlength: 2,\r\n maxlength: 191\r\n },\r\n userPhoneNumber: {\r\n required: false,\r\n minlength: 2,\r\n maxlength: 18\r\n },\r\n userZipCode: {\r\n required: false,\r\n minlength: 2,\r\n maxlength: 191\r\n }\r\n },\r\n messages: {\r\n userName: {\r\n required: \"The user name is required\",\r\n minlength: \"The user name must have at least 2 characters\",\r\n maxlength: \"The user name cannot exceed 600 characters\"\r\n },\r\n userEmail: {\r\n required: \"The user email is required\",\r\n email: \"The user email is invalid\",\r\n minlength: \"The user email must have at least 2 characters\",\r\n maxlength: \"The user email cannot exceed 191 characters\"\r\n },\r\n userPhoneNumber: {\r\n required: \"The user phone is not required\",\r\n minlength: \"The user phone must have at least 2 characters\",\r\n maxlength: \"The user phone cannot exceed 18 characters\"\r\n },\r\n userZipCode: {\r\n required: \"The user zip code is not required\",\r\n minlength: \"The user zip code must have at least 2 characters\",\r\n maxlength: \"The user zip code cannot exceed 191 characters\"\r\n }\r\n },\r\n errorPlacement: function($error, $element){\r\n var $ele = $($element);\r\n var $name = $ele.attr(\"name\");\r\n if(!$ele.hasClass('is-invalid')){\r\n $ele.addClass('is-invalid');\r\n }\r\n $(\".\"+$name+\"_validate\").html($($error).text()).show();\r\n },\r\n success: function($error, $element) {\r\n var $ele = $($element);\r\n var $name = $ele.attr(\"name\");\r\n if($ele.hasClass('is-invalid')){\r\n $ele.removeClass('is-invalid');\r\n }\r\n $(\".\"+$name+\"_validate\").html('').hide();\r\n },\r\n submitHandler: function($form) {\r\n cback($form);\r\n return false;\r\n }\r\n });\r\n },\r\n information_request_info_qr_set:function($params, $form, cback){\r\n $.ajax({\r\n url: \"/degree/information/qr/requestInfo/\"+$params.hash+\"/set\",\r\n method: \"POST\",\r\n cache:false,\r\n dataType: \"json\",\r\n data:$.extend({},$params, $form),\r\n success: function ($data) {\r\n libs.expire($data);\r\n if(cback != undefined){\r\n cback($data);\r\n }\r\n }\r\n });\r\n },\r\n //Admin\r\n information_request_edit:function($params, $data){\r\n var $credential = $data && $data.data && $data.data.user_credential ? $data.data.user_credential : [];\r\n $credential = $credential.map(function($x){return parseInt($x);});\r\n var $allowTabs = {\r\n 'degree_information': $.inArray(18, $credential) != -1 ? true : false,\r\n 'degree_sponsor': $.inArray(20, $credential) != -1 ? true : false\r\n };\r\n var $allowTabsFiltered = $allowTabs;\r\n $allowTabs = {};\r\n $.each($allowTabsFiltered, function($k, $v) {var $newObj = {};$newObj[$k]=$v;if($v){$.extend($allowTabs, $newObj);}});\r\n var $information = $(\"#nurseslounge-degree-information\");\r\n var $informationRight = $information.find('.nurseslounge-degree-information-right:first .administrator:first');\r\n var $options = $informationRight.find('.option');\r\n $options.each(function(){\r\n var $that = $(this);\r\n var $action = $that.data('action');\r\n if(\r\n $action == 'create' ||\r\n $action == 'edit' ||\r\n $action == 'delete'\r\n ) {\r\n $that.unbind().click(function () {\r\n var $tab = null;\r\n $.each($allowTabs, function($i, $v){\r\n if($v){\r\n $tab = $i;\r\n return false;\r\n }\r\n });\r\n if(\r\n $tab && $action == 'create' ||\r\n $tab && $action == 'edit'\r\n ){\r\n nurseslounge_degree_information.information_request_select_tab($action, $tab, $allowTabs, $params, function () {\r\n $(\"#nurseslounge-degree-information-edit-modal\").scrollTop(0);\r\n $(\"#nurseslounge-degree-information-edit-modal\").modal('show');\r\n });\r\n }else\r\n if($action == 'delete'){\r\n if(confirm('Are you sure you want to delete this degree?')){\r\n $params = $.extend({},$params, {action:$action,tab:$action});\r\n nurseslounge_degree_information.information_apply_set($action, $params, function($data){\r\n if($data.status == 'success'){\r\n router.navigate('/lounge/'+$data.data.key+'/degrees');\r\n }\r\n });\r\n }\r\n }\r\n });\r\n }\r\n });\r\n },\r\n information_request_select_tab:function($action, $tab, $allowTabs, $params, cback){\r\n nurseslounge_degree_information.information_request_tabs_events($action, $tab, $allowTabs, $params,function(){\r\n $params = $.extend({},$params, {user_id:libs.memoryGet('user_id'), tab:$tab, action:$action});\r\n nurseslounge_degree_information.information_request_load($tab, $params, function(){\r\n switch ($tab) {\r\n case 'degree_information':\r\n nurseslounge_degree_information.information_degree_get($params, function($data){\r\n nurseslounge_degree_information.information_request_tab_information($action, $tab, $allowTabs, $params, $data, cback);\r\n });\r\n break;\r\n case 'degree_sponsor':\r\n nurseslounge_degree_information.information_degree_get($params, function($data){\r\n nurseslounge_degree_information.information_request_tab_sponsor($action, $tab, $allowTabs, $params, $data, cback);\r\n });\r\n break;\r\n }\r\n });\r\n });\r\n },\r\n information_request_tabs_events:function($action, $tab, $allowTabs, $params, cback){\r\n //Disable All\r\n $('#nurseslounge-degree-information-edit-modal .nav-pills .nav-link').addClass('disabled').removeClass('active');\r\n $('#nurseslounge-degree-information-edit-modal .degree-information-modal-container .tab-pane .container').html('');\r\n //Events\r\n $('#nurseslounge-degree-information-edit-modal .nav-pills a[data-toggle=\"tab\"]').unbind().on('shown.bs.tab', function ($e) {\r\n var $selectedTab = $e.currentTarget.dataset.target.replace('#','');\r\n if($.inArray($selectedTab, Object.keys($allowTabs)) > -1){\r\n nurseslounge_degree_information.information_request_select_tab($action, $selectedTab, $allowTabs, $params, function(){\r\n $(\"#nurseslounge-job-information-edit-modal\").scrollTop(0);\r\n });\r\n }\r\n });\r\n //Enable selected\r\n $.each($allowTabs, function ($i, $v) {\r\n $(\"#\"+$v).removeClass('active').removeClass('show');\r\n $('#nurseslounge-degree-information-edit-modal .nav-pills .nav-link[data-target=\"#'+$i+'\"]').removeClass('disabled');\r\n });\r\n $('#nurseslounge-degree-information-edit-modal .nav-pills .nav-link[data-target=\"#'+$tab+'\"]').addClass('active');\r\n $(\"#\"+$tab).addClass('active').addClass('show');\r\n if($action == 'create'){\r\n $(\"#nurseslounge-degree-information-edit-modal .modal-title\").html('Create');\r\n }\r\n if($action == 'edit'){\r\n $(\"#nurseslounge-degree-information-edit-modal .modal-title\").html('Edit');\r\n }\r\n if(cback != undefined){\r\n cback();\r\n }\r\n },\r\n information_request_load:function($tab, $params, cback){\r\n nurseslounge_degree_information.information_request_edit_view_get($tab, $params, function($chtml){\r\n var $images = $($chtml).find('img');\r\n libs.checkImageLoad($images, function(){\r\n $(\"#\"+$tab+\" .container\").html($chtml).promise().done(function(){\r\n if(cback != undefined){\r\n cback();\r\n }\r\n });\r\n });\r\n });\r\n },\r\n information_request_edit_view_get:function($tab, $params, cback){\r\n $params = $.extend({},$params,{user_id:libs.memoryGet('user_id'),tab:$tab});\r\n $.ajax({\r\n type: 'POST',\r\n url: '/degree/informationView/get',\r\n data: $params,\r\n method: \"POST\",\r\n cache:false,\r\n dataType: \"html\",\r\n success: function ($data) {\r\n libs.expire($data);\r\n cback($data);\r\n }\r\n });\r\n },\r\n\r\n information_request_tab_information:function($action, $tab, $allowTabs, $params, $data, cback){\r\n var $degree = $data && $data.data && $data.data.degree ? $data.data.degree : null;\r\n var $degreeCategory = $data && $data.data && $data.data.degree_categories ? $data.data.degree_categories : null;\r\n var $degreeOffered = $data && $data.data && $data.data.degree_offered ? $data.data.degree_offered : null;\r\n var $degreeValidStates = $data && $data.data && $data.data.degree_valid_states ? $data.data.degree_valid_states : null;\r\n var $modal = $('#nurseslounge-degree-information-edit-modal');\r\n var $information = $modal.find('.degree-information-modal-container #degree_information .container');\r\n var $informationForm = $information.find('form:first');\r\n var $description = $informationForm.find('.description');\r\n var $selectAllStates = $informationForm.find('.select-all-states');\r\n var $unselectAllStates = $informationForm.find('.unselect-all-states');\r\n var $degreeCategoryOptions = '';\r\n $degreeCategoryOptions += '';\r\n $.each($degreeCategory, function($i, $v){\r\n $degreeCategoryOptions += '';\r\n $.each($v.subcategory, function($sI, $sV){\r\n $degreeCategoryOptions += '';\r\n });\r\n $degreeCategoryOptions += '';\r\n });\r\n var $degreeOfferedOptions = '';\r\n $degreeOfferedOptions += '';\r\n var $degreeOfferedValue = '';\r\n $.each($degreeOffered, function($i, $v){\r\n switch($v){\r\n case 'Campus Only':\r\n $degreeOfferedValue = 'Campus Only: This degree is only offered for on campus learning.';\r\n break;\r\n case 'Online Only':\r\n $degreeOfferedValue = 'Online Only: This degree program is 100% online.';\r\n break;\r\n case 'Hybrid':\r\n $degreeOfferedValue = 'Both: Students are required to attend a campus classroom at least once during the program. Does not include orientation.';\r\n break;\r\n }\r\n $degreeOfferedOptions += '';\r\n });\r\n var $degreeValidStatesOptions = '';\r\n $.each($degreeValidStates, function($i, $v){\r\n $degreeValidStatesOptions += '';\r\n });\r\n $informationForm.find(\"select[name='degreeSubcategory']\").html($degreeCategoryOptions);\r\n $informationForm.find(\"select[name='degreeOffered']\").html($degreeOfferedOptions);\r\n $informationForm.find(\"select[name='degreeValidStates']\").html($degreeValidStatesOptions).promise().done(function(){\r\n nurseslounge_degree_information.information_request_tab_information_validate(function($form){\r\n var $formObj = libs.getObjForm($form);\r\n var $formDescription = $description.summernote('code');\r\n var $newParams = $.extend({},$params, $formObj);\r\n $newParams = $.extend({},$newParams, {description:$formDescription,tab:$tab});\r\n nurseslounge_degree_information.information_apply_set($action, $newParams, function($data){\r\n var $action = $data.data.action;\r\n var $degreeKey = $data.data.degree_key;\r\n $params = $.extend({},$params, {degree_key:$degreeKey,action:$action});\r\n if($data.status == 'success'){\r\n if($newParams.action == 'create'){\r\n router.navigate($data.data.link,true);\r\n nurseslounge_degree_information.init($params, function($data){\r\n nurseslounge_degree_information.information_request_select_tab($action, $tab, $allowTabs, $params, cback);\r\n });\r\n }\r\n if($newParams.action == 'edit'){\r\n libs.refreshBoxFrom('.page-contents', $params, function(){\r\n nurseslounge_degree_information.init($params, function($data){\r\n nurseslounge_degree_information.information_request_select_tab($action, $tab, $allowTabs, $params, cback);\r\n });\r\n });\r\n }\r\n }else{\r\n $modal.modal('hide');\r\n }\r\n });\r\n });\r\n try{\r\n $description.summernote('destroy');\r\n }catch (e) {\r\n\r\n }\r\n var $stripTags = function ($context) {\r\n var $ui = $.summernote.ui;\r\n var $button = $ui.button({\r\n contents: 'Remove Formatting',\r\n tooltip: 'Strip Tags',\r\n click: function () {\r\n var $text = [];\r\n var $code = $description.summernote(\"code\");\r\n $($code).each(function(){\r\n $text.push('

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

    ');\r\n });\r\n $code = $text.join('');\r\n $description.summernote(\"code\", $code);\r\n }\r\n });\r\n return $button.render();\r\n }\r\n $description.summernote({\r\n placeholder: 'Description ...',\r\n height: '400px',\r\n width: '100%',\r\n focus: true,\r\n disableResizeEditor: true,\r\n dialogsInBody: true,\r\n dialogsFade: true,\r\n codeviewFilter: true,\r\n codeviewIframeFilter: true,\r\n spellCheck: true,\r\n disableGrammar: false,\r\n styleTags: [\r\n 'p',\r\n 'pre', 'h1', 'h2', 'h3', 'h4', 'h5', 'h6'\r\n ],\r\n fontNames: ['Arial', 'Arial Black', 'Comic Sans MS', 'Courier New'],\r\n fontSizeUnits: ['pt', 'px'],\r\n toolbar: [\r\n ['style', ['style']],\r\n ['font', ['fontname', 'fontsize', 'fontsizeunit']],\r\n ['font', ['forecolor', 'backcolor']],\r\n ['font', ['bold', 'italic', 'underline']],\r\n ['para', ['ul', 'ol', 'paragraph']],\r\n ['para', ['height']],\r\n ['stripTags', ['stripTags']]\r\n ],\r\n buttons: {\r\n stripTags: $stripTags\r\n }\r\n });\r\n if($degree.title) {\r\n $informationForm.find(\"input[name='degreeTitle']\").val($degree.title);\r\n }\r\n if($degree.subcategory_id) {\r\n $informationForm.find(\"select[name='degreeSubcategory']\").val($degree.subcategory_id);\r\n }\r\n if($degree.offered_id) {\r\n $informationForm.find(\"select[name='degreeOffered']\").val($degree.offered_id);\r\n }\r\n if($degree.cost_average) {\r\n $informationForm.find(\"input[name='degreeCostAverage']\").val($degree.cost_average);\r\n }\r\n var $validStatesSelect = $informationForm.find(\"select[name='degreeValidStates']\");\r\n try{\r\n $validStatesSelect.chosen('destroy');\r\n }catch (e) {}\r\n if($degree.valid_states){\r\n var $validStates = libs.pluck($degree.valid_states, 'state_id');\r\n $validStatesSelect.find('option').filter(function() {\r\n return $.inArray(parseInt($(this).val()), $validStates) != -1;\r\n }).prop('selected',true);\r\n }\r\n $validStatesSelect.chosen();\r\n $selectAllStates.unbind().click(function(){\r\n $validStatesSelect.find('option').prop('selected', true);\r\n $validStatesSelect.trigger('chosen:updated');\r\n });\r\n $unselectAllStates.unbind().click(function(){\r\n $validStatesSelect.find('option').prop('selected', false);\r\n $validStatesSelect.trigger('chosen:updated');\r\n });\r\n if($degree.email) {\r\n $informationForm.find(\"input[name='degreeEmail']\").val($degree.email);\r\n }\r\n if($degree.description) {\r\n $description.summernote('code', $degree.description);\r\n }\r\n });\r\n if(cback != undefined){\r\n cback();\r\n }\r\n },\r\n information_request_tab_information_validate:function(cback){\r\n var $validator;\r\n try {\r\n $validator = $(\"#degree_information form\").validate();\r\n $validator.destroy();\r\n }catch (e) {\r\n\r\n }\r\n $validator = $(\"#degree_information form\").validate({\r\n onsubmit: true,\r\n debug: true,\r\n ignore: '*:not(.validate)',\r\n rules: {\r\n degreeTitle: {\r\n required: true,\r\n minlength: 3,\r\n maxlength: 191\r\n },\r\n degreeSubcategory: {\r\n required: true\r\n },\r\n degreeOffered: {\r\n required: true\r\n },\r\n degreeCostAverage: {\r\n required: false,\r\n minlength: 3,\r\n maxlength: 191\r\n },\r\n degreeValidStates:{\r\n required: true\r\n },\r\n degreeEmail: {\r\n required: true,\r\n minlength: 3,\r\n maxlength: 191,\r\n email:true\r\n }\r\n },\r\n messages: {\r\n degreeTitle: {\r\n required: \"The degree title is required\",\r\n minlength: \"The degree title must have at least 3 characters\",\r\n maxlength: \"The degree title cannot exceed 191 characters\"\r\n },\r\n degreeSubcategory: {\r\n required: \"The degree subcategory is required\"\r\n },\r\n degreeValidStates: {\r\n required: \"The degree valid states is required\"\r\n },\r\n degreeOffered: {\r\n required: \"The degree offered is required\"\r\n },\r\n degreeCostAverage: {\r\n required: \"The degree cost average is not required\",\r\n minlength: \"The degree cost average must have at least 3 characters\",\r\n maxlength: \"The degree cost average cannot exceed 191 characters\"\r\n },\r\n degreeEmail: {\r\n required: \"The degree email is required\",\r\n minlength: \"The degree email must have at least 3 characters\",\r\n maxlength: \"The degree email cannot exceed 191 characters\",\r\n email:\"The degree email is invalid\"\r\n }\r\n },\r\n errorPlacement: function($error, $element){\r\n var $ele = $($element);\r\n var $name = $ele.attr(\"name\");\r\n if(!$ele.hasClass('is-invalid')){\r\n $ele.addClass('is-invalid');\r\n }\r\n $(\".\"+$name+\"_validate\").html($($error).text()).show();\r\n },\r\n success: function($error, $element) {\r\n var $ele = $($element);\r\n var $name = $ele.attr(\"name\");\r\n if($ele.hasClass('is-invalid')){\r\n $ele.removeClass('is-invalid');\r\n }\r\n $(\".\"+$name+\"_validate\").html('').hide();\r\n },\r\n submitHandler: function($form) {\r\n cback($form);\r\n return false;\r\n }\r\n });\r\n },\r\n\r\n information_request_tab_sponsor:function($action, $tab, $allowTabs, $params, $data, cback){\r\n var $degree = $data && $data.data && $data.data.degree ? $data.data.degree : null;\r\n var $modal = $('#nurseslounge-degree-information-edit-modal');\r\n var $sponsor = $modal.find('.degree-information-modal-container #degree_sponsor .container');\r\n var $sponsorForm = $sponsor.find('form:first');\r\n var $sponsorInput = $sponsorForm.find('input[name=\"sponsor\"]');\r\n var $sponsorFromInput = $sponsorForm.find('input[name=\"sponsorFromDate\"]');\r\n var $sponsorFromResetInput = $sponsorForm.find('.reset_from_date:first');\r\n var $sponsorToInput = $sponsorForm.find('input[name=\"sponsorToDate\"]');\r\n var $sponsorToResetInput = $sponsorForm.find('.reset_to_date:first');\r\n $sponsorFromInput.datepicker().mask('00/00/0000',{placeholder:\"mm/dd/yyyy\"});\r\n $sponsorFromResetInput.unbind().click(function(){\r\n $sponsorFromInput.val(\"\").datepicker(\"update\");\r\n });\r\n $sponsorToInput.datepicker().mask('00/00/0000',{placeholder:\"mm/dd/yyyy\"});\r\n $sponsorToResetInput.unbind().click(function(){\r\n $sponsorToInput.val(\"\").datepicker(\"update\");\r\n });\r\n nurseslounge_degree_information.information_request_tab_sponsor_validate(function($form){\r\n var $formObj = libs.getObjForm($form);\r\n var $newParams = $.extend({},$params, $formObj);\r\n var $formSponsor = $sponsorInput.is(':checked');\r\n $newParams = $.extend({},$newParams, {sponsor:$formSponsor,tab:$tab});\r\n nurseslounge_degree_information.information_apply_set($action, $newParams, function($data){\r\n var $action = $data.data.action;\r\n var $degreeKey = $data.data.degree_key;\r\n $params = $.extend({},$params, {degree_key:$degreeKey,action:$action});\r\n if($data.status == 'success'){\r\n nurseslounge_degree_information.init($params, function($data){\r\n nurseslounge_degree_information.information_request_select_tab($action, $tab, $allowTabs, $params, cback);\r\n });\r\n }else{\r\n $modal.modal('hide');\r\n }\r\n });\r\n });\r\n if($degree.sponsored) {\r\n $sponsorInput.attr('checked', $degree.sponsored);\r\n }\r\n if($degree.date_from) {\r\n $sponsorFromInput.val($degree.date_from);\r\n $sponsorFromInput.datepicker(\"setDate\", $degree.date_from);\r\n }\r\n if($degree.date_to) {\r\n $sponsorToInput.val($degree.date_to);\r\n $sponsorToInput.datepicker(\"setDate\", $degree.date_to);\r\n }\r\n if(cback != undefined){\r\n cback();\r\n }\r\n },\r\n information_request_tab_sponsor_validate:function(cback){\r\n var $validator;\r\n try {\r\n $validator = $(\"#degree_sponsor form\").validate();\r\n $validator.destroy();\r\n }catch (e) {\r\n\r\n }\r\n $validator = $(\"#degree_sponsor form\").validate({\r\n onsubmit: true,\r\n debug: true,\r\n ignore: '*:not(.validate)',\r\n rules: {\r\n sponsor: {\r\n required: false\r\n },\r\n sponsorFromDate: {\r\n required: function(){\r\n var $sponsor = $('#degree_sponsor');\r\n return $sponsor.find('input[name=\"sponsor\"]').is(':checked');\r\n },\r\n minlength: 10,\r\n maxlength: 10,\r\n },\r\n sponsorToDate: {\r\n required: function(){\r\n var $sponsor = $('#degree_sponsor');\r\n return $sponsor.find('input[name=\"sponsor\"]').is(':checked');\r\n },\r\n minlength: 10,\r\n maxlength: 10,\r\n }\r\n },\r\n messages: {\r\n sponsor: {\r\n required: \"The sponsor is not required\",\r\n },\r\n sponsorFromDate: {\r\n required: \"The sponsor from date is required\",\r\n minlength: \"The sponsor from date is not a correct date\",\r\n maxlength: \"The sponsor from date is not a correct date\"\r\n },\r\n sponsorToDate: {\r\n required: \"The sponsor to date is required\",\r\n minlength: \"The sponsor to date is not a correct date\",\r\n maxlength: \"The sponsor to date is not a correct date\"\r\n },\r\n },\r\n errorPlacement: function($error, $element){\r\n var $ele = $($element);\r\n var $name = $ele.attr(\"name\");\r\n if(!$ele.hasClass('is-invalid')){\r\n $ele.addClass('is-invalid');\r\n }\r\n $(\".\"+$name+\"_validate\").html($($error).text()).show();\r\n },\r\n success: function($error, $element) {\r\n var $ele = $($element);\r\n var $name = $ele.attr(\"name\");\r\n if($ele.hasClass('is-invalid')){\r\n $ele.removeClass('is-invalid');\r\n }\r\n $(\".\"+$name+\"_validate\").html('').hide();\r\n },\r\n submitHandler: function($form) {\r\n cback($form);\r\n return false;\r\n }\r\n });\r\n },\r\n //Review\r\n information_review:function($params, $data, executed){\r\n var $reviewModal = $(\"#nurseslounge-degree-information-review-modal\");\r\n var $contentDiv = $reviewModal.find('.content:first');\r\n nurseslounge_degree_information.information_review_form($params, 'msg',function($chtml){\r\n $contentDiv.html($chtml).promise().done(function(){\r\n var $agreeCheckbox = $reviewModal.find('input[name=\"agree\"]');\r\n var $startBtn = $reviewModal.find('.start-btn');\r\n $agreeCheckbox.unbind().click(function(){\r\n if($agreeCheckbox.is(':checked')){\r\n nurseslounge_degree_information.information_review_count_down(function(){\r\n nurseslounge_degree_information.information_review_form($params, 'degree',function($chtml){\r\n $contentDiv.html($chtml).promise().done(function(){\r\n nurseslounge_degree_information.information_review_degree_events($params, $data, null, executed);\r\n });\r\n });\r\n });\r\n }else{\r\n $startBtn.prop('disabled', true);\r\n }\r\n });\r\n $reviewModal.modal('show');\r\n });\r\n });\r\n },\r\n information_remove_review:function($params, cback){\r\n $.ajax({\r\n url: \"/degree/reviews/delete\",\r\n method: \"POST\",\r\n cache:false,\r\n dataType: \"json\",\r\n data:$params,\r\n success: function ($data) {\r\n libs.expire($data);\r\n if($data.status == 'error'){\r\n $(\"#nurseslounge-degree-information-edit-modal\").modal('hide');\r\n $(\"#nurseslounge-degree-information-review-modal\").modal('hide');\r\n $(\"#nurseslounge-degree-request-info-modal\").modal('hide');\r\n }\r\n cback($data);\r\n }\r\n });\r\n },\r\n information_review_count_down:function(cback){\r\n var $reviewModal = $(\"#nurseslounge-degree-information-review-modal\");\r\n var $startBtn = $reviewModal.find('.start-btn');\r\n $startBtn.prop('disabled', false);\r\n $startBtn.unbind().click(function(){\r\n cback();\r\n });\r\n },\r\n information_review_form:function($params, $part, cback){\r\n $params = $.extend({},$params, {part:$part});\r\n $.ajax({\r\n type: 'POST',\r\n url: '/degree/informationReviewView/get',\r\n data:$params,\r\n method: \"POST\",\r\n cache:false,\r\n dataType: \"html\",\r\n success: function ($data) {\r\n libs.expire($data);\r\n if($data.status == 'error'){\r\n $(\"#nurseslounge-degree-information-edit-modal\").modal('hide');\r\n $(\"#nurseslounge-degree-information-review-modal\").modal('hide');\r\n $(\"#nurseslounge-degree-request-info-modal\").modal('hide');\r\n }\r\n cback($data);\r\n }\r\n });\r\n },\r\n information_review_degree_events:function($params, $data, cback, executed){\r\n if(!libs.memoryGet('degree-review')){\r\n libs.memorySave('degree-review', $params);\r\n }\r\n var $degree = $data.data.degree;\r\n var $myReview = $degree.my_review;\r\n var $reviewModal = $(\"#nurseslounge-degree-information-review-modal\");\r\n var $ratingStars = $reviewModal.find('.rating-stars:first');\r\n var $ratingCount = $reviewModal.find('.rating-count:first');\r\n var $overallInput = $reviewModal.find('input[name=\"overallRating\"]');\r\n var $form = $reviewModal.find(\".step1 form:first\");\r\n $form.unbind();\r\n $reviewModal.find('.step1').hide();\r\n $reviewModal.find('.step2').hide();\r\n $reviewModal.find('.current').hide();\r\n $reviewModal.find('.former').hide();\r\n $reviewModal.find('.step3').hide();\r\n //Fill\r\n var $degreeReview = libs.memoryGet('degree-review');\r\n var $overallRatingVal = $degreeReview.overallRating ? $degreeReview.overallRating : $myReview && $myReview.overall_rating ? $myReview.overall_rating : 0;\r\n var $recommendToFriendVal = $degreeReview.recommendToFriend ? $degreeReview.recommendToFriend : $myReview && $myReview.recommend_to_friend && $myReview.recommend_to_friend;\r\n var $studentTypeVal = $degreeReview.studentType ? $degreeReview.studentType : $myReview && $myReview.student_type ? $myReview.student_type : '';\r\n if($recommendToFriendVal != ''){\r\n $reviewModal.find('input[name=\"recommendToFriend\"][value='+$recommendToFriendVal+']').attr('checked', 'checked');\r\n }\r\n if($studentTypeVal != ''){\r\n $reviewModal.find('input[name=\"studentType\"][value='+$studentTypeVal+']').attr('checked', 'checked');\r\n }\r\n $ratingStars.html(nurseslounge_degree_information.add_stars($overallRatingVal));\r\n $ratingCount.html('

    '+$overallRatingVal+' / 5 Star

    ');\r\n $overallInput.val($overallRatingVal);\r\n //Events\r\n nurseslounge_degree_information.information_review_degree_events_validate_step1(function($form){\r\n libs.memoryUpdateObj('degree-review', libs.getObjForm($form));\r\n nurseslounge_degree_information.information_review_degree_step2($params, $data, cback, executed);\r\n });\r\n var $ratingStarsSvg = $ratingStars.find('svg');\r\n $ratingStarsSvg.unbind().click(function($event){\r\n var $that = $(this);\r\n var $left = $event.clientX - $that.offset().left;\r\n var $width = $that.width();\r\n var $leftColor = ($left * 100) / $width;\r\n var $rightColor = 100 - $leftColor;\r\n var $url = $that.attr('fill');\r\n $url = $url.replace('url(#','').replace(')','');\r\n var $percentReviewId = $url.replace('percentReview','');\r\n var $totalPercent = 500;\r\n var $actualPercent = 0;\r\n for(var $x=1;$x<=5;$x++){\r\n var $chtml = '';\r\n var $leftPercent;\r\n var $rightPercent;\r\n if($x == $percentReviewId){\r\n //$leftPercent = $leftColor < 15 ? 0 : $leftColor > 85 ? 100 : $leftColor;\r\n $leftPercent = $leftColor < 15 ? 0 : 100;\r\n $rightPercent = $rightColor;\r\n $actualPercent+= $leftPercent;\r\n }\r\n if($x < $percentReviewId){\r\n $leftPercent = 100;\r\n $rightPercent = 0;\r\n //$actualPercent+= $leftPercent;\r\n $actualPercent+= 100;\r\n }\r\n if($x > $percentReviewId){\r\n $leftPercent = 0;\r\n $rightPercent = 100;\r\n //$actualPercent+= $leftPercent;\r\n $actualPercent+= 0;\r\n }\r\n if($leftPercent > 10) {\r\n $chtml += '' +\r\n '';\r\n }\r\n if($rightPercent > 10) {\r\n $chtml += '' +\r\n '';\r\n }\r\n $(\"#percentReview\"+$x).html($chtml);\r\n }\r\n var $selectedPercent = ($actualPercent/$totalPercent) * 5;\r\n $selectedPercent = Math.ceil($selectedPercent * 10) / 10;\r\n $selectedPercent > 0 ? $selectedPercent.toFixed(1) : 0;\r\n $ratingCount.html('

    '+$selectedPercent+' / 5 Star

    ');\r\n $overallInput.val($selectedPercent);\r\n $form.find('.invalid-feedback').hide();\r\n $form.find('.error').removeClass('error');\r\n $form.find('.is-invalid').removeClass('is-invalid');\r\n });\r\n $reviewModal.find('.step1').show();\r\n $reviewModal.find('.step2').hide();\r\n $reviewModal.find('.step3').hide();\r\n if(cback != undefined){\r\n cback();\r\n }\r\n },\r\n add_stars:function($rating){\r\n var $chtml = '';\r\n for(var $i=1; $i<=5; $i++) {\r\n var $star = $rating - $i;\r\n var $offsetOn;\r\n var $offsetOff;\r\n if($star >= 0){\r\n $offsetOn = 100;\r\n $offsetOff = 0;\r\n }else if($star < 0 && $star > -1){\r\n $star = ($star * -1);\r\n $offsetOff = ($star * 100);\r\n $offsetOn = (100 - $offsetOff);\r\n }else{\r\n $offsetOn = 0;\r\n $offsetOff = 100;\r\n }\r\n $chtml += '' +\r\n '' +\r\n ' ' +\r\n ' ';\r\n if($offsetOn > 0) {\r\n $chtml += '' +\r\n '';\r\n }\r\n if($offsetOff > 0){\r\n $chtml += '' +\r\n '';\r\n }\r\n $chtml += '' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n '';\r\n }\r\n return $chtml;\r\n },\r\n information_review_degree_events_validate_step1:function(cback){\r\n $.validator.addMethod(\"greaterThanZero\", function($val) {\r\n return parseFloat($val) > 0;\r\n },'Must be greater than zero.');\r\n var $validator;\r\n try {\r\n $validator = $(\"#nurseslounge-degree-information-review-modal .step1 form\").validate();\r\n $validator.destroy();\r\n }catch (e) {\r\n\r\n }\r\n $validator = $(\"#nurseslounge-degree-information-review-modal .step1 form\").validate({\r\n onsubmit: true,\r\n debug: true,\r\n ignore: \"*:not(.validate)\",\r\n rules: {\r\n overallRating: {\r\n required: true,\r\n greaterThanZero: true\r\n },\r\n recommendToFriend: {\r\n required: true\r\n },\r\n studentType: {\r\n required: true\r\n }\r\n },\r\n messages: {\r\n overallRating: {\r\n required: \"The overall rating is required\",\r\n greaterThanZero: \"The overall rating must be greater than 0\",\r\n },\r\n recommendToFriend: {\r\n required: \"The recommend to a friend is required\"\r\n },\r\n studentType: {\r\n required: \"The student type is required\"\r\n }\r\n },\r\n errorPlacement: function($error, $element){\r\n var $ele = $($element);\r\n var $name = $ele.attr(\"name\");\r\n if(!$ele.hasClass('is-invalid')){\r\n $ele.addClass('is-invalid');\r\n }\r\n $(\".\"+$name+\"_validate\").html($($error).text()).show();\r\n },\r\n success: function($error, $element) {\r\n var $ele = $($element);\r\n var $name = $ele.attr(\"name\");\r\n if($ele.hasClass('is-invalid')){\r\n $ele.removeClass('is-invalid');\r\n }\r\n $(\".\"+$name+\"_validate\").html('').hide();\r\n },\r\n submitHandler: function($form) {\r\n cback($form);\r\n return false;\r\n }\r\n });\r\n },\r\n information_review_degree_step2:function($params, $data, cback, executed){\r\n var $degree = $data.data.degree;\r\n var $myReview = $degree.my_review;\r\n var $reviewModal = $(\"#nurseslounge-degree-information-review-modal\");\r\n var $expectedGraduationDateSelect = $reviewModal.find('select[name=\"expectedGraduationDate\"]');\r\n var $degreeProgramCurrentSelect = $reviewModal.find('select[name=\"degreeProgramCurrent\"]');\r\n var $otherProgramCurrentInput = $reviewModal.find('input[name=\"otherProgramCurrent\"]');\r\n var $yearGraduatedSelect = $reviewModal.find('select[name=\"yearGraduated\"]');\r\n var $degreeProgramFormerSelect = $reviewModal.find('select[name=\"degreeProgramFormer\"]');\r\n var $otherProgramFormerInput = $reviewModal.find('input[name=\"otherProgramFormer\"]');\r\n var $otherDegreeCurrent = $reviewModal.find('.other-degree-current');\r\n var $otherDegreeFormer = $reviewModal.find('.other-degree-former');\r\n var $back = $reviewModal.find('.back');\r\n var $form = $reviewModal.find(\".step2 form:first\");\r\n $form.unbind();\r\n $reviewModal.find('.step1').hide();\r\n $reviewModal.find('.step2').hide();\r\n $reviewModal.find('.current').hide();\r\n $reviewModal.find('.former').hide();\r\n $reviewModal.find('.step3').hide();\r\n var $review = libs.memoryGet('degree-review');\r\n var $studentTypeOption = $review.studentType;\r\n switch ($studentTypeOption) {\r\n case 'current':\r\n $reviewModal.find('.current').show();\r\n nurseslounge_degree_information.information_review_degree_events_validate_step2_current(function($form){\r\n libs.memoryUpdateObj('degree-review', libs.getObjForm($form));\r\n nurseslounge_degree_information.information_review_school_step3($params, $data, cback, executed);\r\n });\r\n var $expectedGraduationDateVal = $review && $review.expectedGraduationDate ? $review.expectedGraduationDate : $myReview && $myReview.expected_graduation_date ? $myReview.expected_graduation_date : '';\r\n $expectedGraduationDateSelect.val($expectedGraduationDateVal);\r\n var $degreeProgramCurrentVal = $review && $review.degreeProgramCurrent ? $review.degreeProgramCurrent : $myReview && $myReview.degree_program ? $myReview.degree_program : $degree && $degree.title ? $degree.title : '';\r\n $degreeProgramCurrentSelect.val($degreeProgramCurrentVal);\r\n if($degreeProgramCurrentVal == 'other'){\r\n $otherDegreeCurrent.show();\r\n }else{\r\n $otherDegreeCurrent.hide();\r\n }\r\n var $otherProgramCurrentVal = $review && $review.otherProgramCurrent ? $review.otherProgramCurrent : $myReview && $myReview.other_program ? $myReview.other_program : '';\r\n $otherProgramCurrentInput.val($otherProgramCurrentVal);\r\n break;\r\n case 'former':\r\n $reviewModal.find('.former').show();\r\n nurseslounge_degree_information.information_review_degree_events_validate_step2_former(function($form){\r\n libs.memoryUpdateObj('degree-review', libs.getObjForm($form));\r\n nurseslounge_degree_information.information_review_school_step3($params, $data, cback, executed);\r\n });\r\n var $yearGraduatedSelectVal = $review && $review.yearGraduated ? $review.yearGraduated : $myReview && $myReview.year_graduated ? $myReview.year_graduated : '';\r\n $yearGraduatedSelect.val($yearGraduatedSelectVal);\r\n var $degreeProgramFormerVal = $review && $review.degreeProgramFormer ? $review.degreeProgramFormer : $myReview && $myReview.degree_program ? $myReview.degree_program : $degree && $degree.title ? $degree.title : '';\r\n $degreeProgramFormerSelect.val($degreeProgramFormerVal);\r\n if($degreeProgramFormerVal == 'other'){\r\n $otherDegreeFormer.show();\r\n }else{\r\n $otherDegreeFormer.hide();\r\n }\r\n var $otherDegreeFormerVal = $review && $review.otherProgramFormer ? $review.otherProgramFormer : $myReview && $myReview.other_program ? $myReview.other_program : '';\r\n $otherProgramFormerInput.val($otherDegreeFormerVal);\r\n break;\r\n }\r\n $back.unbind().click(function(){\r\n nurseslounge_degree_information.information_review_degree_events($params, $data, cback, executed);\r\n });\r\n $degreeProgramCurrentSelect.unbind().change(function(){\r\n if($(this).val() == 'other'){\r\n $otherDegreeCurrent.show();\r\n }else{\r\n $otherDegreeCurrent.hide();\r\n }\r\n });\r\n $degreeProgramFormerSelect.unbind().change(function(){\r\n if($(this).val() == 'other'){\r\n $otherDegreeFormer.show();\r\n }else{\r\n $otherDegreeFormer.hide();\r\n }\r\n });\r\n $reviewModal.find('.step1').hide();\r\n $reviewModal.find('.step2').show();\r\n $reviewModal.find('.step3').hide();\r\n },\r\n information_review_degree_events_validate_step2_current:function(cback){\r\n var $validator;\r\n try {\r\n $validator = $(\"#nurseslounge-degree-information-review-modal .step2 form\").validate();\r\n $validator.destroy();\r\n }catch (e) {\r\n\r\n }\r\n $validator = $(\"#nurseslounge-degree-information-review-modal .step2 form\").validate({\r\n onsubmit: true,\r\n debug: true,\r\n ignore: \"*:not(.validate)\",\r\n rules: {\r\n expectedGraduationDate:{\r\n required: true\r\n },\r\n degreeProgramCurrent:{\r\n required: true\r\n },\r\n otherProgramCurrent:{\r\n required: function(){\r\n return $(\"#nurseslounge-degree-information-review-modal .step2\").find('select[name=\"degreeProgramCurrent\"]').val() == 'other';\r\n },\r\n minlength: 1,\r\n maxlength: 600\r\n }\r\n },\r\n messages: {\r\n expectedGraduationDate:{\r\n required: \"The expected graduation is required\"\r\n },\r\n degreeProgramCurrent:{\r\n required: \"The degree program is required\"\r\n },\r\n otherProgramCurrent: {\r\n required: \"The other degree program is required\",\r\n minlength: \"The other degree program is must have at least 1 characters\",\r\n maxlength: \"The other degree program is cannot exceed 600 characters\"\r\n }\r\n },\r\n errorPlacement: function($error, $element){\r\n var $ele = $($element);\r\n var $name = $ele.attr(\"name\");\r\n if(!$ele.hasClass('is-invalid')){\r\n $ele.addClass('is-invalid');\r\n }\r\n $(\".\"+$name+\"_validate\").html($($error).text()).show();\r\n },\r\n success: function($error, $element) {\r\n var $ele = $($element);\r\n var $name = $ele.attr(\"name\");\r\n if($ele.hasClass('is-invalid')){\r\n $ele.removeClass('is-invalid');\r\n }\r\n $(\".\"+$name+\"_validate\").html('').hide();\r\n },\r\n submitHandler: function($form) {\r\n cback($form);\r\n return false;\r\n }\r\n });\r\n },\r\n information_review_degree_events_validate_step2_former:function(cback){\r\n var $validator;\r\n try {\r\n $validator = $(\"#nurseslounge-degree-information-review-modal .step2 form\").validate();\r\n $validator.destroy();\r\n }catch (e) {\r\n\r\n }\r\n $validator = $(\"#nurseslounge-degree-information-review-modal .step2 form\").validate({\r\n onsubmit: true,\r\n debug: true,\r\n ignore: \"*:not(.validate)\",\r\n rules: {\r\n yearGraduated:{\r\n required: true\r\n },\r\n degreeProgramFormer:{\r\n required: true\r\n },\r\n otherProgramFormer:{\r\n required: function(){\r\n return $(\"#nurseslounge-degree-information-review-modal .step2\").find('select[name=\"degreeProgramFormer\"]').val() == 'other';\r\n },\r\n minlength: 1,\r\n maxlength: 600\r\n }\r\n },\r\n messages: {\r\n yearGraduated:{\r\n required: \"The year of graduation is required\"\r\n },\r\n degreeProgramFormer:{\r\n required: \"The degree program is required\"\r\n },\r\n otherProgramFormer: {\r\n required: \"The other degree program is required\",\r\n minlength: \"The other degree program is must have at least 1 characters\",\r\n maxlength: \"The other degree program is cannot exceed 600 characters\"\r\n }\r\n },\r\n errorPlacement: function($error, $element){\r\n var $ele = $($element);\r\n var $name = $ele.attr(\"name\");\r\n if(!$ele.hasClass('is-invalid')){\r\n $ele.addClass('is-invalid');\r\n }\r\n $(\".\"+$name+\"_validate\").html($($error).text()).show();\r\n },\r\n success: function($error, $element) {\r\n var $ele = $($element);\r\n var $name = $ele.attr(\"name\");\r\n if($ele.hasClass('is-invalid')){\r\n $ele.removeClass('is-invalid');\r\n }\r\n $(\".\"+$name+\"_validate\").html('').hide();\r\n },\r\n submitHandler: function($form) {\r\n cback($form);\r\n return false;\r\n }\r\n });\r\n },\r\n information_review_school_step3:function($params, $data, cback, executed){\r\n var $degree = $data.data.degree;\r\n var $myReview = $degree.my_review;\r\n var $reviewModal = $(\"#nurseslounge-degree-information-review-modal\");\r\n var $locationSelect = $reviewModal.find('select[name=\"location\"]');\r\n var $degreeHeadlineInput = $reviewModal.find('input[name=\"degreeHeadline\"]');\r\n var $prosText = $reviewModal.find('textarea[name=\"pros\"]');\r\n var $consText = $reviewModal.find('textarea[name=\"cons\"]');\r\n var $form = $reviewModal.find(\".step3 form:first\");\r\n $form.unbind();\r\n $reviewModal.find('.step1').hide();\r\n $reviewModal.find('.step2').hide();\r\n $reviewModal.find('.current').hide();\r\n $reviewModal.find('.former').hide();\r\n $reviewModal.find('.step3').hide();\r\n var $review = libs.memoryGet('degree-review');\r\n var $back = $reviewModal.find('.back');\r\n nurseslounge_degree_information.information_review_degree_events_validate_step3(function($form){\r\n libs.memoryUpdateObj('degree-review', libs.getObjForm($form));\r\n nurseslounge_degree_information.information_form_request(function($data){\r\n executed();\r\n });\r\n });\r\n $back.unbind().click(function(){\r\n nurseslounge_degree_information.information_review_degree_step2($params, $data, cback, executed);\r\n });\r\n var $locationSelectVal = $review && $review.location ? $review.location : $myReview && $myReview.location ? $myReview.location : '';\r\n $locationSelect.val($locationSelectVal);\r\n var $degreeHeadlineVal = $review && $review.degreeHeadline ? $review.degreeHeadline : $myReview && $myReview.degree_headline ? $myReview.degree_headline : '';\r\n $degreeHeadlineInput.val($degreeHeadlineVal);\r\n var $prosVal = $review && $review.pros ? $review.pros : $myReview && $myReview.pros ? $myReview.pros : '';\r\n $prosText.val($prosVal);\r\n var $consVal = $review && $review.cons ? $review.cons : $myReview && $myReview.cons ? $myReview.cons : '';\r\n $consText.val($consVal);\r\n $reviewModal.find('.step1').hide();\r\n $reviewModal.find('.step2').hide();\r\n $reviewModal.find('.current').hide();\r\n $reviewModal.find('.former').hide();\r\n $reviewModal.find('.step3').show();\r\n },\r\n information_review_degree_events_validate_step3:function(cback){\r\n var $validator;\r\n try {\r\n $validator = $(\"#nurseslounge-degree-information-review-modal .step3 form\").validate();\r\n $validator.destroy();\r\n }catch (e) {\r\n\r\n }\r\n $validator = $(\"#nurseslounge-degree-information-review-modal .step3 form\").validate({\r\n onsubmit: true,\r\n debug: true,\r\n ignore: \"*:not(.validate)\",\r\n rules: {\r\n location:{\r\n required: true\r\n },\r\n degreeHeadline:{\r\n required: true,\r\n minlength: 3,\r\n maxlength: 191\r\n },\r\n pros:{\r\n required: true,\r\n minlength: 3,\r\n maxlength: 600\r\n },\r\n cons:{\r\n required: false,\r\n minlength: 3,\r\n maxlength: 600\r\n }\r\n },\r\n messages: {\r\n location:{\r\n required: \"The location is required\"\r\n },\r\n degreeHeadline:{\r\n required: \"The degree headline is required\",\r\n minlength: \"The degree headline must have at least 3 characters\",\r\n maxlength: \"The degree headline cannot exceed 191 characters\"\r\n },\r\n pros:{\r\n required: \"The pros is required\",\r\n minlength: \"The pros must have at least 3 characters\",\r\n maxlength: \"The pros cannot exceed 600 characters\"\r\n },\r\n cons:{\r\n required: \"The suggestion is not required\",\r\n minlength: \"The suggestion must have at least 3 characters\",\r\n maxlength: \"The suggestion cannot exceed 600 characters\"\r\n }\r\n },\r\n errorPlacement: function($error, $element){\r\n var $ele = $($element);\r\n var $name = $ele.attr(\"name\");\r\n if(!$ele.hasClass('is-invalid')){\r\n $ele.addClass('is-invalid');\r\n }\r\n $(\".\"+$name+\"_validate\").html($($error).text()).show();\r\n },\r\n success: function($error, $element) {\r\n var $ele = $($element);\r\n var $name = $ele.attr(\"name\");\r\n if($ele.hasClass('is-invalid')){\r\n $ele.removeClass('is-invalid');\r\n }\r\n $(\".\"+$name+\"_validate\").html('').hide();\r\n },\r\n submitHandler: function($form) {\r\n cback($form);\r\n return false;\r\n }\r\n });\r\n },\r\n information_form_request:function(cback){\r\n $.ajax({\r\n url: \"/degree/reviews/set\",\r\n method: \"POST\",\r\n cache:false,\r\n dataType: \"json\",\r\n data:libs.memoryGet('degree-review'),\r\n success: function ($data) {\r\n libs.expire($data);\r\n if($data.status == 'error'){\r\n $(\"#nurseslounge-degree-information-edit-modal\").modal('hide');\r\n $(\"#nurseslounge-degree-information-review-modal\").modal('hide');\r\n $(\"#nurseslounge-degree-request-info-modal\").modal('hide');\r\n }\r\n cback($data);\r\n }\r\n });\r\n },\r\n //Meet our recruiters\r\n information_meet_our_recruiters:function(cback){\r\n cback({\r\n 'container':$(\"#nurseslounge-degree-information .nurseslounge-degree-information-right .meet-our-recruiters\")\r\n });\r\n },\r\n //Banners\r\n banners_location:function(cback){\r\n cback({\r\n 'banners':$(\"#nurseslounge-degree-information .nurseslounge-degree-information-right .banners\")\r\n });\r\n },\r\n};\r\n","var nurseslounge_degree_reviews = {\r\n init:function($params, cback){\r\n $params = $.extend({},$params, {\r\n user_id:libs.memoryGet('user_id'),\r\n tab:'review_init'\r\n });\r\n nurseslounge_degree_reviews.reviews_get($params, function($data){\r\n nurseslounge_degree_reviews.reviews_rating($params, $data);\r\n if(cback != undefined){\r\n cback();\r\n }\r\n });\r\n nurseslounge_degree_reviews.banners_location(function($config){\r\n nurseslounge_myDashboard_myProfile.banners_engine($config);\r\n });\r\n },\r\n reviews_get:function($params, cback){\r\n $.ajax({\r\n url: \"/degree/reviews/get\",\r\n method: \"POST\",\r\n cache:false,\r\n dataType: \"json\",\r\n data:$params,\r\n success: function ($data) {\r\n libs.expire($data);\r\n if($data.status == 'error'){\r\n $(\"#nurseslounge-degree-information-review-modal\").modal('hide');\r\n $(\"#nurseslounge-degree-review-answer-modal\").modal('hide');\r\n }\r\n cback($data);\r\n }\r\n });\r\n },\r\n reviews_rating:function($params, $data){\r\n var $nursesloungeDegreeReview = $(\"#nurseslounge-degree-reviews\");\r\n var $reviewModal = $(\"#nurseslounge-degree-information-review-modal\");\r\n var $degreeReviewsRight = $nursesloungeDegreeReview.find('.nurseslounge-degree-reviews-right:first');\r\n var $ratingFirst = $degreeReviewsRight.find('.rating-stars:first');\r\n var $ratingCount = $degreeReviewsRight.find('.rating-count:first');\r\n var $addReviewFirst = $degreeReviewsRight.find('.add-review:first');\r\n var $deleteReviewFirst = $degreeReviewsRight.find('.delete-review:first');\r\n $ratingFirst.unbind().click(function(){\r\n nurseslounge_degree_information.information_review($params, $data, function(){\r\n libs.refreshBoxFrom('.review-box', $params, function(){\r\n nurseslounge_degree_reviews.init($params);\r\n $reviewModal.modal('hide');\r\n });\r\n });\r\n });\r\n $ratingCount.unbind().click(function(){\r\n nurseslounge_degree_information.information_review($params, $data, function(){\r\n libs.refreshBoxFrom('.review-box', $params, function(){\r\n nurseslounge_degree_reviews.init($params);\r\n $reviewModal.modal('hide');\r\n });\r\n });\r\n });\r\n $addReviewFirst.unbind().click(function(){\r\n nurseslounge_degree_information.information_review($params, $data, function(){\r\n libs.refreshBoxFrom('.review-box', $params, function(){\r\n nurseslounge_degree_reviews.init($params);\r\n $reviewModal.modal('hide');\r\n });\r\n });\r\n });\r\n $deleteReviewFirst.unbind().click(function(){\r\n if(confirm('Are you sure you want to delete your review?')){\r\n nurseslounge_degree_information.information_remove_review($params, function(){\r\n libs.refreshBoxFrom('.review-box', $params, function(){\r\n nurseslounge_degree_reviews.init($params);\r\n $reviewModal.modal('hide');\r\n });\r\n });\r\n }\r\n });\r\n nurseslounge_degree_reviews.reviews_rating_list($params);\r\n },\r\n reviews_rating_list:function($params){\r\n var $loungeReviewsLeft = $(\"#nurseslounge-degree-reviews .nurseslounge-degree-reviews-left\");\r\n var $commentsList = $loungeReviewsLeft.find(\".comments-list:first\");\r\n var $commentsListPreview = nurseslounge_degree_reviews.comments_preview();\r\n var $resultInfo = $loungeReviewsLeft.find(\".result-info-count:first\");\r\n var $resultPreview = ' ';\r\n var $paginationNav = $loungeReviewsLeft.find('.pagination-nav');\r\n var $paginationNavPreview = ' ';\r\n $resultInfo.addClass('nurseslounge-degree-reviews-preload').html($resultPreview);\r\n $paginationNav.addClass('nurseslounge-degree-reviews-preload').html($paginationNavPreview);\r\n $commentsList.html($commentsListPreview).promise().done(function(){\r\n nurseslounge_degree_reviews.reviews_rating_pagination($params);\r\n });\r\n },\r\n comments_preview:function(){\r\n var $chtml = '';\r\n for(var $i=1; $i<=5; $i++){\r\n $chtml+= '' +\r\n '
  • ' +\r\n '
    ' +\r\n '
    ' +\r\n '
    ' +\r\n '
    ' +\r\n ' ' +\r\n '

     

    ' +\r\n '
    ' +\r\n '
    ' +\r\n ' ' +\r\n '

     

    ' +\r\n '
    ' +\r\n '
    ' +\r\n ' ' +\r\n '

     

    ' +\r\n '
    ' +\r\n '
    ' +\r\n '
    ' +\r\n '
    ' +\r\n '
    ' +\r\n '
    ' +\r\n '
    ' +\r\n ' Review' +\r\n '
    ' +\r\n '
    ' +\r\n '
    ' +\r\n '
    ' +\r\n '
    ' +\r\n '         ' +\r\n '         ' +\r\n '
    ' +\r\n '
    ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n '
    ' +\r\n '
    ' +\r\n '
    ' +\r\n '
    ' +\r\n '
    ' +\r\n '
    ' +\r\n '
    ' +\r\n '
     
    ' +\r\n '

     

    ' +\r\n '
    ' +\r\n '
    ' +\r\n '
    ' +\r\n '
    ' +\r\n '
     
    ' +\r\n '

     

    ' +\r\n '
    ' +\r\n '
    ' +\r\n '
    ' +\r\n '
  • ';\r\n }\r\n return $chtml;\r\n },\r\n reviews_rating_pagination:function($params){\r\n var $reload;\r\n var $loaded = false;\r\n var $afterFirstPagination = false;\r\n var $loungeReviewsLeft = $(\"#nurseslounge-degree-reviews .nurseslounge-degree-reviews-left\");\r\n var $commentsList = $loungeReviewsLeft.find('.comments-list:first');\r\n var $paginationNav = $loungeReviewsLeft.find('.pagination-nav:first');\r\n var $previewHeight = $loungeReviewsLeft.find('.comments-list .preview:first').innerHeight();\r\n var $commentsHeight = $commentsList.innerHeight();\r\n var $pageSize = Math.round(($commentsHeight/$previewHeight));\r\n var $resultInfo = $loungeReviewsLeft.find(\".result-info-count:first\");\r\n var $saveParams = $params;\r\n var $paginationObj;\r\n var $userCredential;\r\n try{\r\n $paginationObj = libs.memoryGet('reviews_rating_pagination');\r\n if($paginationObj){\r\n $paginationObj.pagination('destroy');\r\n }\r\n }catch ($e) {\r\n }\r\n $paginationObj = $paginationNav.pagination({\r\n pageSize: $pageSize,\r\n showPageNumbers: true,\r\n showPrevious: true,\r\n showNext: true,\r\n showNavigator: true,\r\n showFirstOnEllipsisShow: true,\r\n showLastOnEllipsisShow: true,\r\n dataSource:window.location.protocol +'//'+ window.location.hostname + \"/degree/reviews/get\",\r\n locator: 'data.reviews',\r\n ajax:{\r\n method: \"POST\",\r\n cache:false,\r\n dataType: \"json\",\r\n data:$.extend({}, $params, {tab:'reviews_list'}),\r\n beforeSend: function() {\r\n $commentsList.html(nurseslounge_degree_reviews.comments_preview());\r\n },\r\n complete:function($data){\r\n libs.expire($data.responseJSON);\r\n if($data.responseJSON.status == 'error'){\r\n $(\"#nurseslounge-degree-information-review-modal\").modal('hide');\r\n $(\"#nurseslounge-degree-review-answer-modal\").modal('hide');\r\n }\r\n }\r\n },\r\n totalNumberLocator: function($data) {\r\n $userCredential = $data.data.user_credential.map(function($x){return parseInt($x);});\r\n return $data.data.total;\r\n },\r\n callback: function($data, $pagination) {\r\n $loaded = true;\r\n if($commentsList.length > 0 && $commentsList.offset().top && $afterFirstPagination){\r\n $('html, body').animate({scrollTop:$commentsList.offset().top - 100});\r\n }else{\r\n $afterFirstPagination = true;\r\n }\r\n var $pageNumber = $pagination.pageNumber;\r\n var $pageSize = $pagination.pageSize;\r\n var $totalNumber = $pagination.totalNumber;\r\n var $first = $totalNumber > 0 ? (($pageNumber-1) * $pageSize) + 1 : 0;\r\n var $last = $totalNumber > 0 ? ($first + $data.length - 1) : 0;\r\n $paginationNav.removeClass('nurseslounge-degree-reviews-preload');\r\n $resultInfo.removeClass('nurseslounge-degree-reviews-preload').html('Showing '+$first+' - '+$last+' of '+$totalNumber+' results for Reviews');\r\n var $chtml = nurseslounge_degree_reviews.item_html($data, $userCredential);\r\n libs.checkImageLoad($($chtml).find('img'), function () {\r\n $commentsList.html('').html($chtml).promise().done(function () {\r\n nurseslounge_degree_reviews.list_events($saveParams);\r\n });\r\n });\r\n }\r\n });\r\n libs.memorySave('reviews_rating_pagination', $paginationObj);\r\n $reload = setTimeout(function(){\r\n if(!$loaded){\r\n nurseslounge_degree_reviews.reviews_rating_pagination($params);\r\n }else{\r\n clearTimeout($reload);\r\n }\r\n }, 10000);\r\n },\r\n item_html:function($reviews, $userCredential){\r\n var $chtml = '';\r\n $.each($reviews, function($i, $v){\r\n $chtml+='' +\r\n '
  • ' +\r\n '
    ' +\r\n '
    ' +\r\n '
    ';\r\n if($userCredential && $.inArray(21, $userCredential) != -1) {\r\n $chtml+='' +\r\n '
    ' +\r\n ' \"horizontal' +\r\n '
    ';\r\n }\r\n $chtml+='' +\r\n '
    ' +\r\n ' ' +\r\n '

    '+$v.degree_program+'

    ' +\r\n '
    ' +\r\n '
    ' +\r\n ' ' +\r\n '

    '+$v.location.replace('_', ' ')+'

    ' +\r\n '
    ' +\r\n '
    ';\r\n if($v.recommend_to_friend == 'yes'){\r\n $chtml+='' +\r\n '
    ' +\r\n '
    ' +\r\n ' ' +\r\n '
    ' +\r\n '
    ';\r\n }\r\n $chtml+='' +\r\n '
    ' +\r\n '
    ' +\r\n '
    ' +\r\n '
    ' +\r\n '
    ' +\r\n '
    ' +\r\n '
    ' +\r\n ' Review' +\r\n '
    ' +\r\n '
    ' +\r\n '
    ' +\r\n '
    ' +\r\n '
    ' +\r\n $v.overall_rating + ' / 5' +\r\n '
    ' +\r\n '
    ' +\r\n nurseslounge_degree_reviews.add_stars($v.overall_rating) +\r\n '
    ' +\r\n '
    ' +\r\n '
    ' +\r\n '
    ' +\r\n '
    ';\r\n if($v.pros && $v.pros != '') {\r\n $chtml += '' +\r\n '
    ' +\r\n '
    ' +\r\n '
    Pros
    ' +\r\n '

    ' + $v.pros + '

    ' +\r\n '
    ' +\r\n '
    ';\r\n }\r\n if($v.cons && $v.cons != '') {\r\n $chtml += '' +\r\n '
    ' +\r\n '
    ' +\r\n '
    Cons
    ' +\r\n '

    ' + $v.cons + '

    ' +\r\n '
    ' +\r\n '
    ';\r\n }\r\n $chtml+='' +\r\n '
    ';\r\n\r\n if($v.answer) {\r\n $chtml += '' +\r\n '
    ' +\r\n '
    ' +\r\n '
    Response from ' +\r\n ' ' +\r\n $v.answer.user.long_name +\r\n ' ' +\r\n '
    ' +\r\n '
    ' +\r\n '

    ' +\r\n $v.answer.answer +\r\n '

    ' +\r\n '
    ' +\r\n '
    ' +\r\n '
    ';\r\n }\r\n\r\n $chtml+='' +\r\n '
  • ';\r\n });\r\n return $chtml;\r\n },\r\n add_stars:function($rating){\r\n var $chtml = '';\r\n for(var $i=1; $i<=5; $i++) {\r\n var $star = $rating - $i;\r\n var $offsetOn;\r\n var $offsetOff;\r\n var $unique = libs.getUniqueId();\r\n if($star >= 0){\r\n $offsetOn = 100;\r\n $offsetOff = 0;\r\n }else if($star < 0 && $star > -1){\r\n $star = ($star * -1);\r\n $offsetOff = ($star * 100);\r\n $offsetOn = (100 - $offsetOff);\r\n }else{\r\n $offsetOn = 0;\r\n $offsetOff = 100;\r\n }\r\n $chtml += '' +\r\n '' +\r\n ' ' +\r\n ' ';\r\n if($offsetOn > 0) {\r\n $chtml += '' +\r\n '';\r\n }\r\n if($offsetOff > 0){\r\n $chtml += '' +\r\n '';\r\n }\r\n $chtml += '' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n '';\r\n }\r\n return $chtml;\r\n },\r\n list_events:function($params){\r\n var $loungeReviewsLeft = $(\"#nurseslounge-degree-reviews .nurseslounge-degree-reviews-left\");\r\n var $commentsList = $loungeReviewsLeft.find('.comments-list:first');\r\n $commentsList.find('.answer-review').unbind().click(function(){\r\n var $key = $(this).parents('li:first').data('key');\r\n nurseslounge_degree_reviews.reviews_edit_review($params, $key);\r\n });\r\n $commentsList.find('.open-url').unbind().click(function(){\r\n var $url = $(this).data('url');\r\n window.open($url,'_blank');\r\n });\r\n },\r\n reviews_edit_review:function($params, $reviewKey){\r\n $params = $.extend({},$params,{\r\n user_id:libs.memoryGet('user_id'),\r\n review_key:$reviewKey,\r\n tab:'review'\r\n });\r\n var $modal = $(\"#nurseslounge-degree-review-answer-modal\");\r\n var $modalInfo = $modal.find('.modal-info');\r\n nurseslounge_degree_reviews.reviews_get($params, function($data){\r\n var $modalInfoContent = nurseslounge_degree_reviews.item_popup_html($data);\r\n $modalInfo.html($modalInfoContent).promise().done(function () {\r\n nurseslounge_degree_reviews.reviews_popup_events($params, $data, function () {\r\n $modal.modal('show');\r\n });\r\n });\r\n });\r\n },\r\n item_popup_html:function($data){\r\n var $review = $data.data.review;\r\n var $chtml = '';\r\n $chtml+='' +\r\n '
    ' +\r\n '
    ' +\r\n '
    ' +\r\n ' Written by' +\r\n ' '+$review.user.long_name+'' +\r\n '
    ' +\r\n '
    ' +\r\n '
    ' +\r\n '
    '+$review.date+'
    ' +\r\n '
    ' +\r\n '
    ' +\r\n '
    ' +\r\n '
    ' +\r\n '
    ' +\r\n '
    ' +\r\n '
    ' +\r\n ' ' +\r\n '

    '+$review.degree_program+'

    ' +\r\n '
    ' +\r\n '
    ' +\r\n ' ' +\r\n '

    '+$review.location.replace('_',' ')+'

    ' +\r\n '
    ' +\r\n '
    ';\r\n if($review.recommend_to_friend == 'yes'){\r\n $chtml+='' +\r\n '
    ' +\r\n '
    ' +\r\n ' ' +\r\n '
    ' +\r\n '
    ';\r\n }\r\n $chtml+='' +\r\n '
    ' +\r\n '
    ' +\r\n '
    ' +\r\n '
    ' +\r\n '
    ' +\r\n '
    ' +\r\n '
    ' +\r\n ' Review' +\r\n '
    ' +\r\n '
    ' +\r\n '
    ' +\r\n '
    ' +\r\n '
    ' +\r\n $review.overall_rating + ' / 5' +\r\n '
    ' +\r\n '
    ' +\r\n nurseslounge_degree_reviews.add_stars($review.overall_rating) +\r\n '
    ' +\r\n '
    ' +\r\n '
    ' +\r\n '
    ' +\r\n '
    ';\r\n if($review.pros && $review.pros != '') {\r\n $chtml += '' +\r\n '
    ' +\r\n '
    ' +\r\n '
    Pros
    ' +\r\n '

    ' + $review.pros + '

    ' +\r\n '
    ' +\r\n '
    ';\r\n }\r\n if($review.cons && $review.cons != '') {\r\n $chtml += '' +\r\n '
    ' +\r\n '
    ' +\r\n '
    Cons
    ' +\r\n '

    ' + $review.cons + '

    ' +\r\n '
    ' +\r\n '
    ';\r\n }\r\n $chtml+='' +\r\n '
    ' +\r\n '
    ' +\r\n '
    ';\r\n if($review && $review.answer) {\r\n $chtml += '' +\r\n '
    ' +\r\n ' Response from' +\r\n ' ' +\r\n $review.answer.user.long_name +\r\n ' ' +\r\n '
    ';\r\n }\r\n $chtml+='' +\r\n '
    ' +\r\n '
    ' +\r\n ' ' +\r\n '
    ' +\r\n '
    ' +\r\n '
    ' +\r\n '
    ' +\r\n '
    ' +\r\n '
    ' +\r\n '
    ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n '
    ' +\r\n '
    ';\r\n\r\n return $chtml;\r\n },\r\n reviews_popup_events:function($params, $data, cback){\r\n var $modal = $(\"#nurseslounge-degree-review-answer-modal\");\r\n var $answer = $modal.find('textarea[name=\"answer\"]');\r\n $modal.find('.option').unbind().click(function(){\r\n var $that = $(this);\r\n var $action = $that.data('action');\r\n $params = $.extend({},$params, {action:$action,answer:$answer.val()});\r\n nurseslounge_degree_reviews.review_answer_set($params, function($data) {\r\n switch($action){\r\n case 'delete review':\r\n libs.refreshBoxFrom('.review-box', $params, function () {\r\n nurseslounge_degree_reviews.init($params, function(){\r\n $modal.modal('hide');\r\n });\r\n });\r\n break;\r\n case 'delete answer':\r\n nurseslounge_degree_reviews.init($params, function(){\r\n $modal.modal('hide');\r\n });\r\n break;\r\n case 'save':\r\n nurseslounge_degree_reviews.init($params, function(){\r\n $modal.modal('hide');\r\n });\r\n break;\r\n }\r\n });\r\n });\r\n $modal.find('.open-url').unbind().click(function(){\r\n var $url = $(this).data('url');\r\n window.open($url,'_blank');\r\n });\r\n if(cback != undefined){\r\n cback();\r\n }\r\n },\r\n review_answer_set:function($params, cback){\r\n $.ajax({\r\n url: \"/degree/review/answer/set\",\r\n method: \"POST\",\r\n cache:false,\r\n dataType: \"json\",\r\n data:$params,\r\n success: function ($data) {\r\n libs.expire($data);\r\n if($data.status == 'error'){\r\n $(\"#nurseslounge-degree-information-review-modal\").modal('hide');\r\n $(\"#nurseslounge-degree-review-answer-modal\").modal('hide');\r\n }\r\n cback($data);\r\n }\r\n });\r\n },\r\n //Banners\r\n banners_location:function(cback){\r\n cback({\r\n 'banners':$(\"#nurseslounge-degree-reviews .nurseslounge-degree-reviews-right .banners\")\r\n });\r\n },\r\n};\r\n","var nurseslounge_jobs = {\n init:function($params){\n $params = {user_id:libs.memoryGet('user_id')};\n nurseslounge_myDashboard_recommendations.init($params);\n nurseslounge_myDashboard_accountSettings.init($params);\n nurseslounge_jobs.menu_selector(function(){\n nurseslounge_jobs.jobs_events($params, function(){\n nurseslounge_jobs.jobs_main_form_validate(function($form){\n $params = $.extend({}, $params, libs.getObjForm($form));\n nurseslounge_jobs.jobs_search($params);\n });\n });\n });\n },\n menu_selector:function(cback){\n $(\"footer\").hide();\n $(\"#nurseslounge-jobs .nurseslounge-jobs\").hide();\n libs.globalUrl();\n cback();\n },\n jobs_events:function($params, cback){\n var $jobsMain = $(\"#nurseslounge-jobs .nurseslounge-jobs-main form\");\n var $search = $jobsMain.find(\"input[name='search']\")[0];\n new google.maps.places.Autocomplete($search, {\n types: ['(regions)'],\n componentRestrictions: {country: \"us\"}\n });\n var $employerName = $jobsMain.find('input[name=\"employerName\"]').unbind();\n nurseslounge_jobs.jobs_employer_autocomplete(\n $employerName,\n $params,\n \"/jobs/autocomplete\"\n );\n $jobsMain.find(\".clear\").unbind().click(function(){\n $jobsMain[0].reset();\n });\n var $jobsRight = $(\"#nurseslounge-jobs .nurseslounge-jobs .nurseslounge-jobs-right form\");\n var $rightSearch = $jobsRight.find(\"input[name='search']\")[0];\n new google.maps.places.Autocomplete($rightSearch,{\n types: ['(regions)'],\n componentRestrictions: {country: \"us\"}\n });\n var $rightEmployerName = $jobsRight.find('input[name=\"employerName\"]').unbind();\n nurseslounge_jobs.jobs_employer_autocomplete(\n $rightEmployerName,\n $params,\n \"/jobs/autocomplete\"\n );\n $jobsRight.find(\".clear\").unbind().click(function(){\n $jobsRight[0].reset();\n });\n cback();\n },\n jobs_employer_autocomplete:function($target, $data, $url){\n try {\n $($target).autocomplete(\"destroy\");\n }catch (e) {\n }\n var $value = '';\n $($target).autocomplete({\n minLength\t:2,\n search\t\t: function(){\n $(this).addClass(\"ui-autocomplete-loading\");\n },\n open \t\t: function(){\n $(this).removeClass(\"ui-autocomplete-loading\");\n },\n source: function(request, response) {\n $.ajax({\n method: 'POST',\n url:$url,\n data:$.extend({\n keyword:$($target).val()\n }, $data),\n dataType: \"json\",\n success: function($data){\n libs.expire($data);\n $value = '';\n response($data);\n }\n });\n },\n create:function(){\n $(this).prev().remove();\n $(this).trigger(\"keypress.autocomplete\");\n },\n select: function (event, ui) {\n $value = ui.item.value;\n $(this).val($value);\n return false;\n }\n }).keypress(function ($e) {\n if ($e.which == 13) {\n $(this).autocomplete(\"close\");\n }\n });\n },\n jobs_main_form_validate:function(cback){\n var $validator;\n try {\n $validator = $(\"#nurseslounge-jobs .nurseslounge-jobs-main form\").validate();\n $validator.destroy();\n }catch (e) {\n\n }\n $validator = $(\"#nurseslounge-jobs .nurseslounge-jobs-main form\").validate({\n onsubmit: true,\n ignore: \"*:not(.validate)\",\n debug: true,\n rules: {\n search: {\n required: false,\n maxlength: 255\n },\n employerName: {\n required: false,\n maxlength: 255\n },\n distance: {\n required: true\n }\n },\n messages: {\n search: {\n required: \"The search field is required\",\n maxlength: \"The search field cannot exceed 255 characters\"\n },\n employerName: {\n required: \"The employer name field is not required\",\n maxlength: \"The employer name cannot exceed 255 characters\"\n },\n distance: {\n required: \"The distance field is required\"\n }\n },\n errorPlacement: function($error, $element){\n var $ele = $($element);\n var $name = $ele.attr(\"name\");\n if(!$ele.hasClass('is-invalid')){\n $ele.addClass('is-invalid');\n }\n $(\".\"+$name+\"_validate\").html($($error).text()).show();\n },\n success: function($error, $element) {\n var $ele = $($element);\n var $name = $ele.attr(\"name\");\n if($ele.hasClass('is-invalid')){\n $ele.removeClass('is-invalid');\n }\n $(\".\"+$name+\"_validate\").html('').hide();\n },\n submitHandler: function($form) {\n cback($form);\n return false;\n }\n });\n },\n jobs_search:function($params){\n var $jobsMain = $(\"#nurseslounge-jobs .nurseslounge-jobs-main\");\n var $jobs = $(\"#nurseslounge-jobs .nurseslounge-jobs\");\n var $jobListContainer = $jobs.find(\".nurseslounge-jobs-left .jobs-list-container\");\n var $preview = $jobListContainer.html();\n var $bindingResize;\n var $map = new google.maps.Map(document.getElementById('search-location-map'), {\n center: {lat: 29.8550297, lng: -97.9463043},\n mapTypeId: google.maps.MapTypeId.ROADMAP,\n mapTypeControl: false,\n streetViewControl: false,\n fullscreenControl: false,\n zoom: 5,\n zoomControl: true,\n zoomControlOptions: {\n position: google.maps.ControlPosition.TOP_LEFT\n },\n });\n $map.setTilt(0);\n google.maps.event.trigger($map, 'resize');\n nurseslounge_jobs.jobs_right_form_validate(function($form){\n $params = $.extend({}, $params, libs.getObjForm($form));\n $jobListContainer.html($preview).promise().done(function(){\n $jobsMain.fadeOut();\n $jobs.fadeIn();\n nurseslounge_jobs.jobs_search_request($params, function($data){\n nurseslounge_jobs.jobs_search_map_list($params, $map, $data);\n });\n });\n });\n $jobListContainer.html($preview).promise().done(function(){\n $jobsMain.fadeOut();\n $jobs.fadeIn();\n nurseslounge_jobs.jobs_search_request($params, function($data){\n nurseslounge_jobs.jobs_search_map_list($params, $map, $data);\n });\n });\n if(!libs.isMobile()) {\n $(window).unbind('resize').resize(function () {\n try {\n clearTimeout($bindingResize);\n } catch (e) {\n }\n $bindingResize = setTimeout(function () {\n $params = libs.getObjForm($(\"#nurseslounge-jobs .nurseslounge-jobs .nurseslounge-jobs-right form\"));\n $params = $.extend({}, $params, {user_id: libs.memoryGet('user_id')});\n $jobListContainer.html($preview).promise().done(function () {\n $jobsMain.fadeOut();\n $jobs.fadeIn();\n nurseslounge_jobs.jobs_search_request($params, function ($data) {\n nurseslounge_jobs.jobs_search_map_list($params, $map, $data);\n });\n });\n }, 800);\n });\n }\n $('#nurseslounge-jobs .toggle-arrow').unbind().click(function(){\n $('#nurseslounge-jobs .result-holder .result-counter').toggleClass('push-left-negative push-left-positive');\n $('#nurseslounge-jobs .result-map-marker').toggleClass('pull-left-full');\n });\n },\n jobs_right_form_validate:function(cback){\n var $validator;\n try {\n $validator = $(\"#nurseslounge-jobs .nurseslounge-jobs .nurseslounge-jobs-right form\").validate();\n $validator.destroy();\n }catch (e) {\n\n }\n $validator = $(\"#nurseslounge-jobs .nurseslounge-jobs .nurseslounge-jobs-right form\").validate({\n onsubmit: true,\n ignore: \"*:not(.validate)\",\n debug: true,\n rules: {\n search: {\n required: false,\n maxlength: 255\n },\n employerName: {\n required: false,\n maxlength: 255\n },\n distance: {\n required: true\n }\n },\n messages: {\n search: {\n required: \"The search field is required\",\n maxlength: \"The search field cannot exceed 255 characters\"\n },\n employerName: {\n required: \"The employer name field is not required\",\n maxlength: \"The employer name cannot exceed 255 characters\"\n },\n distance: {\n required: \"The distance field is required\"\n }\n },\n errorPlacement: function($error, $element){\n var $ele = $($element);\n var $name = $ele.attr(\"name\");\n if(!$ele.hasClass('is-invalid')){\n $ele.addClass('is-invalid');\n }\n $(\".\"+$name+\"_validate\").html($($error).text()).show();\n },\n success: function($error, $element) {\n var $ele = $($element);\n var $name = $ele.attr(\"name\");\n if($ele.hasClass('is-invalid')){\n $ele.removeClass('is-invalid');\n }\n $(\".\"+$name+\"_validate\").html('').hide();\n },\n submitHandler: function($form) {\n cback($form);\n return false;\n }\n });\n },\n jobs_search_request:function($params, cback){\n $.ajax({\n url: \"jobs/get\",\n method: \"POST\",\n cache:false,\n dataType: \"json\",\n data:$params,\n success: function ($data) {\n libs.expire($data);\n if($data.status == 'success'){\n nurseslounge_jobs.form_set_values($data.data, function(){\n cback($data);\n });\n }\n }\n });\n },\n form_set_values:function($data, cback){\n var $jobs = $(\"#nurseslounge-jobs .nurseslounge-jobs\");\n var $jobsForm = $jobs.find(\".nurseslounge-jobs-right form\");\n var $jobsLeft = $jobs.find(\".nurseslounge-jobs-left\");\n $jobsForm.find(\"input[name='search']\").val($data.form.search);\n $jobsForm.find(\"input[name='employerName']\").val($data.form.employer_name);\n $jobsForm.find(\"select[name='distance']\").val($data.form.distance);\n $jobsForm.find(\"select[name='listingTypeId']\").val($data.form.listing_type_id);\n $jobsLeft.find(\".result-numbers:first\").html('Showing '+$data.total+' availables Jobs')\n if(cback != undefined){\n cback();\n }\n },\n jobs_search_map_list:function($params, $map, $data){\n var $mapsMarkers = libs.memoryGet('maps_markers') ? libs.memoryGet('maps_markers') : [];\n $.each($mapsMarkers, function($i, $v){\n $v.setMap(null);\n });\n libs.memorySave('maps_markers', []);\n var $positionSave = [];\n var $bounds = new google.maps.LatLngBounds();\n var $locations = $data && $data.data && $data.data.locations && $data.data.locations ? $data.data.locations : null;\n var $locationsLength = $locations && $locations.length > 0 ? true : false;\n if($locationsLength){\n nurseslounge_jobs.add_map_marker_with_info($map, $locations, $positionSave, true, function(){\n nurseslounge_jobs.jobs_pagination($params, $locations, function(){\n $.each($positionSave, function ($i, $v) {\n $bounds.extend($v);\n });\n $map.fitBounds($bounds);\n $map.panToBounds($bounds);\n if($data.data.form.search != '') {\n $map.setZoom(Math.round(14 - Math.log($data.data.form.distance) / Math.LN2) + 0.7);\n }\n });\n });\n }else{\n nurseslounge_jobs.jobs_pagination($params, $locations, function(){\n nurseslounge_jobs.add_map_request_current_address_location($data.data.form.search, function($location){\n if($location.lat){\n $map.setCenter($location);\n $map.setZoom(Math.round(14-Math.log($data.data.form.distance)/Math.LN2) + 0.7);\n }\n });\n });\n }\n //$map.addListener(\"click\", function(){});\n },\n jobs_pagination:function($params, $locations, cback){\n var $reload;\n var $loaded = false;\n var $jobs = $(\"#nurseslounge-jobs .nurseslounge-jobs\");\n var $jobListContainer = $jobs.find(\".nurseslounge-jobs-left .jobs-list-container\");\n var $paginationContainer = $jobs.find(\".nurseslounge-jobs-left .pagination-nav\");\n var $previewHeight = $jobs.find(\".nurseslounge-jobs-left .jobs-list-container .preview:first\").innerHeight();\n var $jobHeight = $jobListContainer.innerHeight();\n var $pageSize = Math.round(($jobHeight/$previewHeight));\n var $paginationObj;\n try{\n $paginationObj = libs.memoryGet('jobs_pagination');\n if($paginationObj){\n $paginationObj.pagination('destroy');\n }\n }catch ($e) {\n }\n $paginationObj = $paginationContainer.pagination({\n pageSize: $pageSize > 0 ? $pageSize : 0,\n showPageNumbers: true,\n showPrevious: true,\n showNext: true,\n showNavigator: true,\n showFirstOnEllipsisShow: true,\n showLastOnEllipsisShow: true,\n dataSource:$locations.filter(function($obj){\n return $obj.employer_have_clicks > 0;\n }),\n callback: function($data, $pagination) {\n $loaded = true;\n var $chtml = nurseslounge_jobs.add_map_list_html($params, $data);\n if($chtml == ''){\n $chtml = '' +\n '
    ' +\n '
    Jobs for this area coming soon.
    ' +\n '
    ' +\n ' ' +\n '
    ' +\n '
    ';\n }\n libs.checkImageLoad($($chtml).find('img'), function () {\n $jobListContainer.html('').html($chtml).promise().done(function(){\n nurseslounge_jobs.jobs_map_events(function() {});\n });\n });\n }\n });\n libs.memorySave('jobs_pagination', $paginationObj);\n $reload = setTimeout(function(){\n if(!$loaded){\n nurseslounge_jobs.jobs_pagination($params, $locations, cback);\n }else{\n clearTimeout($reload);\n }\n }, 10000);\n if (cback != undefined) {\n cback();\n }\n },\n jobs_map_events:function(cback){\n var $jobs = $(\"#nurseslounge-jobs .nurseslounge-jobs\");\n var $jobListContainer = $jobs.find(\".nurseslounge-jobs-left .jobs-list-container\");\n var $spu = $jobListContainer.find('.spu');\n var $mapsMarkers = libs.memoryGet('maps_markers');\n var $originalIcon;\n var $originalMarker;\n $spu.unbind();\n $spu.click(function(){\n nurseslounge_jobs.add_map_show_spu($(this).data('key'), $(this).data('facility_key'));\n }).mouseover(function(){\n var $location = $(this).data('location').split(',');\n var $iconUrl = './../../bimg/NursesLounge/onfocus.png';\n $.each($mapsMarkers, function($i, $v){\n var $position = $v.getPosition();\n if(parseFloat($location[0]) == $position.lat() && parseFloat($location[1]) == $position.lng()){\n $originalMarker = $v;\n $originalIcon = $originalMarker.getIcon();\n $originalMarker.setIcon({url:$iconUrl, scaledSize: (new google.maps.Size(20, 35))});\n return false;\n }\n });\n }).mouseout(function(){\n try{\n $originalMarker.setIcon($originalIcon);\n }catch (e) {\n\n }\n });\n if(cback != undefined){\n cback();\n }\n },\n add_map_marker_with_info:function($map, $locations, $positionSave, $isEnable, cback) {\n var $mapsMarkers = libs.memoryGet('maps_markers') ? libs.memoryGet('maps_markers') : [];\n var $userId = libs.memoryGet('user_id');\n $.each($locations, function($i, $v){\n var $employersCount = $v.employers_count;\n var $employersJobsCount = $v.employers_jobs_count;\n var $employersHaveClicks = $v.employer_have_clicks;\n var $facilitiesCount = $v.facilities_count;\n var $location = $v.location.split(',');\n var $key = $v.employer_key;\n var $content = '';\n $.each($v.employers, function($sI, $sV){\n var $jobsCount = libs.arrSumObj($sV, 'jobs_count').jobs_count;\n var $facility = $sV[0];\n var $haveClicks = parseInt($facility.clicks) > 0;\n var $postBy = $facility.post_by;\n if($haveClicks){\n if($isEnable){\n if($userId == 'guest'){\n $content += '' + $facility.facility;\n }else {\n $content += '' + $facility.facility;\n }\n }else{\n $content += '

    ' + $facility.facility;\n }\n $content += '

    Jobs('+$jobsCount+')

    ';\n if($isEnable) {\n $content += '
    ';\n }else{\n $content += '

    ';\n }\n }else{\n $content += '

    ' + $facility.facility;\n $content += '

    Jobs Presently Not Posted

    ';\n $content += '

    ';\n }\n });\n var $infowindow = new google.maps.InfoWindow({\n content:$content,\n maxWidth: 400\n });\n var $position = new google.maps.LatLng(parseFloat($location[0]), parseFloat($location[1]));\n var $iconUrl;\n if($employersHaveClicks){\n $iconUrl = './../../bimg/NursesLounge/active.png';\n }else{\n $iconUrl = './../../bimg/NursesLounge/inactive.png';\n }\n var $marker = new google.maps.Marker({\n position:$position,\n map: $map,\n animation: google.maps.Animation.DROP,\n icon: {url:$iconUrl, scaledSize: (new google.maps.Size(20, 35))},\n });\n $marker.addListener('click', function() {\n $infowindow.open($map, $marker);\n });\n $mapsMarkers.push($marker);\n $positionSave.push($position);\n });\n libs.memorySave('maps_markers', $mapsMarkers);\n if(cback != undefined){\n cback();\n }\n },\n add_map_request_current_address_location:function($address, cback){\n var $geocoder = new google.maps.Geocoder;\n $geocoder.geocode({'address':$address}, function($result, $status) {\n if ($status === 'OK') {\n if ($result[0]) {\n cback($result[0].geometry.location, $result[0].formatted_address);\n }else{\n cback({}, 'The address can to be found');\n }\n }else{\n cback({}, 'Geolocation is not available');\n }\n });\n },\n add_map_list_html:function($params, $locations){\n var $chtml = '';\n $.each($locations, function($i, $v){\n var $employersCount = $v.employers_count;\n var $employersJobsCount = $v.employers_jobs_count;\n var $employersHaveClicks = $v.employer_have_clicks;\n var $facilitiesCount = $v.facilities_count;\n var $location = $v.location;\n var $key = $v.employer_key;\n $.each($v.employers, function($sI, $sV) {\n var $jobsCount = libs.arrSumObj($sV, 'jobs_count').jobs_count;\n var $facility = $sV[0];\n var $haveClicks = parseInt($facility.clicks) > 0;\n var $rating = $facility.lounge.rating;\n if ($haveClicks) {\n $chtml += '' +\n '
  • ' +\n ' ' +\n '
    ' +\n '
    ' +\n '
    ' +\n '
    ';\n for(var $i=1; $i<=5; $i++) {\n var $star = $rating - $i;\n var $offsetOn;\n var $offsetOff;\n var $unique = libs.getUniqueId();\n if($star >= 0){\n $offsetOn = 100;\n $offsetOff = 0;\n }else if($star < 0 && $star > -1){\n $star = ($star * -1);\n $offsetOff = ($star * 100);\n $offsetOn = (100 - $offsetOff);\n }else{\n $offsetOn = 0;\n $offsetOff = 100;\n }\n $chtml += '' +\n '' +\n ' ' +\n ' ';\n if($offsetOn > 0) {\n $chtml += '' +\n '';\n }\n if($offsetOff > 0){\n $chtml += '' +\n '';\n }\n $chtml += '' +\n ' ' +\n ' ' +\n ' ' +\n '';\n }\n $chtml += '' +\n '
    ' +\n '
    ' +\n ' '+$rating+'/5' +\n '
    ' +\n '
    ' +\n '
    ' +\n '
    ' +\n '
    ' +\n '
    ' +\n ' \"hospital\"' +\n '
    ' +\n '
    ' +\n '

    ' + $facility.facility + '

    ' +\n '

    ' + $jobsCount + ' available at ' + $facility.name + '

    ' +\n '
    ' +\n '
    ' +\n '
    ' +\n '
    ' +\n '
    ' +\n '
  • ';\n }\n });\n });\n return $chtml;\n },\n add_map_show_spu:function($key, $facilityKey){\n var $params = {\n key:$key,\n facilityKey:$facilityKey,\n user_id:libs.memoryGet('user_id')\n };\n var $userId = libs.memoryGet('user_id');\n var $employerJobsModal = $(\"#nurseslounge-employer-jobs-modal\");\n var $reviewModal = $(\"#nurseslounge-lounge-information-review-modal\");\n var $employerName = $employerJobsModal.find(\".employer-name:first\");\n var $employerPreview = '                                                                                                ';\n var $loungeImage = $employerJobsModal.find(\".lounge-image:first\");\n var $loungeImagePreview = '                ';\n var $loungeName = $employerJobsModal.find(\".lounge-name:first\");\n var $loungeNamePreview = ' ';\n var $availablesJobsDiv = $employerJobsModal.find(\".availables-jobs:first\");\n var $availablesJobsDivPreview = ' ';\n var $ratingStarts = $employerJobsModal.find(\".rating-stars:first\");\n var $ratingStartsPreview = '' +\n '' +\n '' +\n '' +\n '' +\n '';\n var $ratingCount = $employerJobsModal.find(\".rating-count:first\");\n var $ratingCountPreview = ' ';\n var $resultInfoCount = $employerJobsModal.find(\".result-info-count:first\");\n var $resultInfoCountPreview = ' ';\n var $jobListContainer = $employerJobsModal.find(\".jobs-list-container:first\");\n var $jobListContainerPreview = '';\n for(var $i=0;$i<10;$i++) {\n $jobListContainerPreview += '' +\n '
  • ' +\n ' ' +\n '
  • ';\n }\n var $paginationNav = $employerJobsModal.find(\".pagination-nav:first\");\n var $paginationNavPreview = ' ';\n var $search = $employerJobsModal.find('input[name=\"search\"]');\n var $whyWorkHereButton = $employerJobsModal.find(\".why-work-here:first\");\n var $addReviewButton = $employerJobsModal.find(\".add-review:first\");\n var $addRatingStarts = $employerJobsModal.find('.clg-rating:first');\n var $employerMap = $(\"#employer-modal-tabs-location-map\");\n var $jobRecruiter = $(\"#jobs-recruiters .content\");\n var $jobRating = $(\"#jobs-rating .content\");\n var $jobReview = $(\"#jobs-reviews .content\");\n var $jobCost = $(\"#jobs-cost .content\");\n var $sectionPreview = '                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     ';\n var $positionSave = [];\n var $chtml;\n var $bounds = new google.maps.LatLngBounds();\n //clean form\n $employerName.addClass('nurseslounge-employer-jobs-preload').html($employerPreview);\n $loungeImage.addClass('nurseslounge-employer-jobs-preload').html($loungeImagePreview);\n $loungeName.addClass('nurseslounge-employer-jobs-preload').html($loungeNamePreview);\n $availablesJobsDiv.addClass('nurseslounge-employer-jobs-preload').html($availablesJobsDivPreview);\n $ratingStarts.addClass('nurseslounge-employer-jobs-preload').html($ratingStartsPreview);\n $ratingCount.addClass('nurseslounge-employer-jobs-preload').html($ratingCountPreview);\n $resultInfoCount.addClass('nurseslounge-employer-jobs-preload').html($resultInfoCountPreview);\n $jobListContainer.addClass('nurseslounge-employer-jobs-preload').html($jobListContainerPreview);\n $paginationNav.addClass('nurseslounge-employer-jobs-preload').html($paginationNavPreview);\n $employerMap.addClass('nurseslounge-employer-jobs-preload').html($sectionPreview);\n $jobRecruiter.addClass('nurseslounge-employer-jobs-preload').html($sectionPreview);\n $jobRating.addClass('nurseslounge-employer-jobs-preload').html($sectionPreview);\n $jobReview.addClass('nurseslounge-employer-jobs-preload').html($sectionPreview);\n $jobCost.addClass('nurseslounge-employer-jobs-preload').html($sectionPreview);\n $employerJobsModal.modal('show');\n nurseslounge_lounge_nursingJobs.add_map_show_spu_request($params, function($data){\n var $locations = $data && $data.data && $data.data.locations && $data.data.locations ? $data.data.locations : null;\n var $employer = $locations && $locations[0] && $locations[0].employers && $locations[0].employers[0] && $locations[0].employers[0][0] ? $locations[0].employers[0][0] : null;\n var $jobs = $data && $data.data && $data.data.jobs && $data.data.jobs ? $data.data.jobs : [];\n var $jobsSave = $jobs;\n var $availablesJobs = $data && $data.data && $data.data.total && $data.data.total ? $data.data.total : 0;\n if($employer){\n var $map = new google.maps.Map(document.getElementById('employer-modal-tabs-location-map'), {\n center: {lat: 29.8550297, lng: -97.9463043},\n mapTypeId: google.maps.MapTypeId.ROADMAP,\n mapTypeControl: false,\n streetViewControl: false,\n fullscreenControl: false,\n zoom: 10\n });\n $map.setTilt(0);\n $employerName.removeClass('nurseslounge-employer-jobs-preload').html($employer.name);\n var $img = $employer && $employer.lounge && $employer.lounge.logo_root_lounge ? $employer.lounge.logo_root_lounge : '/bimg/NursesLounge/lounge-avatar.png';\n $loungeImage.removeClass('nurseslounge-employer-jobs-preload').html('\"hospital\"');\n var $name = $employer && $employer.lounge && $employer.lounge.name ? $employer.lounge.name : '';\n $loungeName.removeClass('nurseslounge-employer-jobs-preload').html($name);\n $availablesJobsDiv.removeClass('nurseslounge-employer-jobs-preload').html($availablesJobs+' available at '+$employer.facility+'');\n var $rating = $employer && $employer.lounge && $employer.lounge.rating ? $employer.lounge.rating : 0;\n $ratingStarts.removeClass('nurseslounge-employer-jobs-preload').html(nurseslounge_jobs.add_stars($rating));\n $ratingCount.removeClass('nurseslounge-employer-jobs-preload').html($rating+' / 5');\n $resultInfoCount.removeClass('nurseslounge-employer-jobs-preload').html(' Showing '+$employer.jobs_count+' availables Jobs');\n $jobListContainer.removeClass('nurseslounge-employer-jobs-preload').html($jobListContainerPreview);\n $paginationNav.removeClass('nurseslounge-employer-jobs-preload').html($paginationNavPreview);\n $employerMap.removeClass('nurseslounge-employer-jobs-preload');\n var $recruiter = $data && $data.data && $data.data.lounge && $data.data.lounge.recruiters ? $data.data.lounge.recruiters : [];\n var $recruiterHtml = '';\n if($recruiter.length > 0){\n $recruiterHtml = nurseslounge_jobs.recruiters_html($recruiter);\n }else{\n $recruiterHtml = '' +\n '
    ' +\n '

    No recruiters listed.

    ' +\n '
    ';\n }\n $jobRecruiter.removeClass('nurseslounge-employer-jobs-preload').html($recruiterHtml);\n var $ratingHtml = '';\n if($rating > 0){\n $ratingHtml = '' +\n '
    ' +\n nurseslounge_jobs.add_stars($rating) +\n '

    Rating '+$rating+' / 5'+'

    ' +\n '
    ';\n }else{\n $ratingHtml = '' +\n '
    ' +\n nurseslounge_jobs.add_stars(0) +\n '

    ' +\n 'Be the first to give a rating.' +\n '

    ' +\n '
    ';\n }\n $jobRating.removeClass('nurseslounge-employer-jobs-preload').html($ratingHtml).promise().done(function(){\n $jobRating.find('.first-rating:first').unbind().click(function(){\n $employerJobsModal.modal('hide');\n nurseslounge_lounge_overview.information_review($employer.lounge.lounge_type_id, $params, $data, function(){\n $(\"#nurseslounge-jobs .nurseslounge-jobs .nurseslounge-jobs-right form\").submit();\n $reviewModal.modal('hide');\n });\n });\n });\n var $lounge = $data && $data.data && $data.data.lounge ? $data.data.lounge : null;\n var $reviews = $data && $data.data && $data.data.lounge && $data.data.lounge.reviews ? $data.data.lounge.reviews : [];\n var $jobReviewHtml = '';\n if($reviews.length > 0){\n $jobReviewHtml = '' +\n '
    ' +\n nurseslounge_jobs.reviews_html($reviews, $lounge) +\n '
    ';\n }else{\n $jobReviewHtml = '' +\n '
    ' +\n '

    ' +\n 'Be the first to give a review.' +\n '

    ' +\n '
    ';\n }\n $jobReview.removeClass('nurseslounge-employer-jobs-preload').html($jobReviewHtml).promise().done(function(){\n $jobReview.find('.first-rating:first').unbind().click(function(){\n $employerJobsModal.modal('hide');\n nurseslounge_lounge_overview.information_review($employer.lounge.lounge_type_id, $params, $data, function(){\n $(\"#nurseslounge-jobs .nurseslounge-jobs .nurseslounge-jobs-right form\").submit();\n $reviewModal.modal('hide');\n });\n });\n $jobReview.find('.open-url').unbind().click(function(){\n var $url = $(this).data('url');\n window.open($url,'_blank');\n });\n });\n nurseslounge_jobs.add_map_marker_with_info($map, $locations, $positionSave, false, function(){\n $search.unbind().on('change keyup keydown keypress', function(){\n var $that = $(this);\n $jobs = $jobsSave.filter(function($v){\n var $exp = new RegExp($that.val(),\"i\");\n return $v.title.match($exp);\n });\n nurseslounge_jobs.jobs_popup_pagination($params, $employer.lounge, $jobs, function(){});\n });\n $loungeName.unbind().click(function(){\n if($userId == 'guest'){\n window.open($employer.lounge.public_link, '_blank');\n }else{\n router.navigate($employer.lounge.link,true);\n $employerJobsModal.modal('hide');\n }\n });\n $loungeImage.unbind().click(function(){\n if($userId == 'guest'){\n window.open($employer.lounge.public_link, '_blank');\n }else{\n router.navigate($employer.lounge.link,true);\n $employerJobsModal.modal('hide');\n }\n });\n $whyWorkHereButton.unbind().click(function(){\n if($userId == 'guest'){\n window.open($employer.lounge.public_link, '_blank');\n }else{\n window.open($employer.lounge.link, '_blank');\n }\n });\n $addRatingStarts.unbind().click(function(){\n $employerJobsModal.modal('hide');\n nurseslounge_lounge_overview.information_review($employer.lounge.lounge_type_id, $params, $data, function(){\n $(\"#nurseslounge-jobs .nurseslounge-jobs .nurseslounge-jobs-right form\").submit();\n $reviewModal.modal('hide');\n });\n });\n nurseslounge_jobs.jobs_popup_pagination($params, $employer.lounge, $jobs, function(){\n $.each($positionSave, function ($i, $v) {\n $bounds.extend($v);\n });\n setTimeout(function(){\n $map.fitBounds($bounds);\n $map.panToBounds($bounds);\n $map.setZoom(15);\n }, 1000);\n });\n });\n }\n });\n },\n add_map_show_public:function($key){\n var $params = $.extend({}, {key:$key}, {id:'nursingJobs'});\n public_nurseslounge_lounge_overview.login_popup($params);\n },\n reviews_html:function($reviews, $lounge){\n var $chtml = '';\n $chtml += '
      ';\n $.each($reviews, function($i, $v){\n $chtml+='' +\n '
    • ' +\n '
      ' +\n '
      ' +\n '
      ';\n if($lounge.lounge_type_id == 1) {\n $chtml += '' +\n '
      ' +\n ' ' +\n '

      ' + $v.job_title + '

      ' +\n '
      ' +\n '
      ' +\n ' ' +\n '

      ' + $v.facility + '

      ' +\n '
      ' +\n '
      ';\n if($v.recommend_to_friend == 'yes'){\n $chtml+='' +\n '
      ' +\n '
      ' +\n ' ' +\n '
      ' +\n '
      ';\n }\n $chtml += '' +\n '
      ';\n }\n if($lounge.lounge_type_id == 2){\n if($v.current_profile_id != 5){\n $chtml += '' +\n '
      ' +\n ' ' +\n '

      ' + $v.school_degree + '

      ' +\n '
      ';\n }else{\n $chtml += '' +\n '
      ';\n }\n $chtml += '' +\n '
      ';\n if($v.recommend_to_friend == 'yes'){\n $chtml+='' +\n '
      ' +\n '
      ' +\n ' ' +\n '
      ' +\n '
      ';\n }\n $chtml += '' +\n '
      ';\n }\n $chtml+='' +\n '
      ' +\n '
      ' +\n '
      ' +\n '
      ' +\n '
      ' +\n '
      ';\n if($v.current_profile_id == 5){\n $chtml+='
      Nurse Faculty Job Rating
      ';\n }\n if($v.pros_cons && $v.pros_cons != '') {\n $chtml += '' +\n ' Review';\n }\n $chtml+='' +\n '
      ' +\n '
      ' +\n '
      ' +\n '
      ' +\n '
      ' +\n $v.overall_rating + ' / 5' +\n '
      ' +\n '
      ' +\n nurseslounge_jobs.add_stars($v.overall_rating) +\n '
      ' +\n '
      ' +\n '
      ' +\n '
      ' +\n '
      ';\n if($v.pros_cons && $v.pros_cons != ''){\n $chtml+='' +\n '
      ' +\n '
      ' +\n '

      '+$v.pros_cons+'

      ' +\n '
      ' +\n '
      ';\n }\n $chtml+='' +\n '
      ';\n if($v.answer) {\n $chtml += '' +\n '
      ' +\n '
      ' +\n '
      Response from ' +\n ' ' +\n $v.answer.user.long_name +\n ' ' +\n '
      ' +\n '
      ' +\n '

      ' +\n $v.answer.answer +\n '

      ' +\n '
      ' +\n '
      ' +\n '
      ';\n }\n $chtml += '' +\n '
    • ';\n });\n $chtml += '
    ';\n return $chtml;\n },\n recruiters_html:function($recruiters){\n var $chtml = '';\n $chtml += '' +\n '
      ';\n $.each($recruiters, function($k,$v){\n $chtml += '' +\n '
    • ' +\n '
      ' +\n '
      ' +\n '
      ' +\n '
      ' +\n ' \"recruiter\"' +\n '
      ' +\n '
      ' +\n '

      ' +\n ' ' +\n $v.user.long_name +\n ' ' +\n '

      ' +\n '
      ' +\n '
      ' +\n '
      ' +\n '
      ' +\n '
    • ';\n });\n $chtml += '
    ';\n return $chtml;\n },\n add_stars:function($rating){\n var $chtml = '';\n for(var $i=1; $i<=5; $i++) {\n var $star = $rating - $i;\n var $offsetOn;\n var $offsetOff;\n var $unique = libs.getUniqueId();\n if($star >= 0){\n $offsetOn = 100;\n $offsetOff = 0;\n }else if($star < 0 && $star > -1){\n $star = ($star * -1);\n $offsetOff = ($star * 100);\n $offsetOn = (100 - $offsetOff);\n }else{\n $offsetOn = 0;\n $offsetOff = 100;\n }\n $chtml += '' +\n '' +\n ' ' +\n ' ';\n if($offsetOn > 0) {\n $chtml += '' +\n '';\n }\n if($offsetOff > 0){\n $chtml += '' +\n '';\n }\n $chtml += '' +\n ' ' +\n ' ' +\n ' ' +\n '';\n }\n return $chtml;\n },\n jobs_popup_pagination:function($params, $lounge, $jobs, cback){\n var $employerJobsModal = $(\"#nurseslounge-employer-jobs-modal\");\n var $jobListContainer = $employerJobsModal.find(\".jobs-list-container:first\");\n var $paginationNav = $employerJobsModal.find(\".pagination-nav:first\");\n var $loungeSaved = $lounge;\n var $paginationObj;\n var $chtml;\n try{\n $paginationObj = libs.memoryGet('jobs_popup_pagination');\n if($paginationObj){\n $paginationObj.pagination('destroy');\n }\n }catch ($e) {\n }\n $paginationObj = $paginationNav.pagination({\n pageSize: 10,\n showPageNumbers: true,\n showPrevious: true,\n showNext: true,\n showNavigator: true,\n showFirstOnEllipsisShow: true,\n showLastOnEllipsisShow: true,\n dataSource:$jobs,\n callback: function($data, $pagination) {\n $chtml = nurseslounge_jobs.jobs_popup_html($params, $loungeSaved, $data);\n libs.checkImageLoad($($chtml).find('img'), function () {\n $jobListContainer.html('').html($chtml).promise().done(function(){\n nurseslounge_jobs.jobs_popup_events($params);\n });\n });\n }\n });\n libs.memorySave('jobs_popup_pagination', $paginationObj);\n if (cback != undefined) {\n cback();\n }\n },\n jobs_popup_html:function($params, $loungeSaved, $jobs){\n var $userId = libs.memoryGet('user_id');\n var $img = $loungeSaved && $loungeSaved.logo_root_lounge ? $loungeSaved.logo_root_lounge : '/bimg/NursesLounge/lounge-avatar.png';\n var $chtml = '';\n $.each($jobs, function($i, $v){\n $chtml += '' +\n '
  • ' +\n '
    ' +\n '
    ' +\n '
    ' +\n '
    ' +\n ' \"hospital\"' +\n '
    ' +\n '
    ' +\n '

    ' +\n ' ' + $v.title +\n ' ' +\n '

    ' +\n '
    ' +\n '
    ' +\n '
    ';\n if($userId != 'guest' && $v.lounge.isOwner){\n $chtml += '' +\n '
    ' +\n ' ' +\n '
    ';\n }\n $chtml += '' +\n '
    ' +\n '
  • ';\n });\n return $chtml;\n },\n jobs_popup_events:function($params){\n var $key = $params.key;\n var $userId = libs.memoryGet('user_id');\n var $employerJobsModal = $(\"#nurseslounge-employer-jobs-modal\");\n var $jobListContainer = $employerJobsModal.find(\".jobs-list-container:first\");\n $jobListContainer.find('.item').unbind().click(function(){\n var $link = $(this).data('link');\n var $publicLink = $(this).data('public_link');\n if($userId == 'guest'){\n $employerJobsModal.modal('hide');\n var $params = $.extend({}, {key:$key}, {id:'nursingJobs'});\n public_nurseslounge_lounge_overview.login_popup($params);\n //window.open($publicLink, '_blank', '');\n }else{\n window.open($link, '_blank', '');\n }\n });\n $jobListContainer.find('.pin-it').unbind().click(function($e){\n $e.stopPropagation();\n $e.preventDefault();\n var $modal = $(\"#nurseslounge-employer-jobs-modal\");\n var $that = $(this);\n var $key = $that.parents('.item:first').data('key');\n nurseslounge_lounge_activity.pin_it({user_id:$userId, key:$key, theme:'job'}, function(){\n $modal.modal('hide');\n });\n });\n }\n};\n","var nurseslounge_articles = {\r\n init:function($params){\r\n var $userId = libs.memoryGet('user_id');\r\n $params = {user_id:$userId};\r\n nurseslounge_myDashboard_recommendations.init($params);\r\n nurseslounge_myDashboard_accountSettings.init($params);\r\n nurseslounge_articles.menu_selector(function(){\r\n nurseslounge_articles.articles($params);\r\n });\r\n },\r\n menu_selector:function(cback){\r\n $(\"footer\").hide();\r\n libs.globalUrl();\r\n cback();\r\n },\r\n articles:function($params){\r\n var $cards = $(\"#nurseslounge-articles .nurseslounge-articles-cards\");\r\n var $articles = $(\"#nurseslounge-articles\");\r\n var $main = $articles.find(\".nurseslounge-articles-main\");\r\n var $category = $main.find('select[name=\"category\"]');\r\n $category.chosen();\r\n var $chtml = nurseslounge_articles.articles_html_preview();\r\n $cards.html($chtml).promise().done(function(){\r\n nurseslounge_articles.articles_request($params, function($data){\r\n var $chtml = nurseslounge_articles.articles_html($data);\r\n libs.checkImageLoad($($chtml).find('img'), function(){\r\n $cards.html($chtml).promise().done(function(){\r\n nurseslounge_articles.articles_events();\r\n });\r\n });\r\n });\r\n });\r\n },\r\n articles_request:function($params, cback){\r\n $.ajax({\r\n url: \"/articles/get\",\r\n method: \"POST\",\r\n cache:false,\r\n dataType: \"json\",\r\n data:$params,\r\n success: function ($data) {\r\n libs.expire($data);\r\n if($data.status == 'success'){\r\n cback($data);\r\n }\r\n }\r\n });\r\n },\r\n articles_html_preview:function(){\r\n var $chtml = '';\r\n for(var $i=0; $i<2; $i++){\r\n $chtml += '' +\r\n '
    ' +\r\n '
    ' +\r\n '
    ' +\r\n '       ' +\r\n '
    ' +\r\n '
    ' +\r\n '
    ' +\r\n '       ' +\r\n '
    ' +\r\n '
    ' +\r\n '

    ' +\r\n '       ' +\r\n '

    ' +\r\n '
    ' +\r\n '
    ' +\r\n '
    ' +\r\n '       ' +\r\n '
    ' +\r\n '
    ' +\r\n '       ' +\r\n '
    ' +\r\n ' ' +\r\n '
    ' +\r\n '
    ';\r\n }\r\n return $chtml;\r\n\r\n },\r\n articles_html:function($data){\r\n var $chtml = '
    ';\r\n $.each($data.data.group, function($i, $v){\r\n var $articles = $v.articles;\r\n var $tag = $v.tag;\r\n $chtml += '' +\r\n '
    '+$tag+'('+$articles.length+')
    ' +\r\n '
    ';\r\n $.each($articles, function($articles_i, $articles_v){\r\n var $AF = $articles_v.article_features;\r\n var $date = $AF.updated_at ? $AF.updated_at : null;\r\n var $headline = $AF.headline && $AF.headline != '' ? $AF.headline: '        ';\r\n var $_author = $AF.author && $AF.author != '' ? $AF.author: '        ';\r\n var $wildcard = '                    ';\r\n var $description;\r\n if($AF.html && $AF.html != '' && $AF.html != null){\r\n try{\r\n $description = $($AF.html).text();\r\n }catch ($e) {\r\n $description = $AF.html;\r\n }\r\n }else{\r\n $description = $wildcard;\r\n }\r\n if($description != $wildcard){\r\n $description = $description.length > 50 ? $description.substr(0, 50) + '...' : $description;\r\n }\r\n\r\n var $user = $articles_v.user;\r\n var $author = $user.long_name;\r\n var $jobTitle = $user && $user.job_title ? $user.job_title : '    ';\r\n var $authorLink = $user.profile_url;\r\n var $profileImage = $user.profile_image_root_wall + '?resize=46';\r\n\r\n var $imgOption1 = $AF && $AF.image && $AF.image.document_thumb_root ? $AF.image.document_thumb_root : null;\r\n var $imgOption2 = $articles_v.document_thumb_root;\r\n\r\n var $imageThumb = $imgOption1 != null ? $imgOption1 : $imgOption2;\r\n var $articleLikesCount = $articles_v.article_likes_count == 1 ? $articles_v.article_likes_count + ' like' : $articles_v.article_likes_count + ' likes';\r\n var $iAmOwner = $articles_v.i_am_owner;\r\n var $status = $AF.status;\r\n var $myLike = $articles_v.my_like ? 'like' : '';\r\n var $viewedByMe = $articles_v.viewed_by_me;\r\n var $documentId = $articles_v.id;\r\n var $expirationDate = $AF && $AF.expiration_date && $AF.expiration_date ? $AF.expiration_date : null;\r\n var $categories = $articles_v.article_categories ? $articles_v.article_categories : [];\r\n var $categoriesTxt = [];\r\n var $articleTags = [];\r\n if($AF && $AF.specialty && $AF.specialty.type) {\r\n $articleTags.push({tag:$AF.specialty.type});\r\n }\r\n if($AF && $AF.degree && $AF.degree.subcategory){\r\n $articleTags.push({tag:$AF.degree.subcategory});\r\n }\r\n $articleTags = $.merge($articleTags, $articles_v.article_tags);\r\n for (var $i in $categories){\r\n $categoriesTxt.push($categories[$i].category.category);\r\n }\r\n $chtml += '' +\r\n '
    ' +\r\n '
    ' +\r\n '
    ' +\r\n ' \"article' +\r\n '
    '+\r\n '
    ' +\r\n //'
    ' +\r\n //' ' +\r\n //' \"profile\"' +\r\n //' ' +\r\n //'
    ' +\r\n //'
    ' +\r\n //' ' +\r\n //'

    '+$author+'

    ' +\r\n //'
    '+$jobTitle+'
    ' +\r\n //'
    ' +\r\n //'

    Published

    ' +\r\n //'
    ' +\r\n '
    ' +\r\n '
    ' +\r\n '

    '+$headline+'

    ' +\r\n '

    ' + $description + '

    ' +\r\n ' ' + $_author + '';\r\n if($expirationDate){\r\n $expirationDate = moment.utc($expirationDate, 'YYYY-MM-DD').format('MM/DD/YYYY');\r\n $chtml += '' +\r\n '
    Expire: ' + $expirationDate + '
    ';\r\n }else{\r\n $chtml += '' +\r\n '
                    
    ';\r\n }\r\n if($categoriesTxt.length > 0){\r\n $chtml += '' +\r\n '
    ' + $categoriesTxt.join(', ') + '
    ';\r\n }else{\r\n $chtml += '' +\r\n '
                    
    ';\r\n }\r\n $chtml += '' +\r\n ' ' +\r\n '
    ' +\r\n '
    ';\r\n $.each($articleTags, function($sI, $sV){\r\n $chtml += '
    ' + $sV.tag + '
    ';\r\n });\r\n $chtml += '' +\r\n '
    ' +\r\n ' ' +\r\n '
    ' +\r\n '
    ';\r\n });\r\n $chtml += '' +\r\n '
    ' +\r\n '
    ';\r\n });\r\n $chtml += '
    ';\r\n return $chtml;\r\n },\r\n articles_events:function(){\r\n var $carousels = $(\"#nurseslounge-articles .nurseslounge-articles-main .carousel\");\r\n $carousels.unbind();\r\n $carousels.slick({\r\n speed: 300,\r\n slidesToShow: 2,\r\n slidesToScroll: 1,\r\n arrows: true,\r\n responsive: [\r\n {\r\n breakpoint: 1024,\r\n settings: {\r\n slidesToShow: 2,\r\n slidesToScroll: 1,\r\n }\r\n },\r\n {\r\n breakpoint: 600,\r\n settings: {\r\n slidesToShow: 1,\r\n slidesToScroll: 1\r\n }\r\n },\r\n {\r\n breakpoint: 480,\r\n settings: {\r\n slidesToShow: 1,\r\n slidesToScroll: 1\r\n }\r\n }\r\n ]\r\n });\r\n var $articles = $(\"#nurseslounge-articles\");\r\n var $main = $articles.find(\".nurseslounge-articles-main\");\r\n var $items = $main.find(\".item\");\r\n var nlWallDocumentPreview = $(window).nurseslounge_myDashboard_wall_get({user_id:libs.memoryGet('user_id')}, 'nlWallDocumentPreview');\r\n $items.unbind().click(function(){\r\n if(libs.memoryGet('user_id') == 'guest'){\r\n public_nurseslounge_lounge_overview.login_popup({id:'articles'});\r\n return false;\r\n }\r\n var $that = $(this);\r\n var $documentId = $that.data('id');\r\n var $params = {\r\n document_id:$documentId,\r\n user_id:libs.memoryGet('user_id'),\r\n };\r\n nurseslounge_myDashboard_myArticles.events_recently_viewed_request($params, function() {\r\n nlWallDocumentPreview.init($documentId);\r\n });\r\n });\r\n var $likeButton = $items.find('.like-button');\r\n $likeButton.unbind().click(function($e){\r\n $e.stopPropagation();\r\n $e.preventDefault();\r\n var $that = $(this);\r\n var $like = !$that.hasClass('like');\r\n var $item = $that.parents('.item:first');\r\n var $documentId = $item.data('id');\r\n var $params = {\r\n document_id:$documentId,\r\n user_id:libs.memoryGet('user_id'),\r\n like:$like,\r\n };\r\n nurseslounge_myDashboard_myArticles.events_like_request($params, function($data){\r\n if($data.data.like){\r\n $main.find('.item[data-id=\"'+$documentId+'\"]').each(function(){\r\n $(this).find('.like-button:first').addClass('like');\r\n });\r\n }else{\r\n $main.find('.item[data-id=\"'+$documentId+'\"]').each(function(){\r\n $(this).find('.like-button:first').removeClass('like');\r\n });\r\n }\r\n var $likes = $data.data.likes == 1 ? $data.data.likes+' like' : $data.data.likes + ' likes';\r\n $main.find('.item[data-id=\"'+$documentId+'\"]').each(function(){\r\n $(this).find('.total-likes:first').html($likes);\r\n });\r\n });\r\n });\r\n var $category = $main.find('select[name=\"category\"]');\r\n $category.unbind().change(function(){\r\n var $params = $.extend({}, {user_id:libs.memoryGet('user_id'), categories:$category.val()});\r\n nurseslounge_articles.articles($params);\r\n });\r\n var $search = $main.find('input[name=\"search\"]');\r\n var $bindSearch;\r\n $search.unbind().on('keyup keydown keypress', function(){\r\n try{\r\n clearTimeout($bindSearch);\r\n }catch ($e) {\r\n\r\n }\r\n $bindSearch = setTimeout(function(){\r\n var $params = $.extend({}, {user_id:libs.memoryGet('user_id'), search:$search.val()});\r\n nurseslounge_articles.articles($params);\r\n }, 2000);\r\n });\r\n nurseslounge_articles.articles_autocomplete(\r\n $search,\r\n {user_id:libs.memoryGet('user_id')},\r\n \"/articles/autocomplete\",\r\n function($keyword){\r\n try{\r\n clearTimeout($bindSearch);\r\n }catch ($e) {\r\n\r\n }\r\n var $params = $.extend({}, {user_id:libs.memoryGet('user_id'), search:$keyword});\r\n nurseslounge_articles.articles($params);\r\n }\r\n );\r\n //Realtime Clock\r\n var $articlesIds = [];\r\n $items.each(function(){\r\n var $that = $(this);\r\n $articlesIds.push($that.data('id'));\r\n });\r\n $articlesIds.sort();\r\n $articlesIds = $.unique($articlesIds);\r\n nurseslounge_articles.set_articles_dates($articlesIds);\r\n nurseslounge_articles.articles_date();\r\n $(window).on('resize orientationchange', function() {\r\n nurseslounge_articles.articles_events();\r\n });\r\n },\r\n articles_autocomplete:function($target, $data, $url, cback){\r\n try {\r\n $($target).autocomplete(\"destroy\");\r\n }catch (e) {\r\n }\r\n var $value = '';\r\n $($target).autocomplete({\r\n minLength\t:2,\r\n search\t\t: function(){\r\n $(this).addClass(\"ui-autocomplete-loading\");\r\n },\r\n open \t\t: function(){\r\n $(this).removeClass(\"ui-autocomplete-loading\");\r\n },\r\n source: function(request, response) {\r\n $.ajax({\r\n method: 'POST',\r\n url:$url,\r\n data:$.extend({},{\r\n keyword:$($target).val()\r\n }, $data),\r\n dataType: \"json\",\r\n success: function($data){\r\n libs.expire($data);\r\n $value = '';\r\n response($data);\r\n }\r\n });\r\n },\r\n create:function(){\r\n $(this).prev().remove();\r\n $(this).trigger(\"keypress.autocomplete\");\r\n },\r\n select: function (event, ui) {\r\n $value = ui.item.value;\r\n $(this).val($value);\r\n cback($value);\r\n return false;\r\n }\r\n }).keypress(function ($e) {\r\n if ($e.which == 13) {\r\n cback($(this).val());\r\n $(this).autocomplete(\"close\");\r\n }\r\n });\r\n },\r\n articles_dates:[],\r\n articles_dates_binding:null,\r\n server_date_helper:null,\r\n server_date:null,\r\n set_server_date:function($serverDate){\r\n this.server_date_helper = new Date();\r\n this.server_date = new Date($serverDate);\r\n },\r\n get_server_date:function(){\r\n var $now = new Date().getTime();\r\n var $diff = $now - this.server_date_helper.getTime();\r\n var $date = this.server_date.getTime() + $diff;\r\n return new Date($date);\r\n },\r\n set_articles_dates:function($articlesIds){\r\n this.articles_dates = $articlesIds;\r\n },\r\n get_articles_dates:function(){\r\n return this.articles_dates;\r\n },\r\n articles_date:function(cback){\r\n var $artcilesDate = libs.memoryGet('articles_date');\r\n if($artcilesDate){\r\n try{\r\n $artcilesDate.abort();\r\n }catch($e){\r\n\r\n }\r\n }\r\n $artcilesDate = $.ajax({\r\n url:location.href,\r\n method: \"GET\",\r\n cache:false,\r\n dataType: \"html\",\r\n success: function ($data, $status, $response) {\r\n var $dateString = $response.getResponseHeader('date');\r\n if ($dateString.indexOf('GMT')) {\r\n $dateString = $dateString.replace('GMT','');\r\n }\r\n nurseslounge_articles.set_server_date($dateString);\r\n nurseslounge_articles.articles_date_html();\r\n if(cback != undefined){\r\n cback();\r\n }\r\n }\r\n });\r\n libs.memorySave('articles_date', $artcilesDate);\r\n },\r\n articles_date_html:function(){\r\n var $refreshEverySeconds = 1;\r\n var $now = nurseslounge_articles.get_server_date().getTime();\r\n var $articlesDates = nurseslounge_articles.get_articles_dates();\r\n for(var $i in $articlesDates){\r\n var $key = $articlesDates[$i];\r\n $(document).find('.article-date[data-id=\"'+$key+'\"]').each(function () {\r\n var $ele = $(this);\r\n if($ele.length > 0){\r\n var $val = $ele.data('articledate');\r\n var $newDate = $val.split(' ');\r\n var $yearMonthDay = $newDate[0];\r\n $yearMonthDay = $yearMonthDay.split('-');\r\n var $HourMinuteSecond = $newDate[1];\r\n $HourMinuteSecond = $HourMinuteSecond.split(':');\r\n var $date = new Date($yearMonthDay[0], $yearMonthDay[1] - 1, $yearMonthDay[2], $HourMinuteSecond[0], $HourMinuteSecond[1], $HourMinuteSecond[2]);\r\n var $second = $date.getSeconds();\r\n $second = $second <= 9 ? '0' + $second : $second;\r\n var $minute = $date.getMinutes();\r\n $minute = $minute <= 9 ? '0' + $minute : $minute;\r\n var $hour = $date.getHours();\r\n $hour = $hour <= 9 ? '0' + $hour : $hour;\r\n var $day = $date.getDate();\r\n $day = $day <= 9 ? '0' + $day : $day;\r\n var $month = $date.getMonth() + 1;\r\n $month = $month <= 9 ? '0' + $month : $month;\r\n var $year = $date.getFullYear();\r\n var $articleDate = $year + '-' + $month + '-' + $day + ' ' + $hour + ':'+ $minute + ':' + $second;\r\n $date = $date.getTime();\r\n var $diffSeconds = Math.floor(($now - $date)/1000);\r\n var $diffMinutes = Math.floor($diffSeconds/60);\r\n var $diffHours = Math.floor($diffMinutes/60);\r\n var $diffDays = Math.floor($diffHours/24);\r\n var $chtml = '';\r\n if($diffDays == 0 && $diffHours == 0 && $diffMinutes == 0){\r\n $chtml = $diffSeconds == 1 ? $diffSeconds + ' second ago' : $diffSeconds + ' seconds ago';\r\n }else\r\n if ($diffDays == 0 && $diffHours == 0){\r\n $chtml = $diffMinutes == 1 ? $diffMinutes + ' minute ago' : $diffMinutes + ' minutes ago';\r\n }else\r\n if ($diffDays == 0){\r\n $chtml = $diffHours == 1 ? $diffHours + ' hour ago' : $diffHours + ' hours ago';\r\n }else\r\n if($diffDays < 4){\r\n $chtml = $diffDays == 1 ? $diffDays + ' day ago' : $diffDays + ' days ago';\r\n }else{\r\n $date = $ele.data('articledate');\r\n $chtml = moment.utc($date, 'YYYY-MM-DD HH:mm:ss').local().format('MMMM, DD YYYY hh:mm A');\r\n }\r\n if($ele.html() != $chtml){\r\n $ele.data('articledate', $articleDate).html($chtml);\r\n }\r\n }\r\n });\r\n }\r\n try{\r\n clearTimeout(this.articles_dates_binding);\r\n }catch($e){}\r\n this.articles_dates_binding = setTimeout(function(){\r\n nurseslounge_articles.articles_date_html();\r\n }, ($refreshEverySeconds * 1000));\r\n },\r\n};\r\n","var nurseslounge_article = {\r\n init:function($params){\r\n $params = {user_id:libs.memoryGet('user_id')};\r\n nurseslounge_myDashboard_recommendations.init($params);\r\n nurseslounge_myDashboard_accountSettings.init($params);\r\n nurseslounge_article.menu_selector(function(){\r\n nurseslounge_article.article($params);\r\n });\r\n },\r\n menu_selector:function(cback){\r\n $(\"footer\").hide();\r\n libs.globalUrl();\r\n cback();\r\n },\r\n article:function($params){\r\n //Realtime Clock\r\n nurseslounge_article.article_date();\r\n nurseslounge_article.article_events();\r\n },\r\n article_date_binding:null,\r\n server_date_helper:null,\r\n server_date:null,\r\n set_server_date:function($serverDate){\r\n this.server_date_helper = new Date();\r\n this.server_date = new Date($serverDate);\r\n },\r\n get_server_date:function(){\r\n var $now = new Date().getTime();\r\n var $diff = $now - this.server_date_helper.getTime();\r\n var $date = this.server_date.getTime() + $diff;\r\n return new Date($date);\r\n },\r\n article_date:function(cback){\r\n var $artcileDate = libs.memoryGet('article_date');\r\n if($artcileDate){\r\n try{\r\n $artcileDate.abort();\r\n }catch($e){\r\n\r\n }\r\n }\r\n $artcileDate = $.ajax({\r\n url:location.href,\r\n method: \"GET\",\r\n cache:false,\r\n dataType: \"html\",\r\n success: function ($data, $status, $response) {\r\n var $dateString = $response.getResponseHeader('date');\r\n if ($dateString.indexOf('GMT')) {\r\n $dateString = $dateString.replace('GMT','');\r\n }\r\n nurseslounge_article.set_server_date($dateString);\r\n nurseslounge_article.article_date_html();\r\n if(cback != undefined){\r\n cback();\r\n }\r\n }\r\n });\r\n libs.memorySave('article_date', $artcileDate);\r\n },\r\n article_date_html:function(){\r\n var $refreshEverySeconds = 1;\r\n var $now = nurseslounge_article.get_server_date().getTime();\r\n var $article = $(\"#nurseslounge-article\");\r\n var $ele = $article.find(\".article-wrapper:first .date:first\");\r\n if($ele.length > 0){\r\n var $val = $ele.data('articledate');\r\n var $newDate = $val.split(' ');\r\n var $yearMonthDay = $newDate[0];\r\n $yearMonthDay = $yearMonthDay.split('-');\r\n var $HourMinuteSecond = $newDate[1];\r\n $HourMinuteSecond = $HourMinuteSecond.split(':');\r\n var $date = new Date($yearMonthDay[0], $yearMonthDay[1] - 1, $yearMonthDay[2], $HourMinuteSecond[0], $HourMinuteSecond[1], $HourMinuteSecond[2]);\r\n var $second = $date.getSeconds();\r\n $second = $second <= 9 ? '0' + $second : $second;\r\n var $minute = $date.getMinutes();\r\n $minute = $minute <= 9 ? '0' + $minute : $minute;\r\n var $hour = $date.getHours();\r\n $hour = $hour <= 9 ? '0' + $hour : $hour;\r\n var $day = $date.getDate();\r\n $day = $day <= 9 ? '0' + $day : $day;\r\n var $month = $date.getMonth() + 1;\r\n $month = $month <= 9 ? '0' + $month : $month;\r\n var $year = $date.getFullYear();\r\n var $articleDate = $year + '-' + $month + '-' + $day + ' ' + $hour + ':'+ $minute + ':' + $second;\r\n $date = $date.getTime();\r\n var $diffSeconds = Math.floor(($now - $date)/1000);\r\n var $diffMinutes = Math.floor($diffSeconds/60);\r\n var $diffHours = Math.floor($diffMinutes/60);\r\n var $diffDays = Math.floor($diffHours/24);\r\n var $chtml = '';\r\n if($diffDays == 0 && $diffHours == 0 && $diffMinutes == 0){\r\n $chtml = $diffSeconds == 1 ? $diffSeconds + ' second ago' : $diffSeconds + ' seconds ago';\r\n }else\r\n if ($diffDays == 0 && $diffHours == 0){\r\n $chtml = $diffMinutes == 1 ? $diffMinutes + ' minute ago' : $diffMinutes + ' minutes ago';\r\n }else\r\n if ($diffDays == 0){\r\n $chtml = $diffHours == 1 ? $diffHours + ' hour ago' : $diffHours + ' hours ago';\r\n }else\r\n if($diffDays < 4){\r\n $chtml = $diffDays == 1 ? $diffDays + ' day ago' : $diffDays + ' days ago';\r\n }else{\r\n $date = $ele.data('articledate');\r\n $chtml = moment.utc($date, 'YYYY-MM-DD HH:mm:ss').local().format('MMMM, DD YYYY hh:mm A');\r\n }\r\n if($ele.html() != $chtml){\r\n $ele.data('articledate', $articleDate).html($chtml);\r\n }\r\n }\r\n try{\r\n clearTimeout(this.article_date_binding);\r\n }catch($e){}\r\n this.article_date_binding = setTimeout(function(){\r\n nurseslounge_article.article_date_html();\r\n }, ($refreshEverySeconds * 1000));\r\n },\r\n article_events:function(){\r\n var $article = $(\"#nurseslounge-article\");\r\n var $articleActions = $article.find(\".article-actions:first\");\r\n var $articleWrapper = $article.find(\".article-wrapper:first\");\r\n var $key = $articleWrapper.data('key');\r\n var $params = $.extend({}, {key: $key}, {user_id:libs.memoryGet('user_id')});\r\n $articleActions.find('.option').unbind().click(function(){\r\n var $that = $(this);\r\n var $action = $that.data('action');\r\n var $url = $that.data('url');\r\n switch ($action) {\r\n case 'trash':{\r\n nurseslounge_article.article_trash($params);\r\n break;\r\n }\r\n case 'download':{\r\n window.open($url, '_blank');\r\n break;\r\n }\r\n }\r\n });\r\n $articleActions.find('.share-options:first .share-with').unbind().click(function(){\r\n var $that = $(this);\r\n var $action = $that.data('action');\r\n $params = $.extend({}, $params, {action:$action});\r\n nurseslounge_article.article_share($params);\r\n });\r\n },\r\n article_trash:function($params){\r\n nurseslounge_article.article_trash_request($params, function($data){\r\n var $articlePopUp = 'nurseslounge_myDashboard_wall_article_popup_' + $data.data.key;\r\n if($articlePopUp){\r\n var $nurseslounge = window.opener.$('#nurseslounge-lounge');\r\n if($nurseslounge.length > 0){\r\n $nurseslounge.find('a[data-id=\"my_articles\"]').click();\r\n }\r\n var $nursesloungeArticles = window.opener.$('#nurseslounge-articles');\r\n if($nursesloungeArticles.length > 0){\r\n $nursesloungeArticles.find('.nurseslounge-articles-search input[name=\"search\"]').keypress();\r\n }\r\n window.close($articlePopUp);\r\n }\r\n });\r\n },\r\n article_trash_request:function($params, cback){\r\n $.ajax({\r\n url: \"/article/trash/\"+$params.key,\r\n method: \"POST\",\r\n cache:false,\r\n dataType: \"json\",\r\n data:$params,\r\n success: function ($data) {\r\n libs.expire($data);\r\n if(cback != undefined){\r\n cback($data);\r\n }\r\n }\r\n });\r\n },\r\n article_share:function($params){\r\n nurseslounge_article.article_share_request($params, function($data){\r\n var $document = $data.data.document;\r\n var $AF = $document.article_features;\r\n var $headline = $AF.headline && $AF.headline != '' ? $AF.headline: '        ';\r\n var $imgOption1 = $AF && $AF.image && $AF.image.document_root ? $AF.image.document_root : null;\r\n var $imgOption2 = $document.document_thumb_root;\r\n var $imageThumb = $imgOption1 != null ? $imgOption1 : $imgOption2;\r\n var $shareLink = $document.share_link;\r\n $shareLink = encodeURIComponent($shareLink);\r\n var $url = encodeURIComponent(window.location.href);\r\n $imageThumb = encodeURIComponent($imageThumb);\r\n var $features = '';\r\n switch ($params.action) {\r\n case 'facebook':\r\n window.open('https://www.facebook.com/sharer/sharer.php?u=' + $shareLink, '_blank', $features);\r\n break;\r\n case 'twitter':\r\n window.open('https://twitter.com/intent/tweet?url=' + $shareLink + '&text=' + $headline, '_blank', $features);\r\n break;\r\n case 'pinterest':\r\n window.open('http://www.pinterest.com/pin/create/button?url=' + $url + '&media=' + $imageThumb + '&description=' + $headline, '_blank', $features);\r\n break;\r\n case 'linkedin':\r\n window.open('https://www.linkedin.com/shareArticle?mini=true&url=' + $shareLink, '_blank', $features);\r\n break;\r\n }\r\n });\r\n },\r\n article_share_request:function($params, cback){\r\n $.ajax({\r\n url: \"/article/share/\"+$params.key,\r\n method: \"POST\",\r\n cache:false,\r\n dataType: \"json\",\r\n data:$params,\r\n success: function ($data) {\r\n libs.expire($data);\r\n cback($data);\r\n }\r\n });\r\n },\r\n};\r\n","var nurseslounge_continuingEducation = {\r\n init:function($params){\r\n var $userId = libs.memoryGet('user_id');\r\n $params = {user_id:$userId};\r\n nurseslounge_myDashboard_recommendations.init($params);\r\n nurseslounge_myDashboard_accountSettings.init($params);\r\n nurseslounge_continuingEducation.menu_selector(function(){\r\n nurseslounge_continuingEducation.ce($params);\r\n });\r\n },\r\n menu_selector:function(cback){\r\n $(\"footer\").hide();\r\n libs.globalUrl();\r\n cback();\r\n },\r\n ce:function($params){\r\n var $continuingEducation = $(\"#nurseslounge-continuingEducation\");\r\n var $cards = $continuingEducation.find(\".nurseslounge-continuingEducation-cards\");\r\n var $specialties = $continuingEducation.find(\"select[name='specialties']\");\r\n $specialties.hide();\r\n var $chtml = nurseslounge_continuingEducation.ce_html_preview();\r\n $cards.html($chtml).promise().done(function(){\r\n nurseslounge_continuingEducation.ce_request($params, function($data){\r\n var $chtml = nurseslounge_continuingEducation.ce_html($data);\r\n libs.checkImageLoad($($chtml).find('img'), function(){\r\n $cards.html($chtml).promise().done(function(){\r\n nurseslounge_continuingEducation.ce_events();\r\n });\r\n });\r\n });\r\n });\r\n },\r\n ce_request:function($params, cback){\r\n $.ajax({\r\n url: \"/continuingEducation/get\",\r\n method: \"POST\",\r\n cache:false,\r\n dataType: \"json\",\r\n data:$params,\r\n success: function ($data) {\r\n libs.expire($data);\r\n if($data.status == 'success'){\r\n cback($data);\r\n }\r\n }\r\n });\r\n },\r\n ce_html_preview:function(){\r\n var $chtml = '';\r\n for(var $i=0; $i<2; $i++){\r\n $chtml += '' +\r\n '
    ' +\r\n '
    ' +\r\n '
    ' +\r\n '       ' +\r\n '
    ' +\r\n '
    ' +\r\n '

          

    ' +\r\n '

          

    ' +\r\n '
    ' +\r\n '
    ' +\r\n '
    ' +\r\n '       ' +\r\n '
    ' +\r\n '
    ' +\r\n '
    ' +\r\n '
    ';\r\n }\r\n return $chtml;\r\n },\r\n ce_html:function($data){\r\n var $chtml = '
    ';\r\n $.each($data.data.group, function($i, $v){\r\n var $widgets = $v.widgets;\r\n var $tag = $v.tag;\r\n $chtml += '' +\r\n '
    '+$tag+'
    ' +\r\n '
    ';\r\n $.each($widgets, function($widget_i, $widget_v){\r\n var $id = $widget_v.id;\r\n var $title = $widget_v.title;\r\n var $description = $widget_v.description_text;\r\n var $types = [];\r\n $.each($widget_v.specialties, function($i, $sv){\r\n if($sv.specialty && $sv.specialty.type){\r\n $types.push($sv.specialty.type);\r\n }\r\n });\r\n var $states = [];\r\n $.each($widget_v.states, function($i, $sv){\r\n $states.push($sv.state.state);\r\n });\r\n var $image = $widget_v.image_root_widget;\r\n //var $link = $widget_v.link;\r\n var $hours = $widget_v.hours ? $widget_v.hours : 0;\r\n var $rating = $widget_v.rating ? $widget_v.rating : 0;\r\n var $question = $widget_v.questions ? $widget_v.questions : 0;\r\n var $ceTags = [];\r\n if($types.length > 0) {\r\n $.each($types, function($i, $widget_v){\r\n $ceTags.push({tag:$widget_v});\r\n });\r\n }\r\n if($states.length > 0) {\r\n $.each($states, function($i, $widget_v){\r\n $ceTags.push({tag:$widget_v});\r\n });\r\n }\r\n if($hours > 0) {\r\n $ceTags.push({tag:'Hours '+$hours});\r\n }\r\n if($rating > 0) {\r\n $ceTags.push({tag:'Rating '+$rating});\r\n }\r\n if($question > 0) {\r\n $ceTags.push({tag:'Question '+$question});\r\n }\r\n $description = $description.length > 500 ? $description.substr(0, 500) + '...' : $description;\r\n\r\n $chtml += '' +\r\n '
    ' +\r\n '
    ' +\r\n '
    ' +\r\n ' \"continuing' +\r\n '
    '+\r\n '
    ' +\r\n '

    '+$title+'

    '+\r\n '

    ' + $description + '

    ' +\r\n //' ' +\r\n '
    ' +\r\n '
    ';\r\n $.each($ceTags, function($sI, $sV){\r\n $chtml += '
    ' + $sV.tag + '
    ';\r\n });\r\n $chtml += '' +\r\n '
    ' +\r\n '       ' +\r\n '
    ' +\r\n '
    ' +\r\n '
    ' +\r\n '
    ';\r\n });\r\n $chtml += '' +\r\n '
    ' +\r\n '
    ';\r\n });\r\n $chtml += '
    ';\r\n return $chtml;\r\n },\r\n ce_events:function(){\r\n var $userId = libs.memoryGet('user_id');\r\n var $carousels = $(\"#nurseslounge-continuingEducation .nurseslounge-continuingEducation-main .carousel\");\r\n $carousels.unbind();\r\n $carousels.slick({\r\n speed: 300,\r\n slidesToShow: 2,\r\n slidesToScroll: 1,\r\n arrows: true,\r\n responsive: [\r\n {\r\n breakpoint: 1024,\r\n settings: {\r\n slidesToShow: 2,\r\n slidesToScroll: 1,\r\n }\r\n },\r\n {\r\n breakpoint: 600,\r\n settings: {\r\n slidesToShow: 1,\r\n slidesToScroll: 1\r\n }\r\n },\r\n {\r\n breakpoint: 480,\r\n settings: {\r\n slidesToShow: 1,\r\n slidesToScroll: 1\r\n }\r\n }\r\n ]\r\n });\r\n var $continuingEducation = $(\"#nurseslounge-continuingEducation\");\r\n var $main = $continuingEducation.find(\".nurseslounge-continuingEducation-main\");\r\n var $specialties = $continuingEducation.find(\"select[name='specialties']\");\r\n $specialties.show();\r\n try{\r\n $specialties.chosen('destroy');\r\n }catch (e) {}\r\n $specialties.chosen();\r\n $specialties.unbind();\r\n $specialties.change(function(){\r\n $bindSearch = setTimeout(function(){\r\n var $params = $.extend({}, {\r\n user_id:$userId,\r\n search:$search.val(),\r\n specialties:$specialties.val()\r\n });\r\n nurseslounge_continuingEducation.ce($params);\r\n }, 800);\r\n });\r\n var $item = $main.find(\".item\");\r\n $item.unbind().click(function(){\r\n var $that = $(this);\r\n var $id = $that.data('id');\r\n nurseslounge_myDashboard_continuingEducation.open_ce({\r\n user_id:$userId,\r\n id:$id\r\n });\r\n });\r\n var $search = $main.find('input[name=\"search\"]');\r\n var $bindSearch;\r\n $search.unbind().on('keyup keydown keypress', function(){\r\n try{\r\n clearTimeout($bindSearch);\r\n }catch ($e) {\r\n\r\n }\r\n $bindSearch = setTimeout(function(){\r\n var $params = $.extend({}, {\r\n user_id:$userId,\r\n search:$search.val(),\r\n specialties:$specialties.val()\r\n });\r\n nurseslounge_continuingEducation.ce($params);\r\n }, 2000);\r\n });\r\n nurseslounge_continuingEducation.ce_autocomplete(\r\n $search,\r\n {user_id:$userId},\r\n \"/continuingEducation/autocomplete\",\r\n function($keyword){\r\n try{\r\n clearTimeout($bindSearch);\r\n }catch ($e) {\r\n\r\n }\r\n var $params = $.extend({}, {\r\n user_id:$userId,\r\n search:$keyword,\r\n specialties:$specialties.val()\r\n });\r\n nurseslounge_continuingEducation.ce($params);\r\n }\r\n );\r\n },\r\n ce_autocomplete:function($target, $data, $url, cback){\r\n try {\r\n $($target).autocomplete(\"destroy\");\r\n }catch (e) {\r\n }\r\n var $value = '';\r\n $($target).autocomplete({\r\n minLength\t:2,\r\n search\t\t: function(){\r\n $(this).addClass(\"ui-autocomplete-loading\");\r\n },\r\n open \t\t: function(){\r\n $(this).removeClass(\"ui-autocomplete-loading\");\r\n },\r\n source: function(request, response) {\r\n $.ajax({\r\n method: 'POST',\r\n url:$url,\r\n data:$.extend({},{\r\n keyword:$($target).val()\r\n }, $data),\r\n dataType: \"json\",\r\n success: function($data){\r\n libs.expire($data);\r\n $value = '';\r\n response($data);\r\n }\r\n });\r\n },\r\n create:function(){\r\n $(this).prev().remove();\r\n $(this).trigger(\"keypress.autocomplete\");\r\n },\r\n select: function (event, ui) {\r\n $value = ui.item.value;\r\n $(this).val($value);\r\n cback($value);\r\n return false;\r\n }\r\n }).keypress(function ($e) {\r\n if ($e.which == 13) {\r\n cback($(this).val());\r\n $(this).autocomplete(\"close\");\r\n }\r\n });\r\n },\r\n};\r\n","var nurseslounge_lounge_activity = {\n init:function($params){\n $(window).nurseslounge_lounge_wall($params);\n $params = $.extend({},$params, {tab:'init'});\n nurseslounge_lounge_overview.information_lounge_get('init', $params, function($data){\n nurseslounge_lounge_activity.information_administrator_edit($params, $data);\n if(\n $data.data.lounge.lounge_type_id == 1 || //employer\n $data.data.lounge.lounge_type_id == 2 //school\n ){\n nurseslounge_lounge_activity.information_rating($params, $data);\n }\n try{\n google.maps.event.addListener(window, \"load\", nurseslounge_lounge_activity.information_location_map($data));\n }catch (e) {\n\n }\n });\n nurseslounge_myDashboard_activity.lounge_follow_request(function($chtml){\n nurseslounge_lounge_activity.lounge_follow_container($chtml);\n });\n nurseslounge_lounge_activity.banners_location(function($config){\n nurseslounge_myDashboard_myProfile.banners_engine($config);\n });\n nurseslounge_lounge_activity.task_list_container(function($container){\n $params = $.extend({}, $params, {only:'owners'});\n nurseslounge_myDashboard_myProfile.task_list($container, $params);\n });\n nurseslounge_lounge_activity.information_meet_our_recruiters(function($config){\n nurseslounge_lounge_overview.information_meet_our_recruiters_engine($config);\n });\n nurseslounge_lounge_activity.report_container(function($container){\n nurseslounge_lounge_overview.report($container, $params);\n });\n nurseslounge_lounge_activity.lounge_ads_location(function($config){\n nurseslounge_lounge_overview.lounge_ads_engine($config);\n });\n },\n //Administrator\n information_administrator_edit:function($params, $data){\n var $modal = $(\"#nurseslounge-lounge-information-edit-modal\");\n var $isEmployer = $data && $data.data && $data.data.lounge && $data.data.lounge.lounge_type_id ? $data.data.lounge.lounge_type_id == 1 : false;\n var $isSchool = $data && $data.data && $data.data.lounge && $data.data.lounge.lounge_type_id ? $data.data.lounge.lounge_type_id == 2 : false;\n var $isSpecialty = $data && $data.data && $data.data.lounge && $data.data.lounge.lounge_type_id ? $data.data.lounge.lounge_type_id == 8 : false;\n var $thoughtLeaders = $data && $data.data && $data.data.lounge && $data.data.lounge.lounge_type_id ? $data.data.lounge.lounge_type_id == 9 : false;\n var $credential = $data && $data.data && $data.data.user_credential ? $data.data.user_credential : [];\n $isEmployer = !$isEmployer ? $params.typeName == 'employers' : $isEmployer;\n $isSchool = !$isSchool ? $params.typeName == 'schools' : $isSchool;\n $isSpecialty = !$isSpecialty ? $params.typeName == 'specialties' : $isSpecialty;\n $thoughtLeaders = !$thoughtLeaders ? $params.typeName == 'thoughtLeaders' : $thoughtLeaders;\n $credential = $credential.map(function($x){return parseInt($x);});\n var $createNewLoungeAccess = $.inArray(5, $credential) != -1 ? true : false;\n var $editNewLoungeAccess = $.inArray(6, $credential) != -1 ? true : false;\n var $deleteNewLoungeAccess = $.inArray(15, $credential) != -1 ? true : false;\n var $helpVideos = $.inArray(37, $credential) != -1 ? true : false;\n var $allowTabs = {\n 'information': $.inArray(7, $credential) != -1 ? true : false,\n 'otherNames': $.inArray(62, $credential) != -1 && !$thoughtLeaders ? true : false,\n 'specialties': $.inArray(80, $credential) != -1 && $isSpecialty || $.inArray(80, $credential) != -1 && $thoughtLeaders ? true : false,\n 'location': $.inArray(8, $credential) != -1 && !$thoughtLeaders ? true : false,\n 'multimedia': $.inArray(9, $credential) != -1 ? true : false,\n 'virtualTour': $.inArray(83, $credential) != -1 && !$thoughtLeaders ? true : false,\n 'recruiters': $.inArray(10, $credential) != -1 && !$thoughtLeaders ? true : false,\n 'owners': $.inArray(11, $credential) != -1 ? true : false,\n 'jobs': $.inArray(12, $credential) != -1 && $isEmployer || $.inArray(12, $credential) != -1 && $isSchool ? true : false,\n 'import': $.inArray(13, $credential) != -1 && $isEmployer || $.inArray(13, $credential) != -1 && $isSchool ? true : false,\n 'api': $.inArray(13, $credential) != -1 && $isEmployer || $.inArray(13, $credential) != -1 && $isSchool ? true : false,\n 'statistics': $.inArray(14, $credential) != -1 ? true : false,\n 'degrees': $.inArray(17, $credential) != -1 && $isSchool ? true : false,\n 'invite': $.inArray(24, $credential) != -1 ? true : false,\n 'inviteStatistics': $.inArray(28, $credential) != -1 ? true : false,\n 'inviteTemplates': $.inArray(66, $credential) != -1 ? true : false,\n 'createLogo': $.inArray(67, $credential) != -1 ? true : false,\n 'buyAds': $.inArray(71, $credential) != -1 && $isSchool ? true : false,\n 'sponsorDegrees': $.inArray(75, $credential) != -1 && $isSchool ? true : false,\n 'spotlightJobs': $.inArray(77, $credential) != -1 && !$isSchool && !$thoughtLeaders ? true : false,\n };\n var $allowTabsFiltered = $allowTabs;\n $allowTabs = {};\n $.each($allowTabsFiltered, function($k, $v) {var $newObj = {};$newObj[$k]=$v;if($v){$.extend($allowTabs, $newObj);}});\n var $information = $(\"#nurseslounge-lounge-activity\");\n var $informationRight = $information.find('.nurseslounge-lounge-activity-right:first .administrator:first');\n var $options = $informationRight.find('.option');\n $options.each(function(){\n var $that = $(this);\n var $action = $that.data('action');\n if(\n $createNewLoungeAccess && $action == 'create' ||\n $editNewLoungeAccess && $action == 'edit' ||\n $deleteNewLoungeAccess && $action == 'delete' ||\n $helpVideos && $action == 'help-videos' ||\n $helpVideos && $action == 'create-pin-it' ||\n $helpVideos && $action == 'create-event' ||\n $helpVideos && $action == 'send-invitation' ||\n $helpVideos && $action == 'examples-posts'\n ) {\n $that.unbind().click(function () {\n var $tab = null;\n $.each($allowTabs, function($i, $v){\n if($v){\n $tab = $i;\n return false;\n }\n });\n if(\n $tab && $action == 'create' ||\n $tab && $action == 'edit'\n ){\n nurseslounge_lounge_overview.information_administrator_select_tab($action, $tab, $allowTabs, $params, function () {\n $modal.scrollTop(0);\n $modal.modal('show');\n });\n }else\n if($tab && $action == 'help-videos'){\n window.open('https://www.home.nurseslounge.com/help-center', '_blank', '');\n }else\n if($tab && $action == 'create-pin-it'){\n nurseslounge_lounge_overview.information_administrator_tab_open_video('https://www.youtube.com/watch?v=NedHuxskMV8');\n }else\n if($tab && $action == 'create-event'){\n nurseslounge_lounge_overview.information_administrator_tab_open_video('https://www.youtube.com/watch?v=Dd4XKeHIAo0');\n }else\n if($tab && $action == 'send-invitation'){\n nurseslounge_lounge_overview.information_administrator_tab_open_video('https://www.youtube.com/watch?v=FbQw8gA_KmU');\n }else\n if($tab && $action == 'examples-posts'){\n nurseslounge_lounge_overview.information_administrator_tab_open_images();\n }else\n if($action == 'delete'){\n if(confirm('Are you sure you want to delete this lounge?')){\n $params = $.extend({},$params, {action:$action,tab:$action});\n nurseslounge_lounge_overview.information_administrator_tab_request($params, function($data){\n if($data.status == 'success'){\n router.navigate('/lounges');\n }\n });\n }\n }\n });\n }\n });\n if($isEmployer){\n $modal.find('.nav-pills .nav-link[data-target=\"#otherNames\"]').html(\"Facility Names\");\n }else{\n $modal.find('.nav-pills .nav-link[data-target=\"#otherNames\"]').html(\"Other Names\");\n }\n },\n //Rating And Reviews\n information_rating:function($params, $data){\n var $typeId = $data.data.lounge.lounge_type_id ? $data.data.lounge.lounge_type_id : 0;\n var $nursesloungeLoungeInformation = $(\"#nurseslounge-lounge-activity\");\n var $reviewModal = $(\"#nurseslounge-lounge-information-review-modal\");\n var $loungeInformationRight = $nursesloungeLoungeInformation.find('.nurseslounge-lounge-activity-right:first');\n var $ratingFirst = $loungeInformationRight.find('.rating-stars:first');\n var $ratingCount = $loungeInformationRight.find('.rating-count:first');\n var $addReviewFirst = $loungeInformationRight.find('.add-review:first');\n var $deleteReviewFirst = $loungeInformationRight.find('.delete-review:first');\n $ratingFirst.unbind().click(function(){\n nurseslounge_lounge_overview.information_review($typeId, $params, $data, function(){\n libs.refreshBoxFrom('.review-box', $params, function(){\n nurseslounge_lounge_activity.init($params);\n $reviewModal.modal('hide');\n });\n });\n });\n $ratingCount.unbind().click(function(){\n nurseslounge_lounge_overview.information_review($typeId, $params, $data, function(){\n libs.refreshBoxFrom('.review-box', $params, function(){\n nurseslounge_lounge_activity.init($params);\n $reviewModal.modal('hide');\n });\n });\n });\n $addReviewFirst.unbind().click(function(){\n nurseslounge_lounge_overview.information_review($typeId, $params, $data, function(){\n libs.refreshBoxFrom('.review-box', $params, function(){\n nurseslounge_lounge_activity.init($params);\n $reviewModal.modal('hide');\n });\n });\n });\n $deleteReviewFirst.unbind().click(function(){\n if(confirm('Are you sure you want to delete your review?')){\n nurseslounge_lounge_overview.information_remove_review($params, function(){\n libs.refreshBoxFrom('.review-box', $params, function(){\n nurseslounge_lounge_activity.init($params);\n $reviewModal.modal('hide');\n });\n });\n }\n });\n },\n //Map Location\n information_location_map:function($data){\n var $location = $data && $data.data && $data.data.lounge && $data.data.lounge.location ? $data.data.lounge.location : null;\n if($location && $location.address_latitude && $location.address_longitude && $location.address_is_unmappable == 0){\n var $position = new google.maps.LatLng(parseFloat($location.address_latitude), parseFloat($location.address_longitude));\n var $iconUrl = './../../bimg/NursesLounge/active.png';\n var $map = new google.maps.Map(document.getElementById('nurseslounge-lounge-activity-right-map'), {\n center:$position,\n mapTypeId: google.maps.MapTypeId.ROADMAP,\n mapTypeControl: false,\n streetViewControl: false,\n fullscreenControl: false,\n zoom: 15\n });\n $map.setTilt(0);\n var $marker = new google.maps.Marker({\n position:$position,\n map: $map,\n animation: google.maps.Animation.DROP,\n icon: {url:$iconUrl, scaledSize: (new google.maps.Size(20, 35))},\n });\n }\n },\n //Banners\n banners_location:function(cback){\n cback({\n 'banners':$(\"#nurseslounge-lounge-activity .nurseslounge-lounge-activity-right .banners\")\n });\n },\n lounge_ads_location:function(cback){\n cback({\n 'ads':$(\"#nurseslounge-lounge-activity .nurseslounge-lounge-activity-right .lounge-ads\")\n });\n },\n //Follow Lounges\n lounge_follow_container:function($chtml){\n libs.checkImageLoad($($chtml).find('img'), function(){\n $(\"#nurseslounge-lounge-activity .nurseslounge-lounge-activity-right .follow-lounges\").html($chtml);\n });\n },\n //Task List Container\n task_list_container:function(cback){\n var $container = $(\"#nurseslounge-lounge-activity .nurseslounge-lounge-activity-right\");\n cback($container);\n },\n //Pin IT\n pin_it:function($params, cback){\n nurseslounge_lounge_activity.pin_it_request($params, function($data){\n router.navigate('/lounge/'+$data.data.lounge_key+'/activity');\n setTimeout(function(){\n var $activity = $(\".nav-underline a[data-id='activity']\");\n $(\".nav-underline a\").removeClass('active');\n $params = $.extend({}, $params, {key:$data.data.lounge_key,post:$data.data.post});\n nurseslounge_lounge.submenu_open($activity[0], $activity.data('url'), $activity.data('id')+'_sub', $params);\n nurseslounge_lounge.menu_selector();\n if(cback != undefined){\n cback($data);\n }\n }, 5000);\n });\n },\n pin_it_request:function($params, cback){\n $.ajax({\n url:\"/lounge/activity/pinIt/get\",\n method: \"POST\",\n dataType: \"json\",\n data:$params,\n success: function ($data) {\n libs.expire($data);\n cback($data);\n }\n });\n },\n //Meet our recruiters\n information_meet_our_recruiters:function(cback){\n cback({\n 'container':$(\"#nurseslounge-lounge-activity .nurseslounge-lounge-activity-right .meet-our-recruiters\")\n });\n },\n //Report\n report_container:function(cback){\n var $container = $(\"#nurseslounge-lounge-activity .nurseslounge-lounge-activity-right .report\");\n cback($container);\n },\n};\n","var nurseslounge_thoughtLeaders = {\n home:function($params){\n nurseslounge_myDashboard_recommendations.init($params);\n nurseslounge_myDashboard_accountSettings.init($params);\n nurseslounge_thoughtLeaders.submenu($params, function(){\n $(\".nav-underline a:eq(0)\").click();\n });\n },\n home_sub:function($params){\n nurseslounge_thoughtLeaders_home.init($params);\n },\n submenu:function($params, cback){\n $(\".nav-underline a\").unbind().click(function(){\n $(\".nav-underline a\").removeClass('active');\n nurseslounge_thoughtLeaders.submenu_open(this, $(this).data('url'), 'home_sub', $params)\n });\n nurseslounge_thoughtLeaders.menu_selector();\n cback();\n },\n submenu_open:function($this, $url, $module, $params){\n $($this).addClass('active');\n router.pause();\n router.navigate($url);\n router.resume();\n $params = $.extend({}, $params, {user_id:libs.memoryGet('user_id')});\n libs.subrender($url, 'nurseslounge_thoughtLeaders', $module, $params, 'POST');\n },\n menu_selector:function(){\n libs.globalUrl();\n }\n};\n","var nurseslounge_thoughtLeaders_home = {\n init:function($params){\n $params = $.extend({},$params, {typeName:'thoughtLeaders', tab:'init'});\n nurseslounge_thoughtLeaders_home.lounges_home_first_load($params);\n nurseslounge_lounge_overview.information_lounge_get('init', $params, function($data) {\n nurseslounge_lounges_home.lounge_home_create_lounge($params, $data);\n });\n nurseslounge_lounges_home.banners_location(function($config){\n nurseslounge_myDashboard_myProfile.banners_engine($config);\n });\n nurseslounge_lounges_home.lounge_ads_location(function($config){\n nurseslounge_lounge_overview.lounge_ads_engine($config);\n });\n },\n lounges_home_first_load:function($params){\n var $loungeHomeLeft = $(\"#nurseslounge-lounges-home .nurseslounge-lounges-home-left\");\n var $loungeForm = $loungeHomeLeft.find('form');\n var $name = $loungeForm.find('input[name=\"name\"]');\n //var $states = $loungeForm.find('select[name=\"states\"]');\n var $specialties = $loungeForm.find('select[name=\"specialties\"]');\n var $search = $loungeForm.find('.search');\n var $reset = $loungeForm.find('.reset');\n var $bindingSelector;\n /*\n try{\n $states.chosen('destroy');\n }catch (e) {}\n $states.chosen();\n $states.unbind();\n */\n try{\n $specialties.chosen('destroy');\n }catch (e) {}\n $specialties.chosen();\n $specialties.unbind();\n nurseslounge_thoughtLeaders_home.lounges_home_autocomplete(\n $name,\n $params,\n \"/lounges/home/autocomplete\",\n function($keyword){\n nurseslounge_thoughtLeaders_home.lounges_home_search($params);\n }\n );\n $specialties.change(function(){\n try {\n clearTimeout($bindingSelector);\n }catch (e) {\n }\n $bindingSelector = setTimeout(function(){\n nurseslounge_lounges_home.lounges_home_search($params);\n }, 800);\n });\n /*\n $states.change(function(){\n try {\n clearTimeout($bindingSelector);\n }catch (e) {\n }\n $bindingSelector = setTimeout(function(){\n nurseslounge_lounges_home.lounges_home_search($params);\n }, 800);\n });\n */\n $search.unbind().click(function(){\n nurseslounge_thoughtLeaders_home.lounges_home_search($params);\n });\n $reset.unbind().click(function(){\n $loungeForm[0].reset();\n $specialties.find('option').prop('selected',false);\n /*\n $states.find('option').prop('selected',false);\n */\n nurseslounge_thoughtLeaders_home.lounges_home_search($params);\n });\n nurseslounge_thoughtLeaders_home.lounges_home_search($params);\n\n /*Popup Button*/\n var $loungeHomeRight = $(\"#nurseslounge-lounges-home .nurseslounge-lounges-home-right\");\n var $thoughtLeaderContainer = $loungeHomeRight.find(\".thought-leader-container\");\n var $thoughtLeaderButton = $thoughtLeaderContainer.find(\".thought-leader\");\n $thoughtLeaderButton.unbind().click(function(){\n nurseslounge_myDashboard_thoughtLeadersForm.open_modal($params);\n });\n },\n lounges_home_autocomplete:function($target, $data, $url, cback){\n try {\n $($target).autocomplete(\"destroy\");\n }catch (e) {\n }\n var $value = '';\n $($target).autocomplete({\n minLength\t:2,\n search\t\t: function(){\n $(this).addClass(\"ui-autocomplete-loading\");\n },\n open \t\t: function(){\n $(this).removeClass(\"ui-autocomplete-loading\");\n },\n source: function(request, response) {\n $.ajax({\n method: 'POST',\n url:$url,\n data:$.extend({\n keyword:$($target).val()\n }, $data),\n dataType: \"json\",\n success: function($data){\n libs.expire($data);\n $value = '';\n response($data);\n }\n });\n },\n create:function(){\n $(this).prev().remove();\n $(this).trigger(\"keypress.autocomplete\");\n },\n select: function (event, ui) {\n $value = ui.item.value;\n $(this).val($value);\n cback($value);\n return false;\n }\n }).keypress(function ($e) {\n if ($e.which == 13) {\n cback($(this).val());\n $(this).autocomplete(\"close\");\n }\n });\n },\n lounges_home_search:function($params){\n var $loungeHomeLeft = $(\"#nurseslounge-lounges-home .nurseslounge-lounges-home-left\");\n var $loungeForm = $loungeHomeLeft.find('form');\n var $name = $loungeForm.find('input[name=\"name\"]');\n var $specialties = $loungeForm.find('select[name=\"specialties\"]');\n /*\n var $states = $loungeForm.find('select[name=\"states\"]');\n */\n var $loungeList = $loungeHomeLeft.find(\".lounge-list:first\");\n var $loungeListPreview = nurseslounge_thoughtLeaders_home.lounge_preview();\n var $resultInfo = $loungeHomeLeft.find(\".result-info-count:first\");\n var $resultPreview = ' ';\n var $paginationNav = $loungeHomeLeft.find('.pagination-nav');\n var $paginationNavPreview = ' ';\n $params = $.extend({},$params,{\n name:$name.val(),\n //states:$states.val(),\n specialties:$specialties.val()\n });\n $resultInfo.addClass('nurseslounge-lounge-home-preload').html($resultPreview);\n $paginationNav.addClass('nurseslounge-lounge-home-preload').html($paginationNavPreview);\n $loungeList.html($loungeListPreview).promise().done(function(){\n nurseslounge_thoughtLeaders_home.lounge_pagination($params);\n });\n },\n lounge_preview:function(){\n var $chtml = '';\n for(var $i=1; $i<=10; $i++){\n $chtml+= '' +\n '
  • ' +\n '
    ' +\n '
    ' +\n '
    ' +\n '
    ' +\n '                 ' +\n '                 ' +\n '
    ' +\n '
    ' +\n '

    ' +\n '                   ' +\n '                   ' +\n '                   ' +\n '                   ' +\n '

    ' +\n '

    ' +\n '  ' +\n '

    ' +\n '
    ' +\n '
    ' +\n '
    ' +\n '
    ' +\n '
    ' +\n '
    ' +\n ' ' +\n ' ' +\n ' ' +\n ' ' +\n ' ' +\n '
    ' +\n '
    ' +\n '  ' +\n '
    ' +\n '
    ' +\n '                   ' +\n '
    ' +\n '
    ' +\n '
  • ';\n }\n return $chtml;\n },\n lounge_pagination:function($params){\n var $reload;\n var $loaded = false;\n var $afterFirstPagination = false;\n var $loungeHomeLeft = $(\"#nurseslounge-lounges-home .nurseslounge-lounges-home-left\");\n var $loungeList = $loungeHomeLeft.find(\".lounge-list:first\");\n var $paginationNav = $loungeHomeLeft.find('.pagination-nav');\n var $previewHeight = $loungeHomeLeft.find('.lounge-list .preview:first').innerHeight();\n var $loungeHeight = $loungeList.innerHeight();\n var $pageSize = Math.round(($loungeHeight/$previewHeight));\n var $resultInfo = $loungeHomeLeft.find(\".result-info-count:first\");\n var $saveParams = $params;\n var $paginationObj;\n try{\n $paginationObj = libs.memoryGet('lounge_pagination');\n if($paginationObj){\n $paginationObj.pagination('destroy');\n }\n }catch ($e) {\n }\n $paginationObj = $paginationNav.pagination({\n pageSize: $pageSize,\n showPageNumbers: true,\n showPrevious: true,\n showNext: true,\n showNavigator: true,\n showFirstOnEllipsisShow: true,\n showLastOnEllipsisShow: true,\n dataSource: window.location.protocol +'//'+ window.location.hostname + \"/lounges/home/get\",\n locator: 'data.lounges',\n ajax:{\n method: \"POST\",\n cache:false,\n dataType: \"json\",\n data:$params,\n beforeSend: function() {\n $loungeList.html(nurseslounge_thoughtLeaders_home.lounge_preview());\n },\n complete:function($data){\n libs.expire($data.responseJSON);\n }\n },\n totalNumberLocator: function($data) {\n return $data.data.total;\n },\n callback: function($data, $pagination) {\n $loaded = true;\n var $title = 'Thought Leaders';\n if($loungeList.length > 0 && $loungeList.offset().top > 0 && $afterFirstPagination){\n $('html, body').animate({scrollTop:$loungeList.offset().top - 100});\n }else{\n $afterFirstPagination = true;\n }\n var $pageNumber = $pagination.pageNumber;\n var $pageSize = $pagination.pageSize;\n var $totalNumber = $pagination.totalNumber;\n var $first = $totalNumber > 0 ? (($pageNumber-1) * $pageSize) + 1 : 0;\n var $last = $totalNumber > 0 ? ($first + $data.length - 1) : 0;\n $paginationNav.removeClass('nurseslounge-lounge-home-preload');\n $resultInfo.removeClass('nurseslounge-lounge-home-preload').html('Showing '+$first+' - '+$last+' of '+$totalNumber+' results for '+$title+'');\n var $chtml = nurseslounge_thoughtLeaders_home.lounge_home_item_html($data);\n libs.checkImageLoad($($chtml).find('img'), function () {\n $loungeList.html('').html($chtml).promise().done(function () {\n nurseslounge_thoughtLeaders_home.lounges_home_list_events($saveParams);\n });\n });\n }\n });\n libs.memorySave('lounge_pagination', $paginationObj);\n $reload = setTimeout(function(){\n if(!$loaded){\n nurseslounge_thoughtLeaders_home.lounge_pagination($params);\n }else{\n clearTimeout($reload);\n }\n }, 150000);\n },\n lounge_home_item_html:function($lounges){\n var $chtml = '';\n var $userId = libs.memoryGet('user_id');\n $.each($lounges, function($i, $v){\n var $img = $v.logo_root_lounge;\n var $publicLink = $v.public_link;\n $chtml+='' +\n '
  • ' +\n '
    ' +\n '
    ' +\n '
    ' +\n '
    ' +\n ' \"lounge\"' +\n '
    ' +\n '
    ' +\n '

    ' +\n ' '+$v.name+'' +\n '

    ';\n if($v.lounge_type_id != 1 && $v.lounge_type_id != 2){\n $chtml+='' +\n '

    ' +\n $v.followers_count+ ' Followers' +\n '

    ';\n }\n $chtml+='' +\n '
    ' +\n '
    ' +\n '
    ' +\n '
    ';\n if($v.lounge_type_id == 1 || $v.lounge_type_id == 2){\n $chtml+='' +\n '
    ' +\n '
    ' +\n nurseslounge_thoughtLeaders_home.add_stars($v.rating) +\n '
    ' +\n '
    ' +\n $v.rating + ' / 5 ' +\n '
    ' +\n '
    ';\n }else{\n $chtml+='' +\n '
    ' +\n '
    ' +\n '     ' +\n '
    ' +\n '
    ' +\n '     ' +\n '
    ' +\n '
    ';\n }\n if($userId != 'guest' && $v.lounge_type_id != 1 && $v.lounge_type_id != 2){\n if($v.my_follow) {\n $chtml +='';\n }else{\n $chtml+='';\n }\n }\n $chtml+='' +\n '
    ' +\n '
    ' +\n '
  • ';\n });\n return $chtml;\n },\n add_stars:function($rating){\n var $chtml = '';\n for(var $i=1; $i<=5; $i++) {\n var $star = $rating - $i;\n var $offsetOn;\n var $offsetOff;\n var $unique = libs.getUniqueId();\n if($star >= 0){\n $offsetOn = 100;\n $offsetOff = 0;\n }else if($star < 0 && $star > -1){\n $star = ($star * -1);\n $offsetOff = ($star * 100);\n $offsetOn = (100 - $offsetOff);\n }else{\n $offsetOn = 0;\n $offsetOff = 100;\n }\n $chtml += '' +\n '' +\n ' ' +\n ' ';\n if($offsetOn > 0) {\n $chtml += '' +\n '';\n }\n if($offsetOff > 0){\n $chtml += '' +\n '';\n }\n $chtml += '' +\n ' ' +\n ' ' +\n ' ' +\n '';\n }\n return $chtml;\n },\n lounges_home_list_events:function($params){\n var $loungeHomeLeft = $(\"#nurseslounge-lounges-home .nurseslounge-lounges-home-left\");\n var $loungeList = $loungeHomeLeft.find(\".lounge-list:first\");\n var $userId = libs.memoryGet('user_id');\n $loungeList.find(\".follow-action\").unbind().click(function($e){\n $e.stopPropagation();\n var $that = $(this);\n var $follow = !$that.hasClass('follow');\n var $item = $that.parents('.item:first');\n var $key = $item.data('key');\n var $params = {user_id:$userId, key:$key, follow:$follow};\n nurseslounge_lounges_home.lounges_home_list_follower_request($params, function($data){\n if($data.status == 'success'){\n var $follow = $data.data.follow;\n var $members = $data.data.members;\n $item.find('.lounge-followers:first').html($members+ ' Followers');\n if($follow){\n $item.find('.follow-action').removeClass('btn-save').removeClass('btnAnimate').addClass('btn-light').addClass('follow').html('Followed');\n }else{\n $item.find('.follow-action').removeClass('btn-light').removeClass('follow').addClass('btn-save').addClass('btnAnimate').html('Follow');\n }\n }\n });\n });\n $loungeList.find(\".open-lounge\").unbind().click(function(){\n var $key = $(this).parents('.item:first').data('key');\n var $publicLink = $(this).parents('.item:first').data('public_link');\n if($userId == 'guest'){\n window.open($publicLink,'_self');\n }else{\n router.navigate('/thoughtLeaders/'+$key);\n }\n });\n },\n};\n","var public_nurseslounge_myDashboard_myProfile = {\r\n init:function($params){\r\n libs.globalUrl();\r\n $(\".nav-underline a:eq(0)\").addClass('active');\r\n libs.subrender('/public/myDashboard/myProfile', 'public_nurseslounge_myDashboard_myProfile', 'sub_render', $params, 'POST');\r\n },\r\n sub_render:function($params){\r\n nurseslounge_myDashboard.menu_scroll();\r\n public_nurseslounge_myDashboard_myProfile.events($params);\r\n nurseslounge_myDashboard_activity.lounge_follow_request(function($chtml){\r\n public_nurseslounge_myDashboard_myProfile.lounge_follow_container($chtml);\r\n });\r\n nurseslounge_myDashboard_colleagues.recommended_friends(function($chtml){\r\n public_nurseslounge_myDashboard_myProfile.recommended_friends_container($chtml);\r\n });\r\n nurseslounge_myDashboard_myProfile.banners_location(function($config){\r\n nurseslounge_myDashboard_myProfile.banners_engine($config);\r\n });\r\n },\r\n events:function(){\r\n var $nav = $(\".nav-underline\");\r\n var $navLink = $nav.find('.nav-link');\r\n $navLink.unbind().click(function(){\r\n var $that = $(this);\r\n var $id = $that.data('id');\r\n $id = libs.snakeToCamel('profile_'+$id);\r\n public_nurseslounge_lounge_overview.login_popup({id:$id});\r\n });\r\n $(\".nurseslounge-home-my-profile-left-profile-about-my-career\").hide();\r\n var $imageChange = $(\"#content #nurseslounge-lounge .image-change\");\r\n $imageChange.unbind().click(function(){\r\n public_nurseslounge_lounge_overview.login_popup({id:'profileEvent'});\r\n });\r\n var $myProfileLeft = $(\"#nurseslounge-home-my-profile .nurseslounge-home-my-profile-left\");\r\n var $editProfile = $myProfileLeft.find('.edit-profile');\r\n $editProfile.unbind().click(function(){\r\n public_nurseslounge_lounge_overview.login_popup({id:'profileEvent'});\r\n });\r\n var $editAboutMyCareer = $myProfileLeft.find('.edit-aboutMyCareer');\r\n $editAboutMyCareer.unbind().click(function(){\r\n public_nurseslounge_lounge_overview.login_popup({id:'profileEvent'});\r\n });\r\n var $addExperience = $myProfileLeft.find('.add-experience');\r\n $addExperience.unbind().click(function(){\r\n public_nurseslounge_lounge_overview.login_popup({id:'profileEvent'});\r\n });\r\n var $editExperience = $myProfileLeft.find('.edit-experience');\r\n $editExperience.unbind().click(function(){\r\n public_nurseslounge_lounge_overview.login_popup({id:'profileEvent'});\r\n });\r\n var $addEducation = $myProfileLeft.find('.add-education');\r\n $addEducation.unbind().click(function(){\r\n public_nurseslounge_lounge_overview.login_popup({id:'profileEvent'});\r\n });\r\n var $editEducation = $myProfileLeft.find('.edit-education');\r\n $editEducation.unbind().click(function(){\r\n public_nurseslounge_lounge_overview.login_popup({id:'profileEvent'});\r\n });\r\n var $editCertification = $myProfileLeft.find('.edit-certification');\r\n $editCertification.unbind().click(function(){\r\n public_nurseslounge_lounge_overview.login_popup({id:'profileEvent'});\r\n });\r\n var $addCards = $myProfileLeft.find('.add-cards');\r\n $addCards.unbind().change(function(){\r\n var $that = $(this);\r\n $that.val('');\r\n public_nurseslounge_lounge_overview.login_popup({id:'profileEvent'});\r\n });\r\n var $readMore = $myProfileLeft.find('.read-more');\r\n $readMore.unbind().click(function(){\r\n public_nurseslounge_lounge_overview.login_popup({id:'profileEvent'});\r\n });\r\n },\r\n //Follow Lounges\r\n lounge_follow_container:function($chtml){\r\n libs.checkImageLoad($($chtml).find('img'), function(){\r\n $(\"#nurseslounge-home-my-profile .nurseslounge-home-my-profile-right .follow-lounges\").html($chtml).promise().done(function(){\r\n var $href = $(this).find('a');\r\n $href.unbind().click(function($e){\r\n $e.preventDefault();\r\n var $that = $(this);\r\n var $key = $that.data('key');\r\n //var $publicLink = $that.data('public_link');\r\n //window.open($publicLink, '_self');\r\n public_nurseslounge_lounge_overview.login_popup({id:'activity',key:$key});\r\n });\r\n });\r\n });\r\n },\r\n //Recommended Friends\r\n recommended_friends_container:function($chtml){\r\n if($chtml == ''){\r\n $(\"#nurseslounge-home-my-profile .nurseslounge-home-my-profile-right .invite-colleagues\").parents('.card:first').remove();\r\n return false;\r\n }\r\n libs.checkImageLoad($($chtml).find('img'), function(){\r\n $(\"#nurseslounge-home-my-profile .nurseslounge-home-my-profile-right .invite-colleagues\").html($chtml).promise().done(function(){\r\n $(this).find(\".open-profile\").unbind().click(function(){\r\n var $userId = $(this).data('id');\r\n public_nurseslounge_lounge_overview.login_popup({id:'knowUser',user_id:$userId});\r\n });\r\n $(this).find(\".send-friend-request\").unbind().click(function($e){\r\n $e.stopPropagation();\r\n var $li = $(this).parents('li:first');\r\n var $userId = $li.data('id');\r\n public_nurseslounge_lounge_overview.login_popup({id:'knowUser',user_id:$userId});\r\n });\r\n });\r\n });\r\n },\r\n};\r\n","var public_nurseslounge_myDashboard_activity = {\n init:function($params){\n $params = $.extend({}, $params, {user_id:'guest'});\n libs.globalUrl();\n $(\".nav-underline a:eq(0)\").addClass('active');\n libs.subrender('/public/myDashboard/activity', 'public_nurseslounge_myDashboard_activity', 'sub_render', $params, 'POST');\n },\n sub_render:function($params){\n nurseslounge_myDashboard.menu_scroll();\n public_nurseslounge_myDashboard_activity.events($params);\n nurseslounge_myDashboard_activity.lounge_follow_request(function($chtml){\n public_nurseslounge_myDashboard_activity.lounge_follow_container($chtml);\n });\n public_nurseslounge_myDashboard_activity.send_invite();\n public_nurseslounge_myDashboard_activity.image_wall();\n nurseslounge_myDashboard_manageMyCompany.init({user_id:libs.memoryGet('user_id')});\n },\n events:function($params){\n var $nav = $(\".nav-underline\");\n var $navLink = $nav.find('.nav-link');\n $navLink.unbind().click(function(){\n var $that = $(this);\n var $id = $that.data('id');\n $id = libs.snakeToCamel('profile_'+$id);\n public_nurseslounge_lounge_overview.login_popup({id:$id});\n });\n $(\".nurseslounge-home-my-profile-left-profile-about-my-career\").hide();\n var $imageChange = $(\"#content #nurseslounge-lounge .image-change\");\n $imageChange.unbind().click(function(){\n public_nurseslounge_lounge_overview.login_popup({id:'profileEvent'});\n });\n var $myProfileLeft = $(\"#nurseslounge-home-my-profile .nurseslounge-home-my-profile-left\");\n var $editProfile = $myProfileLeft.find('.edit-profile');\n $editProfile.unbind().click(function(){\n public_nurseslounge_lounge_overview.login_popup({id:'profileEvent'});\n });\n var $editAboutMyCareer = $myProfileLeft.find('.edit-aboutMyCareer');\n $editAboutMyCareer.unbind().click(function(){\n public_nurseslounge_lounge_overview.login_popup({id:'profileEvent'});\n });\n var $addExperience = $myProfileLeft.find('.add-experience');\n $addExperience.unbind().click(function(){\n public_nurseslounge_lounge_overview.login_popup({id:'profileEvent'});\n });\n var $editExperience = $myProfileLeft.find('.edit-experience');\n $editExperience.unbind().click(function(){\n public_nurseslounge_lounge_overview.login_popup({id:'profileEvent'});\n });\n var $addEducation = $myProfileLeft.find('.add-education');\n $addEducation.unbind().click(function(){\n public_nurseslounge_lounge_overview.login_popup({id:'profileEvent'});\n });\n var $editEducation = $myProfileLeft.find('.edit-education');\n $editEducation.unbind().click(function(){\n public_nurseslounge_lounge_overview.login_popup({id:'profileEvent'});\n });\n var $editCertification = $myProfileLeft.find('.edit-certification');\n $editCertification.unbind().click(function(){\n public_nurseslounge_lounge_overview.login_popup({id:'profileEvent'});\n });\n var $addCards = $myProfileLeft.find('.add-cards');\n $addCards.unbind().change(function(){\n var $that = $(this);\n $that.val('');\n public_nurseslounge_lounge_overview.login_popup({id:'profileEvent'});\n });\n var $readMore = $myProfileLeft.find('.read-more');\n $readMore.unbind().click(function(){\n public_nurseslounge_lounge_overview.login_popup({id:'profileEvent'});\n });\n $(\"#nurseslounge-home-activity .nurseslounge-home-activity-right .complete-form-thought-leader\").unbind().click(function(){\n nurseslounge_myDashboard_thoughtLeadersForm.open_modal($params);\n });\n },\n //Follow Lounges\n lounge_follow_container:function($chtml){\n libs.checkImageLoad($($chtml).find('img'), function(){\n $(\"#nurseslounge-home-activity .nurseslounge-home-activity-right .follow-lounges\").html($chtml).promise().done(function(){\n var $href = $(this).find('a');\n $href.unbind().click(function($e){\n $e.preventDefault();\n var $that = $(this);\n var $key = $that.data('key');\n //var $publicLink = $that.data('public_link');\n //window.open($publicLink, '_self');\n public_nurseslounge_lounge_overview.login_popup({id:'activity',key:$key});\n });\n });\n });\n },\n //Send Invite\n send_invite:function(){\n $(\"#nurseslounge-home-activity .nurseslounge-home-activity-right .send-invite\").unbind().click(function(){\n public_nurseslounge_lounge_overview.login_popup({id:'activity'});\n });\n },\n //Image Wall\n image_wall:function(){\n $(\"#nurseslounge-home-activity .nurseslounge-home-activity-left .image-wall\").unbind().click(function(){\n public_nurseslounge_lounge_overview.login_popup({id:'activity'});\n });\n }\n};\n","var nurseslounge_lounges_tour = {\r\n init:function($params){\r\n var $steps = [];\r\n if($params.profile_id == 1 || $params.profile_id == 2){\r\n //Non Nurses\r\n $steps = [\r\n {\r\n placement: \"right\",\r\n element: function () {\r\n return $(document).find(\".my-dashboard-tour\");\r\n },\r\n title: \"Let's Tour Your New Dashboard\",\r\n content: \"We’ll quickly show you around your dashboard and Nurses Lounge features.\",\r\n //orphan: true\r\n },\r\n {\r\n placement: \"right\",\r\n element: function () {\r\n return $(document).find(\".my-bulletin-board-tour\");\r\n },\r\n title: \"My Bulletin Board\",\r\n content: \"Announcements for jobs, events, hiring bonuses and other content will be shared with nurses on their bulletin boards. You must own your organization's Lounge page to create content to share with nurses.\",\r\n },\r\n {\r\n placement: \"right\",\r\n element: function () {\r\n return $(document).find(\".my-profile-tour\");\r\n },\r\n title: \"Resume Builder\",\r\n content: \"Add your skills and education to preview and download a .PDF resume. \",\r\n onNext: function() {\r\n $(\".nav-scroller-right-tour\").click();\r\n },\r\n },\r\n {\r\n placement: \"right\",\r\n element: function () {\r\n return $(document).find(\".my-articles-tour\");\r\n },\r\n title: \"My Articles\",\r\n content: \"Add articles written by nurse leaders affiliated with your organization. Tag your organization to the article to increase attention, views and reach!\",\r\n onPrev: function () {\r\n $(\".nav-scroller-left-tour\").click();\r\n },\r\n },\r\n {\r\n placement: \"right\",\r\n element: function () {\r\n return $(document).find(\".manage-my-lounges-tour\");\r\n },\r\n title: \"Manage a Lounge\",\r\n content: \"Search for your organization’s Lounge page to become an owner. Once you are an owner you can add jobs, degrees, events and other content that we will send to nurse dashboards.\",\r\n onNext: function() {\r\n $(\".settings-dropdown-tour\").dropdown('show');\r\n },\r\n },\r\n {\r\n placement: \"right\",\r\n element: function () {\r\n return $(document).find(\".settings-dropdown-tour\");\r\n },\r\n title: \"Access Your Settings\",\r\n content: \"Visit your Dashboard Settings to update your skills, education, location, etc. Visit Notification Settings to schedule your dashboard digest - a recap of content you may have missed on your Lounge page.\",\r\n onPrev: function () {\r\n $(\".settings-dropdown-tour\").dropdown('hide');\r\n },\r\n onNext: function() {\r\n $(\".settings-dropdown-tour\").dropdown('hide');\r\n },\r\n },\r\n {\r\n placement: \"bottom\",\r\n element: function () {\r\n return $(document).find(\".lounge-navbar-nav-tour\");\r\n },\r\n title: \"Explore\",\r\n content: \"Use the links up here to search all Nurses Lounge has to offer. More jobs, degrees, articles and other content is added every week!\",\r\n onPrev: function () {\r\n $(\".settings-dropdown-tour\").dropdown('show');\r\n },\r\n },\r\n ];\r\n }else{\r\n $steps = [\r\n {\r\n placement: \"bottom\",\r\n element: function () {\r\n return $(document).find(\".my-dashboard-tour\");\r\n },\r\n title: \"Let's Tour Your New Dashboard\",\r\n content: \"We’ll quickly show you around your dashboard and Nurses Lounge features.\",\r\n },\r\n {\r\n placement: \"right\",\r\n element: function () {\r\n return $(document).find(\".my-bulletin-board-tour\");\r\n },\r\n title: \"My Bulletin Board\",\r\n content: \"Announcements for jobs, events, hiring bonuses and other content will be shared here. Over time posts become more relevant to your skills, education and location.\",\r\n },\r\n {\r\n placement: \"right\",\r\n element: function () {\r\n return $(document).find(\".my-profile-tour\");\r\n },\r\n title: \"Resume Builder\",\r\n content: \"Add your skills and education to preview and download a .PDF resume. \",\r\n onNext: function() {\r\n $(\".nav-scroller-right-tour\").click();\r\n },\r\n },\r\n {\r\n placement: \"right\",\r\n element: function () {\r\n return $(document).find(\".my-articles-tour\");\r\n },\r\n title: \"My Articles\",\r\n content: \"Do you enjoy writing or sharing articles related to nursing? Add them here. Submit articles you author or share articles you enjoy and credit the author. We’ll add them to the collection. \",\r\n onPrev: function () {\r\n $(\".nav-scroller-left-tour\").click();\r\n },\r\n onNext: function() {\r\n $(\".nav-scroller-left-tour\").click();\r\n },\r\n },\r\n {\r\n placement: \"right\",\r\n element: function () {\r\n return $(document).find(\".nav-scroller-right-tour\");\r\n },\r\n title: \"Your Dashboard\",\r\n content: \"Scroll through the various categories. Sit back and relax we deliver the nursing profession to you.\",\r\n onPrev: function () {\r\n $(\".nav-scroller-right-tour\").click();\r\n },\r\n onNext: function() {\r\n $(\".nav-scroller-left-tour\").click();\r\n },\r\n delay:1800\r\n },\r\n {\r\n placement: \"right\",\r\n element: function () {\r\n return $(document).find(\".my-lounges-list-tour\");\r\n },\r\n title: \"Follow, Rate & Review\",\r\n content: \"Follow organizations of your interest to prioritize their content to your bulletin board. Anonymously rate & review schools and employers to help nurses make tough career choices.\",\r\n onNext: function() {\r\n $(\".settings-dropdown-tour\").dropdown('show');\r\n },\r\n },\r\n {\r\n placement: \"right\",\r\n element: function () {\r\n return $(document).find(\".settings-dropdown-tour\");\r\n },\r\n title: \"Access Your Settings\",\r\n content: \"Visit your Dashboard Settings to update your skills, education, location, etc. Visit Notification Settings to schedule your dashboard digest - a recap of content you may have missed on your Lounge page.\",\r\n onPrev: function () {\r\n $(\".settings-dropdown-tour\").dropdown('hide');\r\n },\r\n onNext: function() {\r\n $(\".settings-dropdown-tour\").dropdown('hide');\r\n },\r\n },\r\n {\r\n placement: \"bottom\",\r\n element: function () {\r\n return $(document).find(\".lounge-navbar-nav-tour\");\r\n },\r\n title: \"Explore\",\r\n content: \"Use the links up here to search all Nurses Lounge has to offer. More jobs, degrees, articles and other content is added every week!\",\r\n onPrev: function () {\r\n $(\".settings-dropdown-tour\").dropdown('show');\r\n },\r\n },\r\n ];\r\n }\r\n var $tour = new Tour({\r\n framework: 'bootstrap4',\r\n smartPlacement: false,\r\n name: 'tourist',\r\n container: 'body',\r\n autoscroll: true,\r\n keyboard: true,\r\n storage: false,\r\n debug: false,\r\n backdrop: false,\r\n backdropContainer: 'document',\r\n backdropPadding: 0,\r\n redirect: true,\r\n orphan: false,\r\n duration: false,\r\n delay: false,\r\n basePath: '',\r\n showProgressBar: true,\r\n showProgressText: true,\r\n template: '' +\r\n '
    ' +\r\n '
    ' +\r\n '

    ' +\r\n '
    ' +\r\n '
    ' +\r\n '
    ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n '
    ' +\r\n ' ' +\r\n '
    ' +\r\n '
    ',\r\n onStart: function () {\r\n router.navigate(\"myDashboard/activity\");\r\n },\r\n onEnd: function () {\r\n $(\".settings-dropdown-tour\").dropdown('hide');\r\n },\r\n steps: $steps\r\n });\r\n $tour.restart();\r\n },\r\n};\r\n","var socketFunctions = {\r\n getNotificationsByUserId: function ($data) {\r\n socket.emit(\"getNotificationsByUserId\", $data);\r\n },\r\n /*\r\n * Inbox\r\n * */\r\n inbox_open_chat_room_by_id: function ($data) {\r\n socket.emit(\"myInboxOpenChatRoomById\", $data);\r\n },\r\n inbox_refresh_room:function ($data) {\r\n socket.emit(\"myInboxRefreshRoom\", $data);\r\n },\r\n inbox_update_room:function ($data) {\r\n socket.emit(\"myInboxUpdateRoom\", $data);\r\n },\r\n inbox_refresh_top_room:function($data){\r\n socket.emit(\"myInboxRefreshTopRoom\", $data);\r\n },\r\n inbox_refresh_list:function ($data) {\r\n socket.emit(\"myInboxRefreshList\", $data);\r\n },\r\n};\r\n$(document).ready(function() {\r\n socket.on('connect', function(){\r\n socket.emit(\"newUserConnection\", {\r\n user_id:libs.memoryGet('user_id'),\r\n real_time_api_token:libs.memoryGet('real_time_api_token')\r\n });\r\n socket.on('connectionAllowed', function($obj){\r\n //First Connection\r\n socketFunctions.getNotificationsByUserId($obj);\r\n });\r\n /*\r\n * Notifications\r\n * */\r\n var $notificationsBinding;\r\n socket.on('notifications', function($notification){\r\n try{\r\n clearTimeout($notificationsBinding);\r\n }catch ($e){\r\n\r\n }\r\n $notificationsBinding = setTimeout(function(){\r\n var $needToView = libs.memoryGet('needToView') ? libs.memoryGet('needToView') : -1;\r\n var $newNotificationsIndex = $notification.listen - $notification.viewed;\r\n if($newNotificationsIndex != $needToView){\r\n libs.memorySave('needToView', $newNotificationsIndex);\r\n nurseslounge_myDashboard_accountSettings.notificationUpdate($notification);\r\n }\r\n }, 800);\r\n });\r\n var $inboxNotificationsBinding;\r\n socket.on('inboxNotifications', function($notification){\r\n try{\r\n clearTimeout($inboxNotificationsBinding);\r\n }catch ($e){\r\n\r\n }\r\n $inboxNotificationsBinding = setTimeout(function(){\r\n var $needToViewInboxNotifications = libs.memoryGet('needToViewInboxNotifications') ? libs.memoryGet('needToViewInboxNotifications') : -1;\r\n var $newInboxNotificationsIndex = $notification.listen - $notification.viewed;\r\n if($newInboxNotificationsIndex != $needToViewInboxNotifications){\r\n libs.memorySave('needToViewInboxNotifications', $newInboxNotificationsIndex);\r\n nurseslounge_myDashboard_accountSettings.inboxNotificationUpdate($notification);\r\n }\r\n }, 800);\r\n });\r\n /*\r\n * Inbox\r\n * */\r\n socket.on('myInboxOpenChatRoomByIdAnswer', function($data){\r\n nurseslounge_myDashboard_myInbox.inbox_open_chat_room_by_id_answer($data);\r\n });\r\n socket.on('myInboxRefreshRoomAnswer', function(){\r\n nurseslounge_myDashboard_myInbox.inbox_refresh_room_answer();\r\n });\r\n socket.on('myInboxUpdateRoomAnswer', function($data){\r\n nurseslounge_myDashboard_myInbox.inbox_update_room_answer($data);\r\n });\r\n socket.on('myInboxRefreshListAnswers', function($data){\r\n nurseslounge_myDashboard_myInbox.inbox_refresh_list_answers($data);\r\n });\r\n /*\r\n * Disconnect\r\n * */\r\n socket.on('disconnect', function(){\r\n //window.location = '/logout';\r\n });\r\n });\r\n});\r\n"]}