A flexible JavaScript carousel with mobile & touch support