{"version":3,"sources":["jquery.cycle2.js","jquery.cycle2.swipe.js","jquery.cycle2.center.js","jquery.cycle2.carousel.js","jquery.unveil.js","foundation.js","foundation.reveal.js","accessible-nav.js","accordions.js","tabs.js","tables.js","main.js"],"names":[],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AC3gDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;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;ACjEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AC7QA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;ACvDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AC5tBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AC5hBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AChRA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AC9DA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;ACnHA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AC9BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;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":"main.js","sourcesContent":["/*!\r\n* jQuery Cycle2; version: 2.1.6 build: 20141007\r\n* http://jquery.malsup.com/cycle2/\r\n* Copyright (c) 2014 M. Alsup; Dual licensed: MIT/GPL\r\n*/\r\n\r\n/* Cycle2 core engine */\r\n;(function($) {\r\n\"use strict\";\r\n\r\nvar version = '2.1.6';\r\n\r\n$.fn.cycle = function( options ) {\r\n // fix mistakes with the ready state\r\n var o;\r\n if ( this.length === 0 && !$.isReady ) {\r\n o = { s: this.selector, c: this.context };\r\n $.fn.cycle.log('requeuing slideshow (dom not ready)');\r\n $(function() {\r\n $( o.s, o.c ).cycle(options);\r\n });\r\n return this;\r\n }\r\n\r\n return this.each(function() {\r\n var data, opts, shortName, val;\r\n var container = $(this);\r\n var log = $.fn.cycle.log;\r\n\r\n if ( container.data('cycle.opts') )\r\n return; // already initialized\r\n\r\n if ( container.data('cycle-log') === false || \r\n ( options && options.log === false ) ||\r\n ( opts && opts.log === false) ) {\r\n log = $.noop;\r\n }\r\n\r\n log('--c2 init--');\r\n data = container.data();\r\n for (var p in data) {\r\n // allow props to be accessed sans 'cycle' prefix and log the overrides\r\n if (data.hasOwnProperty(p) && /^cycle[A-Z]+/.test(p) ) {\r\n val = data[p];\r\n shortName = p.match(/^cycle(.*)/)[1].replace(/^[A-Z]/, lowerCase);\r\n log(shortName+':', val, '('+typeof val +')');\r\n data[shortName] = val;\r\n }\r\n }\r\n\r\n opts = $.extend( {}, $.fn.cycle.defaults, data, options || {});\r\n\r\n opts.timeoutId = 0;\r\n opts.paused = opts.paused || false; // #57\r\n opts.container = container;\r\n opts._maxZ = opts.maxZ;\r\n\r\n opts.API = $.extend ( { _container: container }, $.fn.cycle.API );\r\n opts.API.log = log;\r\n opts.API.trigger = function( eventName, args ) {\r\n opts.container.trigger( eventName, args );\r\n return opts.API;\r\n };\r\n\r\n container.data( 'cycle.opts', opts );\r\n container.data( 'cycle.API', opts.API );\r\n\r\n // opportunity for plugins to modify opts and API\r\n opts.API.trigger('cycle-bootstrap', [ opts, opts.API ]);\r\n\r\n opts.API.addInitialSlides();\r\n opts.API.preInitSlideshow();\r\n\r\n if ( opts.slides.length )\r\n opts.API.initSlideshow();\r\n });\r\n};\r\n\r\n$.fn.cycle.API = {\r\n opts: function() {\r\n return this._container.data( 'cycle.opts' );\r\n },\r\n addInitialSlides: function() {\r\n var opts = this.opts();\r\n var slides = opts.slides;\r\n opts.slideCount = 0;\r\n opts.slides = $(); // empty set\r\n \r\n // add slides that already exist\r\n slides = slides.jquery ? slides : opts.container.find( slides );\r\n\r\n if ( opts.random ) {\r\n slides.sort(function() {return Math.random() - 0.5;});\r\n }\r\n\r\n opts.API.add( slides );\r\n },\r\n\r\n preInitSlideshow: function() {\r\n var opts = this.opts();\r\n opts.API.trigger('cycle-pre-initialize', [ opts ]);\r\n var tx = $.fn.cycle.transitions[opts.fx];\r\n if (tx && $.isFunction(tx.preInit))\r\n tx.preInit( opts );\r\n opts._preInitialized = true;\r\n },\r\n\r\n postInitSlideshow: function() {\r\n var opts = this.opts();\r\n opts.API.trigger('cycle-post-initialize', [ opts ]);\r\n var tx = $.fn.cycle.transitions[opts.fx];\r\n if (tx && $.isFunction(tx.postInit))\r\n tx.postInit( opts );\r\n },\r\n\r\n initSlideshow: function() {\r\n var opts = this.opts();\r\n var pauseObj = opts.container;\r\n var slideOpts;\r\n opts.API.calcFirstSlide();\r\n\r\n if ( opts.container.css('position') == 'static' )\r\n opts.container.css('position', 'relative');\r\n\r\n $(opts.slides[opts.currSlide]).css({\r\n opacity: 1,\r\n display: 'block',\r\n visibility: 'visible'\r\n });\r\n opts.API.stackSlides( opts.slides[opts.currSlide], opts.slides[opts.nextSlide], !opts.reverse );\r\n\r\n if ( opts.pauseOnHover ) {\r\n // allow pauseOnHover to specify an element\r\n if ( opts.pauseOnHover !== true )\r\n pauseObj = $( opts.pauseOnHover );\r\n\r\n pauseObj.hover(\r\n function(){ opts.API.pause( true ); }, \r\n function(){ opts.API.resume( true ); }\r\n );\r\n }\r\n\r\n // stage initial transition\r\n if ( opts.timeout ) {\r\n slideOpts = opts.API.getSlideOpts( opts.currSlide );\r\n opts.API.queueTransition( slideOpts, slideOpts.timeout + opts.delay );\r\n }\r\n\r\n opts._initialized = true;\r\n opts.API.updateView( true );\r\n opts.API.trigger('cycle-initialized', [ opts ]);\r\n opts.API.postInitSlideshow();\r\n },\r\n\r\n pause: function( hover ) {\r\n var opts = this.opts(),\r\n slideOpts = opts.API.getSlideOpts(),\r\n alreadyPaused = opts.hoverPaused || opts.paused;\r\n\r\n if ( hover )\r\n opts.hoverPaused = true; \r\n else\r\n opts.paused = true;\r\n\r\n if ( ! alreadyPaused ) {\r\n opts.container.addClass('cycle-paused');\r\n opts.API.trigger('cycle-paused', [ opts ]).log('cycle-paused');\r\n\r\n if ( slideOpts.timeout ) {\r\n clearTimeout( opts.timeoutId );\r\n opts.timeoutId = 0;\r\n \r\n // determine how much time is left for the current slide\r\n opts._remainingTimeout -= ( $.now() - opts._lastQueue );\r\n if ( opts._remainingTimeout < 0 || isNaN(opts._remainingTimeout) )\r\n opts._remainingTimeout = undefined;\r\n }\r\n }\r\n },\r\n\r\n resume: function( hover ) {\r\n var opts = this.opts(),\r\n alreadyResumed = !opts.hoverPaused && !opts.paused,\r\n remaining;\r\n\r\n if ( hover )\r\n opts.hoverPaused = false; \r\n else\r\n opts.paused = false;\r\n\r\n \r\n if ( ! alreadyResumed ) {\r\n opts.container.removeClass('cycle-paused');\r\n // #gh-230; if an animation is in progress then don't queue a new transition; it will\r\n // happen naturally\r\n if ( opts.slides.filter(':animated').length === 0 )\r\n opts.API.queueTransition( opts.API.getSlideOpts(), opts._remainingTimeout );\r\n opts.API.trigger('cycle-resumed', [ opts, opts._remainingTimeout ] ).log('cycle-resumed');\r\n }\r\n },\r\n\r\n add: function( slides, prepend ) {\r\n var opts = this.opts();\r\n var oldSlideCount = opts.slideCount;\r\n var startSlideshow = false;\r\n var len;\r\n\r\n if ( $.type(slides) == 'string')\r\n slides = $.trim( slides );\r\n\r\n $( slides ).each(function(i) {\r\n var slideOpts;\r\n var slide = $(this);\r\n\r\n if ( prepend )\r\n opts.container.prepend( slide );\r\n else\r\n opts.container.append( slide );\r\n\r\n opts.slideCount++;\r\n slideOpts = opts.API.buildSlideOpts( slide );\r\n\r\n if ( prepend )\r\n opts.slides = $( slide ).add( opts.slides );\r\n else\r\n opts.slides = opts.slides.add( slide );\r\n\r\n opts.API.initSlide( slideOpts, slide, --opts._maxZ );\r\n\r\n slide.data('cycle.opts', slideOpts);\r\n opts.API.trigger('cycle-slide-added', [ opts, slideOpts, slide ]);\r\n });\r\n\r\n opts.API.updateView( true );\r\n\r\n startSlideshow = opts._preInitialized && (oldSlideCount < 2 && opts.slideCount >= 1);\r\n if ( startSlideshow ) {\r\n if ( !opts._initialized )\r\n opts.API.initSlideshow();\r\n else if ( opts.timeout ) {\r\n len = opts.slides.length;\r\n opts.nextSlide = opts.reverse ? len - 1 : 1;\r\n if ( !opts.timeoutId ) {\r\n opts.API.queueTransition( opts );\r\n }\r\n }\r\n }\r\n },\r\n\r\n calcFirstSlide: function() {\r\n var opts = this.opts();\r\n var firstSlideIndex;\r\n firstSlideIndex = parseInt( opts.startingSlide || 0, 10 );\r\n if (firstSlideIndex >= opts.slides.length || firstSlideIndex < 0)\r\n firstSlideIndex = 0;\r\n\r\n opts.currSlide = firstSlideIndex;\r\n if ( opts.reverse ) {\r\n opts.nextSlide = firstSlideIndex - 1;\r\n if (opts.nextSlide < 0)\r\n opts.nextSlide = opts.slides.length - 1;\r\n }\r\n else {\r\n opts.nextSlide = firstSlideIndex + 1;\r\n if (opts.nextSlide == opts.slides.length)\r\n opts.nextSlide = 0;\r\n }\r\n },\r\n\r\n calcNextSlide: function() {\r\n var opts = this.opts();\r\n var roll;\r\n if ( opts.reverse ) {\r\n roll = (opts.nextSlide - 1) < 0;\r\n opts.nextSlide = roll ? opts.slideCount - 1 : opts.nextSlide-1;\r\n opts.currSlide = roll ? 0 : opts.nextSlide+1;\r\n }\r\n else {\r\n roll = (opts.nextSlide + 1) == opts.slides.length;\r\n opts.nextSlide = roll ? 0 : opts.nextSlide+1;\r\n opts.currSlide = roll ? opts.slides.length-1 : opts.nextSlide-1;\r\n }\r\n },\r\n\r\n calcTx: function( slideOpts, manual ) {\r\n var opts = slideOpts;\r\n var tx;\r\n\r\n if ( opts._tempFx )\r\n tx = $.fn.cycle.transitions[opts._tempFx];\r\n else if ( manual && opts.manualFx )\r\n tx = $.fn.cycle.transitions[opts.manualFx];\r\n\r\n if ( !tx )\r\n tx = $.fn.cycle.transitions[opts.fx];\r\n\r\n opts._tempFx = null;\r\n this.opts()._tempFx = null;\r\n\r\n if (!tx) {\r\n tx = $.fn.cycle.transitions.fade;\r\n opts.API.log('Transition \"' + opts.fx + '\" not found. Using fade.');\r\n }\r\n return tx;\r\n },\r\n\r\n prepareTx: function( manual, fwd ) {\r\n var opts = this.opts();\r\n var after, curr, next, slideOpts, tx;\r\n\r\n if ( opts.slideCount < 2 ) {\r\n opts.timeoutId = 0;\r\n return;\r\n }\r\n if ( manual && ( !opts.busy || opts.manualTrump ) ) {\r\n opts.API.stopTransition();\r\n opts.busy = false;\r\n clearTimeout(opts.timeoutId);\r\n opts.timeoutId = 0;\r\n }\r\n if ( opts.busy )\r\n return;\r\n if ( opts.timeoutId === 0 && !manual )\r\n return;\r\n\r\n curr = opts.slides[opts.currSlide];\r\n next = opts.slides[opts.nextSlide];\r\n slideOpts = opts.API.getSlideOpts( opts.nextSlide );\r\n tx = opts.API.calcTx( slideOpts, manual );\r\n\r\n opts._tx = tx;\r\n\r\n if ( manual && slideOpts.manualSpeed !== undefined )\r\n slideOpts.speed = slideOpts.manualSpeed;\r\n\r\n // if ( opts.nextSlide === opts.currSlide )\r\n // opts.API.calcNextSlide();\r\n\r\n // ensure that:\r\n // 1. advancing to a different slide\r\n // 2. this is either a manual event (prev/next, pager, cmd) or \r\n // a timer event and slideshow is not paused\r\n if ( opts.nextSlide != opts.currSlide && \r\n (manual || (!opts.paused && !opts.hoverPaused && opts.timeout) )) { // #62\r\n\r\n opts.API.trigger('cycle-before', [ slideOpts, curr, next, fwd ]);\r\n if ( tx.before )\r\n tx.before( slideOpts, curr, next, fwd );\r\n\r\n after = function() {\r\n opts.busy = false;\r\n // #76; bail if slideshow has been destroyed\r\n if (! opts.container.data( 'cycle.opts' ) )\r\n return;\r\n\r\n if (tx.after)\r\n tx.after( slideOpts, curr, next, fwd );\r\n opts.API.trigger('cycle-after', [ slideOpts, curr, next, fwd ]);\r\n opts.API.queueTransition( slideOpts);\r\n opts.API.updateView( true );\r\n };\r\n\r\n opts.busy = true;\r\n if (tx.transition)\r\n tx.transition(slideOpts, curr, next, fwd, after);\r\n else\r\n opts.API.doTransition( slideOpts, curr, next, fwd, after);\r\n\r\n opts.API.calcNextSlide();\r\n opts.API.updateView();\r\n } else {\r\n opts.API.queueTransition( slideOpts );\r\n }\r\n },\r\n\r\n // perform the actual animation\r\n doTransition: function( slideOpts, currEl, nextEl, fwd, callback) {\r\n var opts = slideOpts;\r\n var curr = $(currEl), next = $(nextEl);\r\n var fn = function() {\r\n // make sure animIn has something so that callback doesn't trigger immediately\r\n next.animate(opts.animIn || { opacity: 1}, opts.speed, opts.easeIn || opts.easing, callback);\r\n };\r\n\r\n next.css(opts.cssBefore || {});\r\n curr.animate(opts.animOut || {}, opts.speed, opts.easeOut || opts.easing, function() {\r\n curr.css(opts.cssAfter || {});\r\n if (!opts.sync) {\r\n fn();\r\n }\r\n });\r\n if (opts.sync) {\r\n fn();\r\n }\r\n },\r\n\r\n queueTransition: function( slideOpts, specificTimeout ) {\r\n var opts = this.opts();\r\n var timeout = specificTimeout !== undefined ? specificTimeout : slideOpts.timeout;\r\n if (opts.nextSlide === 0 && --opts.loop === 0) {\r\n opts.API.log('terminating; loop=0');\r\n opts.timeout = 0;\r\n if ( timeout ) {\r\n setTimeout(function() {\r\n opts.API.trigger('cycle-finished', [ opts ]);\r\n }, timeout);\r\n }\r\n else {\r\n opts.API.trigger('cycle-finished', [ opts ]);\r\n }\r\n // reset nextSlide\r\n opts.nextSlide = opts.currSlide;\r\n return;\r\n }\r\n if ( opts.continueAuto !== undefined ) {\r\n if ( opts.continueAuto === false || \r\n ($.isFunction(opts.continueAuto) && opts.continueAuto() === false )) {\r\n opts.API.log('terminating automatic transitions');\r\n opts.timeout = 0;\r\n if ( opts.timeoutId )\r\n clearTimeout(opts.timeoutId);\r\n return;\r\n }\r\n }\r\n if ( timeout ) {\r\n opts._lastQueue = $.now();\r\n if ( specificTimeout === undefined )\r\n opts._remainingTimeout = slideOpts.timeout;\r\n\r\n if ( !opts.paused && ! opts.hoverPaused ) {\r\n opts.timeoutId = setTimeout(function() { \r\n opts.API.prepareTx( false, !opts.reverse ); \r\n }, timeout );\r\n }\r\n }\r\n },\r\n\r\n stopTransition: function() {\r\n var opts = this.opts();\r\n if ( opts.slides.filter(':animated').length ) {\r\n opts.slides.stop(false, true);\r\n opts.API.trigger('cycle-transition-stopped', [ opts ]);\r\n }\r\n\r\n if ( opts._tx && opts._tx.stopTransition )\r\n opts._tx.stopTransition( opts );\r\n },\r\n\r\n // advance slide forward or back\r\n advanceSlide: function( val ) {\r\n var opts = this.opts();\r\n clearTimeout(opts.timeoutId);\r\n opts.timeoutId = 0;\r\n opts.nextSlide = opts.currSlide + val;\r\n \r\n if (opts.nextSlide < 0)\r\n opts.nextSlide = opts.slides.length - 1;\r\n else if (opts.nextSlide >= opts.slides.length)\r\n opts.nextSlide = 0;\r\n\r\n opts.API.prepareTx( true, val >= 0 );\r\n return false;\r\n },\r\n\r\n buildSlideOpts: function( slide ) {\r\n var opts = this.opts();\r\n var val, shortName;\r\n var slideOpts = slide.data() || {};\r\n for (var p in slideOpts) {\r\n // allow props to be accessed sans 'cycle' prefix and log the overrides\r\n if (slideOpts.hasOwnProperty(p) && /^cycle[A-Z]+/.test(p) ) {\r\n val = slideOpts[p];\r\n shortName = p.match(/^cycle(.*)/)[1].replace(/^[A-Z]/, lowerCase);\r\n opts.API.log('['+(opts.slideCount-1)+']', shortName+':', val, '('+typeof val +')');\r\n slideOpts[shortName] = val;\r\n }\r\n }\r\n\r\n slideOpts = $.extend( {}, $.fn.cycle.defaults, opts, slideOpts );\r\n slideOpts.slideNum = opts.slideCount;\r\n\r\n try {\r\n // these props should always be read from the master state object\r\n delete slideOpts.API;\r\n delete slideOpts.slideCount;\r\n delete slideOpts.currSlide;\r\n delete slideOpts.nextSlide;\r\n delete slideOpts.slides;\r\n } catch(e) {\r\n // no op\r\n }\r\n return slideOpts;\r\n },\r\n\r\n getSlideOpts: function( index ) {\r\n var opts = this.opts();\r\n if ( index === undefined )\r\n index = opts.currSlide;\r\n\r\n var slide = opts.slides[index];\r\n var slideOpts = $(slide).data('cycle.opts');\r\n return $.extend( {}, opts, slideOpts );\r\n },\r\n \r\n initSlide: function( slideOpts, slide, suggestedZindex ) {\r\n var opts = this.opts();\r\n slide.css( slideOpts.slideCss || {} );\r\n if ( suggestedZindex > 0 )\r\n slide.css( 'zIndex', suggestedZindex );\r\n\r\n // ensure that speed settings are sane\r\n if ( isNaN( slideOpts.speed ) )\r\n slideOpts.speed = $.fx.speeds[slideOpts.speed] || $.fx.speeds._default;\r\n if ( !slideOpts.sync )\r\n slideOpts.speed = slideOpts.speed / 2;\r\n\r\n slide.addClass( opts.slideClass );\r\n },\r\n\r\n updateView: function( isAfter, isDuring, forceEvent ) {\r\n var opts = this.opts();\r\n if ( !opts._initialized )\r\n return;\r\n var slideOpts = opts.API.getSlideOpts();\r\n var currSlide = opts.slides[ opts.currSlide ];\r\n\r\n if ( ! isAfter && isDuring !== true ) {\r\n opts.API.trigger('cycle-update-view-before', [ opts, slideOpts, currSlide ]);\r\n if ( opts.updateView < 0 )\r\n return;\r\n }\r\n\r\n if ( opts.slideActiveClass ) {\r\n opts.slides.removeClass( opts.slideActiveClass )\r\n .eq( opts.currSlide ).addClass( opts.slideActiveClass );\r\n }\r\n\r\n if ( isAfter && opts.hideNonActive )\r\n opts.slides.filter( ':not(.' + opts.slideActiveClass + ')' ).css('visibility', 'hidden');\r\n\r\n if ( opts.updateView === 0 ) {\r\n setTimeout(function() {\r\n opts.API.trigger('cycle-update-view', [ opts, slideOpts, currSlide, isAfter ]);\r\n }, slideOpts.speed / (opts.sync ? 2 : 1) );\r\n }\r\n\r\n if ( opts.updateView !== 0 )\r\n opts.API.trigger('cycle-update-view', [ opts, slideOpts, currSlide, isAfter ]);\r\n \r\n if ( isAfter )\r\n opts.API.trigger('cycle-update-view-after', [ opts, slideOpts, currSlide ]);\r\n },\r\n\r\n getComponent: function( name ) {\r\n var opts = this.opts();\r\n var selector = opts[name];\r\n if (typeof selector === 'string') {\r\n // if selector is a child, sibling combinator, adjancent selector then use find, otherwise query full dom\r\n return (/^\\s*[\\>|\\+|~]/).test( selector ) ? opts.container.find( selector ) : $( selector );\r\n }\r\n if (selector.jquery)\r\n return selector;\r\n \r\n return $(selector);\r\n },\r\n\r\n stackSlides: function( curr, next, fwd ) {\r\n var opts = this.opts();\r\n if ( !curr ) {\r\n curr = opts.slides[opts.currSlide];\r\n next = opts.slides[opts.nextSlide];\r\n fwd = !opts.reverse;\r\n }\r\n\r\n // reset the zIndex for the common case:\r\n // curr slide on top, next slide beneath, and the rest in order to be shown\r\n $(curr).css('zIndex', opts.maxZ);\r\n\r\n var i;\r\n var z = opts.maxZ - 2;\r\n var len = opts.slideCount;\r\n if (fwd) {\r\n for ( i = opts.currSlide + 1; i < len; i++ )\r\n $( opts.slides[i] ).css( 'zIndex', z-- );\r\n for ( i = 0; i < opts.currSlide; i++ )\r\n $( opts.slides[i] ).css( 'zIndex', z-- );\r\n }\r\n else {\r\n for ( i = opts.currSlide - 1; i >= 0; i-- )\r\n $( opts.slides[i] ).css( 'zIndex', z-- );\r\n for ( i = len - 1; i > opts.currSlide; i-- )\r\n $( opts.slides[i] ).css( 'zIndex', z-- );\r\n }\r\n\r\n $(next).css('zIndex', opts.maxZ - 1);\r\n },\r\n\r\n getSlideIndex: function( el ) {\r\n return this.opts().slides.index( el );\r\n }\r\n\r\n}; // API\r\n\r\n// default logger\r\n$.fn.cycle.log = function log() {\r\n /*global console:true */\r\n if (window.console && console.log)\r\n console.log('[cycle2] ' + Array.prototype.join.call(arguments, ' ') );\r\n};\r\n\r\n$.fn.cycle.version = function() { return 'Cycle2: ' + version; };\r\n\r\n// helper functions\r\n\r\nfunction lowerCase(s) {\r\n return (s || '').toLowerCase();\r\n}\r\n\r\n// expose transition object\r\n$.fn.cycle.transitions = {\r\n custom: {\r\n },\r\n none: {\r\n before: function( opts, curr, next, fwd ) {\r\n opts.API.stackSlides( next, curr, fwd );\r\n opts.cssBefore = { opacity: 1, visibility: 'visible', display: 'block' };\r\n }\r\n },\r\n fade: {\r\n before: function( opts, curr, next, fwd ) {\r\n var css = opts.API.getSlideOpts( opts.nextSlide ).slideCss || {};\r\n opts.API.stackSlides( curr, next, fwd );\r\n opts.cssBefore = $.extend(css, { opacity: 0, visibility: 'visible', display: 'block' });\r\n opts.animIn = { opacity: 1 };\r\n opts.animOut = { opacity: 0 };\r\n }\r\n },\r\n fadeout: {\r\n before: function( opts , curr, next, fwd ) {\r\n var css = opts.API.getSlideOpts( opts.nextSlide ).slideCss || {};\r\n opts.API.stackSlides( curr, next, fwd );\r\n opts.cssBefore = $.extend(css, { opacity: 1, visibility: 'visible', display: 'block' });\r\n opts.animOut = { opacity: 0 };\r\n }\r\n },\r\n scrollHorz: {\r\n before: function( opts, curr, next, fwd ) {\r\n opts.API.stackSlides( curr, next, fwd );\r\n var w = opts.container.css('overflow','hidden').width();\r\n opts.cssBefore = { left: fwd ? w : - w, top: 0, opacity: 1, visibility: 'visible', display: 'block' };\r\n opts.cssAfter = { zIndex: opts._maxZ - 2, left: 0 };\r\n opts.animIn = { left: 0 };\r\n opts.animOut = { left: fwd ? -w : w };\r\n }\r\n }\r\n};\r\n\r\n// @see: http://jquery.malsup.com/cycle2/api\r\n$.fn.cycle.defaults = {\r\n allowWrap: true,\r\n autoSelector: '.cycle-slideshow[data-cycle-auto-init!=false]',\r\n delay: 0,\r\n easing: null,\r\n fx: 'fade',\r\n hideNonActive: true,\r\n loop: 0,\r\n manualFx: undefined,\r\n manualSpeed: undefined,\r\n manualTrump: true,\r\n maxZ: 100,\r\n pauseOnHover: false,\r\n reverse: false,\r\n slideActiveClass: 'cycle-slide-active',\r\n slideClass: 'cycle-slide',\r\n slideCss: { position: 'absolute', top: 0, left: 0 },\r\n slides: '> img',\r\n speed: 500,\r\n startingSlide: 0,\r\n sync: true,\r\n timeout: 4000,\r\n updateView: 0\r\n};\r\n\r\n// automatically find and run slideshows\r\n$(document).ready(function() {\r\n $( $.fn.cycle.defaults.autoSelector ).cycle();\r\n});\r\n\r\n})(jQuery);\r\n\r\n/*! Cycle2 autoheight plugin; Copyright (c) M.Alsup, 2012; version: 20130913 */\r\n(function($) {\r\n\"use strict\";\r\n\r\n$.extend($.fn.cycle.defaults, {\r\n autoHeight: 0, // setting this option to false disables autoHeight logic\r\n autoHeightSpeed: 250,\r\n autoHeightEasing: null\r\n}); \r\n\r\n$(document).on( 'cycle-initialized', function( e, opts ) {\r\n var autoHeight = opts.autoHeight;\r\n var t = $.type( autoHeight );\r\n var resizeThrottle = null;\r\n var ratio;\r\n\r\n if ( t !== 'string' && t !== 'number' )\r\n return;\r\n\r\n // bind events\r\n opts.container.on( 'cycle-slide-added cycle-slide-removed', initAutoHeight );\r\n opts.container.on( 'cycle-destroyed', onDestroy );\r\n\r\n if ( autoHeight == 'container' ) {\r\n opts.container.on( 'cycle-before', onBefore );\r\n }\r\n else if ( t === 'string' && /\\d+\\:\\d+/.test( autoHeight ) ) { \r\n // use ratio\r\n ratio = autoHeight.match(/(\\d+)\\:(\\d+)/);\r\n ratio = ratio[1] / ratio[2];\r\n opts._autoHeightRatio = ratio;\r\n }\r\n\r\n // if autoHeight is a number then we don't need to recalculate the sentinel\r\n // index on resize\r\n if ( t !== 'number' ) {\r\n // bind unique resize handler per slideshow (so it can be 'off-ed' in onDestroy)\r\n opts._autoHeightOnResize = function () {\r\n clearTimeout( resizeThrottle );\r\n resizeThrottle = setTimeout( onResize, 50 );\r\n };\r\n\r\n $(window).on( 'resize orientationchange', opts._autoHeightOnResize );\r\n }\r\n\r\n setTimeout( onResize, 30 );\r\n\r\n function onResize() {\r\n initAutoHeight( e, opts );\r\n }\r\n});\r\n\r\nfunction initAutoHeight( e, opts ) {\r\n var clone, height, sentinelIndex;\r\n var autoHeight = opts.autoHeight;\r\n\r\n if ( autoHeight == 'container' ) {\r\n height = $( opts.slides[ opts.currSlide ] ).outerHeight();\r\n opts.container.height( height );\r\n }\r\n else if ( opts._autoHeightRatio ) { \r\n opts.container.height( opts.container.width() / opts._autoHeightRatio );\r\n }\r\n else if ( autoHeight === 'calc' || ( $.type( autoHeight ) == 'number' && autoHeight >= 0 ) ) {\r\n if ( autoHeight === 'calc' )\r\n sentinelIndex = calcSentinelIndex( e, opts );\r\n else if ( autoHeight >= opts.slides.length )\r\n sentinelIndex = 0;\r\n else \r\n sentinelIndex = autoHeight;\r\n\r\n // only recreate sentinel if index is different\r\n if ( sentinelIndex == opts._sentinelIndex )\r\n return;\r\n\r\n opts._sentinelIndex = sentinelIndex;\r\n if ( opts._sentinel )\r\n opts._sentinel.remove();\r\n\r\n // clone existing slide as sentinel\r\n clone = $( opts.slides[ sentinelIndex ].cloneNode(true) );\r\n \r\n // #50; remove special attributes from cloned content\r\n clone.removeAttr( 'id name rel' ).find( '[id],[name],[rel]' ).removeAttr( 'id name rel' );\r\n\r\n clone.css({\r\n position: 'static',\r\n visibility: 'hidden',\r\n display: 'block'\r\n }).prependTo( opts.container ).addClass('cycle-sentinel cycle-slide').removeClass('cycle-slide-active');\r\n clone.find( '*' ).css( 'visibility', 'hidden' );\r\n\r\n opts._sentinel = clone;\r\n }\r\n} \r\n\r\nfunction calcSentinelIndex( e, opts ) {\r\n var index = 0, max = -1;\r\n\r\n // calculate tallest slide index\r\n opts.slides.each(function(i) {\r\n var h = $(this).height();\r\n if ( h > max ) {\r\n max = h;\r\n index = i;\r\n }\r\n });\r\n return index;\r\n}\r\n\r\nfunction onBefore( e, opts, outgoing, incoming, forward ) {\r\n var h = $(incoming).outerHeight();\r\n opts.container.animate( { height: h }, opts.autoHeightSpeed, opts.autoHeightEasing );\r\n}\r\n\r\nfunction onDestroy( e, opts ) {\r\n if ( opts._autoHeightOnResize ) {\r\n $(window).off( 'resize orientationchange', opts._autoHeightOnResize );\r\n opts._autoHeightOnResize = null;\r\n }\r\n opts.container.off( 'cycle-slide-added cycle-slide-removed', initAutoHeight );\r\n opts.container.off( 'cycle-destroyed', onDestroy );\r\n opts.container.off( 'cycle-before', onBefore );\r\n\r\n if ( opts._sentinel ) {\r\n opts._sentinel.remove();\r\n opts._sentinel = null;\r\n }\r\n}\r\n\r\n})(jQuery);\r\n\r\n/*! caption plugin for Cycle2; version: 20130306 */\r\n(function($) {\r\n\"use strict\";\r\n\r\n$.extend($.fn.cycle.defaults, {\r\n caption: '> .cycle-caption',\r\n captionTemplate: '{{slideNum}} / {{slideCount}}',\r\n overlay: '> .cycle-overlay',\r\n overlayTemplate: '
{{title}}
{{desc}}
',\r\n captionModule: 'caption'\r\n}); \r\n\r\n$(document).on( 'cycle-update-view', function( e, opts, slideOpts, currSlide ) {\r\n if ( opts.captionModule !== 'caption' )\r\n return;\r\n var el;\r\n $.each(['caption','overlay'], function() {\r\n var name = this; \r\n var template = slideOpts[name+'Template'];\r\n var el = opts.API.getComponent( name );\r\n if( el.length && template ) {\r\n el.html( opts.API.tmpl( template, slideOpts, opts, currSlide ) );\r\n el.show();\r\n }\r\n else {\r\n el.hide();\r\n }\r\n });\r\n});\r\n\r\n$(document).on( 'cycle-destroyed', function( e, opts ) {\r\n var el;\r\n $.each(['caption','overlay'], function() {\r\n var name = this, template = opts[name+'Template'];\r\n if ( opts[name] && template ) {\r\n el = opts.API.getComponent( 'caption' );\r\n el.empty();\r\n }\r\n });\r\n});\r\n\r\n})(jQuery);\r\n\r\n/*! command plugin for Cycle2; version: 20140415 */\r\n(function($) {\r\n\"use strict\";\r\n\r\nvar c2 = $.fn.cycle;\r\n\r\n$.fn.cycle = function( options ) {\r\n var cmd, cmdFn, opts;\r\n var args = $.makeArray( arguments );\r\n\r\n if ( $.type( options ) == 'number' ) {\r\n return this.cycle( 'goto', options );\r\n }\r\n\r\n if ( $.type( options ) == 'string' ) {\r\n return this.each(function() {\r\n var cmdArgs;\r\n cmd = options;\r\n opts = $(this).data('cycle.opts');\r\n\r\n if ( opts === undefined ) {\r\n c2.log('slideshow must be initialized before sending commands; \"' + cmd + '\" ignored');\r\n return;\r\n }\r\n else {\r\n cmd = cmd == 'goto' ? 'jump' : cmd; // issue #3; change 'goto' to 'jump' internally\r\n cmdFn = opts.API[ cmd ];\r\n if ( $.isFunction( cmdFn )) {\r\n cmdArgs = $.makeArray( args );\r\n cmdArgs.shift();\r\n return cmdFn.apply( opts.API, cmdArgs );\r\n }\r\n else {\r\n c2.log( 'unknown command: ', cmd );\r\n }\r\n }\r\n });\r\n }\r\n else {\r\n return c2.apply( this, arguments );\r\n }\r\n};\r\n\r\n// copy props\r\n$.extend( $.fn.cycle, c2 );\r\n\r\n$.extend( c2.API, {\r\n next: function() {\r\n var opts = this.opts();\r\n if ( opts.busy && ! opts.manualTrump )\r\n return;\r\n\r\n var count = opts.reverse ? -1 : 1;\r\n if ( opts.allowWrap === false && ( opts.currSlide + count ) >= opts.slideCount )\r\n return;\r\n\r\n opts.API.advanceSlide( count );\r\n opts.API.trigger('cycle-next', [ opts ]).log('cycle-next');\r\n },\r\n\r\n prev: function() {\r\n var opts = this.opts();\r\n if ( opts.busy && ! opts.manualTrump )\r\n return;\r\n var count = opts.reverse ? 1 : -1;\r\n if ( opts.allowWrap === false && ( opts.currSlide + count ) < 0 )\r\n return;\r\n\r\n opts.API.advanceSlide( count );\r\n opts.API.trigger('cycle-prev', [ opts ]).log('cycle-prev');\r\n },\r\n\r\n destroy: function() {\r\n this.stop(); //#204\r\n\r\n var opts = this.opts();\r\n var clean = $.isFunction( $._data ) ? $._data : $.noop; // hack for #184 and #201\r\n clearTimeout(opts.timeoutId);\r\n opts.timeoutId = 0;\r\n opts.API.stop();\r\n opts.API.trigger( 'cycle-destroyed', [ opts ] ).log('cycle-destroyed');\r\n opts.container.removeData();\r\n clean( opts.container[0], 'parsedAttrs', false );\r\n\r\n // #75; remove inline styles\r\n if ( ! opts.retainStylesOnDestroy ) {\r\n opts.container.removeAttr( 'style' );\r\n opts.slides.removeAttr( 'style' );\r\n opts.slides.removeClass( opts.slideActiveClass );\r\n }\r\n opts.slides.each(function() {\r\n var slide = $(this);\r\n slide.removeData();\r\n slide.removeClass( opts.slideClass );\r\n clean( this, 'parsedAttrs', false );\r\n });\r\n },\r\n\r\n jump: function( index, fx ) {\r\n // go to the requested slide\r\n var fwd;\r\n var opts = this.opts();\r\n if ( opts.busy && ! opts.manualTrump )\r\n return;\r\n var num = parseInt( index, 10 );\r\n if (isNaN(num) || num < 0 || num >= opts.slides.length) {\r\n opts.API.log('goto: invalid slide index: ' + num);\r\n return;\r\n }\r\n if (num == opts.currSlide) {\r\n opts.API.log('goto: skipping, already on slide', num);\r\n return;\r\n }\r\n opts.nextSlide = num;\r\n clearTimeout(opts.timeoutId);\r\n opts.timeoutId = 0;\r\n opts.API.log('goto: ', num, ' (zero-index)');\r\n fwd = opts.currSlide < opts.nextSlide;\r\n opts._tempFx = fx;\r\n opts.API.prepareTx( true, fwd );\r\n },\r\n\r\n stop: function() {\r\n var opts = this.opts();\r\n var pauseObj = opts.container;\r\n clearTimeout(opts.timeoutId);\r\n opts.timeoutId = 0;\r\n opts.API.stopTransition();\r\n if ( opts.pauseOnHover ) {\r\n if ( opts.pauseOnHover !== true )\r\n pauseObj = $( opts.pauseOnHover );\r\n pauseObj.off('mouseenter mouseleave');\r\n }\r\n opts.API.trigger('cycle-stopped', [ opts ]).log('cycle-stopped');\r\n },\r\n\r\n reinit: function() {\r\n var opts = this.opts();\r\n opts.API.destroy();\r\n opts.container.cycle();\r\n },\r\n\r\n remove: function( index ) {\r\n var opts = this.opts();\r\n var slide, slideToRemove, slides = [], slideNum = 1;\r\n for ( var i=0; i < opts.slides.length; i++ ) {\r\n slide = opts.slides[i];\r\n if ( i == index ) {\r\n slideToRemove = slide;\r\n }\r\n else {\r\n slides.push( slide );\r\n $( slide ).data('cycle.opts').slideNum = slideNum;\r\n slideNum++;\r\n }\r\n }\r\n if ( slideToRemove ) {\r\n opts.slides = $( slides );\r\n opts.slideCount--;\r\n $( slideToRemove ).remove();\r\n if (index == opts.currSlide)\r\n opts.API.advanceSlide( 1 );\r\n else if ( index < opts.currSlide )\r\n opts.currSlide--;\r\n else\r\n opts.currSlide++;\r\n\r\n opts.API.trigger('cycle-slide-removed', [ opts, index, slideToRemove ]).log('cycle-slide-removed');\r\n opts.API.updateView();\r\n }\r\n }\r\n\r\n});\r\n\r\n// listen for clicks on elements with data-cycle-cmd attribute\r\n$(document).on('click.cycle', '[data-cycle-cmd]', function(e) {\r\n // issue cycle command\r\n e.preventDefault();\r\n var el = $(this);\r\n var command = el.data('cycle-cmd');\r\n var context = el.data('cycle-context') || '.cycle-slideshow';\r\n $(context).cycle(command, el.data('cycle-arg'));\r\n});\r\n\r\n\r\n})(jQuery);\r\n\r\n/*! hash plugin for Cycle2; version: 20130905 */\r\n(function($) {\r\n\"use strict\";\r\n\r\n$(document).on( 'cycle-pre-initialize', function( e, opts ) {\r\n onHashChange( opts, true );\r\n\r\n opts._onHashChange = function() {\r\n onHashChange( opts, false );\r\n };\r\n\r\n $( window ).on( 'hashchange', opts._onHashChange);\r\n});\r\n\r\n$(document).on( 'cycle-update-view', function( e, opts, slideOpts ) {\r\n if ( slideOpts.hash && ( '#' + slideOpts.hash ) != window.location.hash ) {\r\n opts._hashFence = true;\r\n window.location.hash = slideOpts.hash;\r\n }\r\n});\r\n\r\n$(document).on( 'cycle-destroyed', function( e, opts) {\r\n if ( opts._onHashChange ) {\r\n $( window ).off( 'hashchange', opts._onHashChange );\r\n }\r\n});\r\n\r\nfunction onHashChange( opts, setStartingSlide ) {\r\n var hash;\r\n if ( opts._hashFence ) {\r\n opts._hashFence = false;\r\n return;\r\n }\r\n \r\n hash = window.location.hash.substring(1);\r\n\r\n opts.slides.each(function(i) {\r\n if ( $(this).data( 'cycle-hash' ) == hash ) {\r\n if ( setStartingSlide === true ) {\r\n opts.startingSlide = i;\r\n }\r\n else {\r\n var fwd = opts.currSlide < i;\r\n opts.nextSlide = i;\r\n opts.API.prepareTx( true, fwd );\r\n }\r\n return false;\r\n }\r\n });\r\n}\r\n\r\n})(jQuery);\r\n\r\n/*! loader plugin for Cycle2; version: 20131121 */\r\n(function($) {\r\n\"use strict\";\r\n\r\n$.extend($.fn.cycle.defaults, {\r\n loader: false\r\n});\r\n\r\n$(document).on( 'cycle-bootstrap', function( e, opts ) {\r\n var addFn;\r\n\r\n if ( !opts.loader )\r\n return;\r\n\r\n // override API.add for this slideshow\r\n addFn = opts.API.add;\r\n opts.API.add = add;\r\n\r\n function add( slides, prepend ) {\r\n var slideArr = [];\r\n if ( $.type( slides ) == 'string' )\r\n slides = $.trim( slides );\r\n else if ( $.type( slides) === 'array' ) {\r\n for (var i=0; i < slides.length; i++ )\r\n slides[i] = $(slides[i])[0];\r\n }\r\n\r\n slides = $( slides );\r\n var slideCount = slides.length;\r\n\r\n if ( ! slideCount )\r\n return;\r\n\r\n slides.css('visibility','hidden').appendTo('body').each(function(i) { // appendTo fixes #56\r\n var count = 0;\r\n var slide = $(this);\r\n var images = slide.is('img') ? slide : slide.find('img');\r\n slide.data('index', i);\r\n // allow some images to be marked as unimportant (and filter out images w/o src value)\r\n images = images.filter(':not(.cycle-loader-ignore)').filter(':not([src=\"\"])');\r\n if ( ! images.length ) {\r\n --slideCount;\r\n slideArr.push( slide );\r\n return;\r\n }\r\n\r\n count = images.length;\r\n images.each(function() {\r\n // add images that are already loaded\r\n if ( this.complete ) {\r\n imageLoaded();\r\n }\r\n else {\r\n $(this).load(function() {\r\n imageLoaded();\r\n }).on(\"error\", function() {\r\n if ( --count === 0 ) {\r\n // ignore this slide\r\n opts.API.log('slide skipped; img not loaded:', this.src);\r\n if ( --slideCount === 0 && opts.loader == 'wait') {\r\n addFn.apply( opts.API, [ slideArr, prepend ] );\r\n }\r\n }\r\n });\r\n }\r\n });\r\n\r\n function imageLoaded() {\r\n if ( --count === 0 ) {\r\n --slideCount;\r\n addSlide( slide );\r\n }\r\n }\r\n });\r\n\r\n if ( slideCount )\r\n opts.container.addClass('cycle-loading');\r\n \r\n\r\n function addSlide( slide ) {\r\n var curr;\r\n if ( opts.loader == 'wait' ) {\r\n slideArr.push( slide );\r\n if ( slideCount === 0 ) {\r\n // #59; sort slides into original markup order\r\n slideArr.sort( sorter );\r\n addFn.apply( opts.API, [ slideArr, prepend ] );\r\n opts.container.removeClass('cycle-loading');\r\n }\r\n }\r\n else {\r\n curr = $(opts.slides[opts.currSlide]);\r\n addFn.apply( opts.API, [ slide, prepend ] );\r\n curr.show();\r\n opts.container.removeClass('cycle-loading');\r\n }\r\n }\r\n\r\n function sorter(a, b) {\r\n return a.data('index') - b.data('index');\r\n }\r\n }\r\n});\r\n\r\n})(jQuery);\r\n\r\n/*! pager plugin for Cycle2; version: 20140415 */\r\n(function($) {\r\n\"use strict\";\r\n\r\n$.extend($.fn.cycle.defaults, {\r\n pager: '> .cycle-pager',\r\n pagerActiveClass: 'cycle-pager-active',\r\n pagerEvent: 'click.cycle',\r\n pagerEventBubble: undefined,\r\n pagerTemplate: ''\r\n});\r\n\r\n$(document).on( 'cycle-bootstrap', function( e, opts, API ) {\r\n // add method to API\r\n API.buildPagerLink = buildPagerLink;\r\n});\r\n\r\n$(document).on( 'cycle-slide-added', function( e, opts, slideOpts, slideAdded ) {\r\n if ( opts.pager ) {\r\n opts.API.buildPagerLink ( opts, slideOpts, slideAdded );\r\n opts.API.page = page;\r\n }\r\n});\r\n\r\n$(document).on( 'cycle-slide-removed', function( e, opts, index, slideRemoved ) {\r\n if ( opts.pager ) {\r\n var pagers = opts.API.getComponent( 'pager' );\r\n pagers.each(function() {\r\n var pager = $(this);\r\n $( pager.children()[index] ).remove();\r\n });\r\n }\r\n});\r\n\r\n$(document).on( 'cycle-update-view', function( e, opts, slideOpts ) {\r\n var pagers;\r\n\r\n if ( opts.pager ) {\r\n pagers = opts.API.getComponent( 'pager' );\r\n pagers.each(function() {\r\n $(this).children().removeClass( opts.pagerActiveClass )\r\n .eq( opts.currSlide ).addClass( opts.pagerActiveClass );\r\n });\r\n }\r\n});\r\n\r\n$(document).on( 'cycle-destroyed', function( e, opts ) {\r\n var pager = opts.API.getComponent( 'pager' );\r\n\r\n if ( pager ) {\r\n pager.children().off( opts.pagerEvent ); // #202\r\n if ( opts.pagerTemplate )\r\n pager.empty();\r\n }\r\n});\r\n\r\nfunction buildPagerLink( opts, slideOpts, slide ) {\r\n var pagerLink;\r\n var pagers = opts.API.getComponent( 'pager' );\r\n pagers.each(function() {\r\n var pager = $(this);\r\n if ( slideOpts.pagerTemplate ) {\r\n var markup = opts.API.tmpl( slideOpts.pagerTemplate, slideOpts, opts, slide[0] );\r\n pagerLink = $( markup ).appendTo( pager );\r\n }\r\n else {\r\n pagerLink = pager.children().eq( opts.slideCount - 1 );\r\n }\r\n pagerLink.on( opts.pagerEvent, function(e) {\r\n if ( ! opts.pagerEventBubble )\r\n e.preventDefault();\r\n opts.API.page( pager, e.currentTarget);\r\n });\r\n });\r\n}\r\n\r\nfunction page( pager, target ) {\r\n /*jshint validthis:true */\r\n var opts = this.opts();\r\n if ( opts.busy && ! opts.manualTrump )\r\n return;\r\n\r\n var index = pager.children().index( target );\r\n var nextSlide = index;\r\n var fwd = opts.currSlide < nextSlide;\r\n if (opts.currSlide == nextSlide) {\r\n return; // no op, clicked pager for the currently displayed slide\r\n }\r\n opts.nextSlide = nextSlide;\r\n opts._tempFx = opts.pagerFx;\r\n opts.API.prepareTx( true, fwd );\r\n opts.API.trigger('cycle-pager-activated', [opts, pager, target ]);\r\n}\r\n\r\n})(jQuery);\r\n\r\n/*! prevnext plugin for Cycle2; version: 20140408 */\r\n(function($) {\r\n\"use strict\";\r\n\r\n$.extend($.fn.cycle.defaults, {\r\n next: '> .cycle-next',\r\n nextEvent: 'click.cycle',\r\n disabledClass: 'disabled',\r\n prev: '> .cycle-prev',\r\n prevEvent: 'click.cycle',\r\n swipe: false\r\n});\r\n\r\n$(document).on( 'cycle-initialized', function( e, opts ) {\r\n opts.API.getComponent( 'next' ).on( opts.nextEvent, function(e) {\r\n e.preventDefault();\r\n opts.API.next();\r\n });\r\n\r\n opts.API.getComponent( 'prev' ).on( opts.prevEvent, function(e) {\r\n e.preventDefault();\r\n opts.API.prev();\r\n });\r\n\r\n if ( opts.swipe ) {\r\n var nextEvent = opts.swipeVert ? 'swipeUp.cycle' : 'swipeLeft.cycle swipeleft.cycle';\r\n var prevEvent = opts.swipeVert ? 'swipeDown.cycle' : 'swipeRight.cycle swiperight.cycle';\r\n opts.container.on( nextEvent, function(e) {\r\n opts._tempFx = opts.swipeFx;\r\n opts.API.next();\r\n });\r\n opts.container.on( prevEvent, function() {\r\n opts._tempFx = opts.swipeFx;\r\n opts.API.prev();\r\n });\r\n }\r\n});\r\n\r\n$(document).on( 'cycle-update-view', function( e, opts, slideOpts, currSlide ) {\r\n if ( opts.allowWrap )\r\n return;\r\n\r\n var cls = opts.disabledClass;\r\n var next = opts.API.getComponent( 'next' );\r\n var prev = opts.API.getComponent( 'prev' );\r\n var prevBoundry = opts._prevBoundry || 0;\r\n var nextBoundry = (opts._nextBoundry !== undefined)?opts._nextBoundry:opts.slideCount - 1;\r\n\r\n if ( opts.currSlide == nextBoundry )\r\n next.addClass( cls ).prop( 'disabled', true );\r\n else\r\n next.removeClass( cls ).prop( 'disabled', false );\r\n\r\n if ( opts.currSlide === prevBoundry )\r\n prev.addClass( cls ).prop( 'disabled', true );\r\n else\r\n prev.removeClass( cls ).prop( 'disabled', false );\r\n});\r\n\r\n\r\n$(document).on( 'cycle-destroyed', function( e, opts ) {\r\n opts.API.getComponent( 'prev' ).off( opts.nextEvent );\r\n opts.API.getComponent( 'next' ).off( opts.prevEvent );\r\n opts.container.off( 'swipeleft.cycle swiperight.cycle swipeLeft.cycle swipeRight.cycle swipeUp.cycle swipeDown.cycle' );\r\n});\r\n\r\n})(jQuery);\r\n\r\n/*! progressive loader plugin for Cycle2; version: 20130315 */\r\n(function($) {\r\n\"use strict\";\r\n\r\n$.extend($.fn.cycle.defaults, {\r\n progressive: false\r\n});\r\n\r\n$(document).on( 'cycle-pre-initialize', function( e, opts ) {\r\n if ( !opts.progressive )\r\n return;\r\n\r\n var API = opts.API;\r\n var nextFn = API.next;\r\n var prevFn = API.prev;\r\n var prepareTxFn = API.prepareTx;\r\n var type = $.type( opts.progressive );\r\n var slides, scriptEl;\r\n\r\n if ( type == 'array' ) {\r\n slides = opts.progressive;\r\n }\r\n else if ($.isFunction( opts.progressive ) ) {\r\n slides = opts.progressive( opts );\r\n }\r\n else if ( type == 'string' ) {\r\n scriptEl = $( opts.progressive );\r\n slides = $.trim( scriptEl.html() );\r\n if ( !slides )\r\n return;\r\n // is it json array?\r\n if ( /^(\\[)/.test( slides ) ) {\r\n try {\r\n slides = $.parseJSON( slides );\r\n }\r\n catch(err) {\r\n API.log( 'error parsing progressive slides', err );\r\n return;\r\n }\r\n }\r\n else {\r\n // plain text, split on delimeter\r\n slides = slides.split( new RegExp( scriptEl.data('cycle-split') || '\\n') );\r\n \r\n // #95; look for empty slide\r\n if ( ! slides[ slides.length - 1 ] )\r\n slides.pop();\r\n }\r\n }\r\n\r\n\r\n\r\n if ( prepareTxFn ) {\r\n API.prepareTx = function( manual, fwd ) {\r\n var index, slide;\r\n\r\n if ( manual || slides.length === 0 ) {\r\n prepareTxFn.apply( opts.API, [ manual, fwd ] );\r\n return;\r\n }\r\n\r\n if ( fwd && opts.currSlide == ( opts.slideCount-1) ) {\r\n slide = slides[ 0 ];\r\n slides = slides.slice( 1 );\r\n opts.container.one('cycle-slide-added', function(e, opts ) {\r\n setTimeout(function() {\r\n opts.API.advanceSlide( 1 );\r\n },50);\r\n });\r\n opts.API.add( slide );\r\n }\r\n else if ( !fwd && opts.currSlide === 0 ) {\r\n index = slides.length-1;\r\n slide = slides[ index ];\r\n slides = slides.slice( 0, index );\r\n opts.container.one('cycle-slide-added', function(e, opts ) {\r\n setTimeout(function() {\r\n opts.currSlide = 1;\r\n opts.API.advanceSlide( -1 );\r\n },50);\r\n });\r\n opts.API.add( slide, true );\r\n }\r\n else {\r\n prepareTxFn.apply( opts.API, [ manual, fwd ] );\r\n }\r\n };\r\n }\r\n\r\n if ( nextFn ) {\r\n API.next = function() {\r\n var opts = this.opts();\r\n if ( slides.length && opts.currSlide == ( opts.slideCount - 1 ) ) {\r\n var slide = slides[ 0 ];\r\n slides = slides.slice( 1 );\r\n opts.container.one('cycle-slide-added', function(e, opts ) {\r\n nextFn.apply( opts.API );\r\n opts.container.removeClass('cycle-loading');\r\n });\r\n opts.container.addClass('cycle-loading');\r\n opts.API.add( slide );\r\n }\r\n else {\r\n nextFn.apply( opts.API ); \r\n }\r\n };\r\n }\r\n \r\n if ( prevFn ) {\r\n API.prev = function() {\r\n var opts = this.opts();\r\n if ( slides.length && opts.currSlide === 0 ) {\r\n var index = slides.length-1;\r\n var slide = slides[ index ];\r\n slides = slides.slice( 0, index );\r\n opts.container.one('cycle-slide-added', function(e, opts ) {\r\n opts.currSlide = 1;\r\n opts.API.advanceSlide( -1 );\r\n opts.container.removeClass('cycle-loading');\r\n });\r\n opts.container.addClass('cycle-loading');\r\n opts.API.add( slide, true );\r\n }\r\n else {\r\n prevFn.apply( opts.API );\r\n }\r\n };\r\n }\r\n});\r\n\r\n})(jQuery);\r\n\r\n/*! tmpl plugin for Cycle2; version: 20121227 */\r\n(function($) {\r\n\"use strict\";\r\n\r\n$.extend($.fn.cycle.defaults, {\r\n tmplRegex: '{{((.)?.*?)}}'\r\n});\r\n\r\n$.extend($.fn.cycle.API, {\r\n tmpl: function( str, opts /*, ... */) {\r\n var regex = new RegExp( opts.tmplRegex || $.fn.cycle.defaults.tmplRegex, 'g' );\r\n var args = $.makeArray( arguments );\r\n args.shift();\r\n return str.replace(regex, function(_, str) {\r\n var i, j, obj, prop, names = str.split('.');\r\n for (i=0; i < args.length; i++) {\r\n obj = args[i];\r\n if ( ! obj )\r\n continue;\r\n if (names.length > 1) {\r\n prop = obj;\r\n for (j=0; j < names.length; j++) {\r\n obj = prop;\r\n prop = prop[ names[j] ] || str;\r\n }\r\n } else {\r\n prop = obj[str];\r\n }\r\n\r\n if ($.isFunction(prop))\r\n return prop.apply(obj, args);\r\n if (prop !== undefined && prop !== null && prop != str)\r\n return prop;\r\n }\r\n return str;\r\n });\r\n }\r\n}); \r\n\r\n})(jQuery);\r\n","/*! swipe plugin for Cycle2; version: 20121120 */\r\n(function($) {\r\n\"use strict\";\r\n\r\n// this script adds support for touch events. the logic is lifted from jQuery Mobile.\r\n// if you have jQuery Mobile installed, you do NOT need this script\r\n\r\nvar supportTouch = 'ontouchend' in document;\r\n\r\n$.event.special.swipe = $.event.special.swipe || {\r\n scrollSupressionThreshold: 10, // More than this horizontal displacement, and we will suppress scrolling.\r\n durationThreshold: 1000, // More time than this, and it isn't a swipe.\r\n horizontalDistanceThreshold: 30, // Swipe horizontal displacement must be more than this.\r\n verticalDistanceThreshold: 75, // Swipe vertical displacement must be less than this.\r\n\r\n setup: function() {\r\n var $this = $( this );\r\n\r\n $this.bind( 'touchstart', function( event ) {\r\n var data = event.originalEvent.touches ? event.originalEvent.touches[ 0 ] : event;\r\n var stop, start = {\r\n time: ( new Date() ).getTime(),\r\n coords: [ data.pageX, data.pageY ],\r\n origin: $( event.target )\r\n };\r\n\r\n function moveHandler( event ) {\r\n if ( !start )\r\n return;\r\n\r\n var data = event.originalEvent.touches ? event.originalEvent.touches[ 0 ] : event;\r\n\r\n stop = {\r\n time: ( new Date() ).getTime(),\r\n coords: [ data.pageX, data.pageY ]\r\n };\r\n\r\n // prevent scrolling\r\n if ( Math.abs( start.coords[ 0 ] - stop.coords[ 0 ] ) > $.event.special.swipe.scrollSupressionThreshold ) {\r\n event.preventDefault();\r\n }\r\n }\r\n\r\n $this.bind( 'touchmove', moveHandler )\r\n .one( 'touchend', function( event ) {\r\n $this.unbind( 'touchmove', moveHandler );\r\n\r\n if ( start && stop ) {\r\n if ( stop.time - start.time < $.event.special.swipe.durationThreshold &&\r\n Math.abs( start.coords[ 0 ] - stop.coords[ 0 ] ) > $.event.special.swipe.horizontalDistanceThreshold &&\r\n Math.abs( start.coords[ 1 ] - stop.coords[ 1 ] ) < $.event.special.swipe.verticalDistanceThreshold ) {\r\n\r\n start.origin.trigger( \"swipe\" )\r\n .trigger( start.coords[0] > stop.coords[ 0 ] ? \"swipeleft\" : \"swiperight\" );\r\n }\r\n }\r\n start = stop = undefined;\r\n });\r\n });\r\n }\r\n};\r\n\r\n$.event.special.swipeleft = $.event.special.swipeleft || {\r\n setup: function() {\r\n $( this ).bind( 'swipe', $.noop );\r\n }\r\n};\r\n$.event.special.swiperight = $.event.special.swiperight || $.event.special.swipeleft;\r\n\r\n})(jQuery);\r\n","/*! center plugin for Cycle2; version: 20140121 */\r\n(function($) {\r\n\"use strict\";\r\n\r\n$.extend($.fn.cycle.defaults, {\r\n centerHorz: false,\r\n centerVert: false\r\n});\r\n\r\n$(document).on( 'cycle-pre-initialize', function( e, opts ) {\r\n if ( !opts.centerHorz && !opts.centerVert )\r\n return;\r\n\r\n // throttle resize event\r\n var timeout, timeout2;\r\n\r\n $(window).on( 'resize orientationchange load', resize );\r\n \r\n opts.container.on( 'cycle-destroyed', destroy );\r\n\r\n opts.container.on( 'cycle-initialized cycle-slide-added cycle-slide-removed', function( e, opts, slideOpts, slide ) {\r\n resize();\r\n });\r\n\r\n adjustActive();\r\n\r\n function resize() {\r\n clearTimeout( timeout );\r\n timeout = setTimeout( adjustActive, 50 );\r\n }\r\n\r\n function destroy( e, opts ) {\r\n clearTimeout( timeout );\r\n clearTimeout( timeout2 );\r\n $( window ).off( 'resize orientationchange', resize );\r\n }\r\n\r\n function adjustAll() {\r\n opts.slides.each( adjustSlide ); \r\n }\r\n\r\n function adjustActive() {\r\n /*jshint validthis: true */\r\n adjustSlide.apply( opts.container.find( '.' + opts.slideActiveClass ) );\r\n clearTimeout( timeout2 );\r\n timeout2 = setTimeout( adjustAll, 50 );\r\n }\r\n\r\n function adjustSlide() {\r\n /*jshint validthis: true */\r\n var slide = $(this);\r\n var contW = opts.container.width();\r\n var contH = opts.container.height();\r\n var w = slide.outerWidth();\r\n var h = slide.outerHeight();\r\n if (w) {\r\n if (opts.centerHorz && w <= contW)\r\n slide.css( 'marginLeft', (contW - w) / 2 );\r\n if (opts.centerVert && h <= contH)\r\n slide.css( 'marginTop', (contH - h) / 2 );\r\n }\r\n }\r\n});\r\n\r\n})(jQuery);\r\n","/*! carousel transition plugin for Cycle2; version: 20130528 */\r\n(function($) {\r\n\"use strict\";\r\n\r\n$( document ).on('cycle-bootstrap', function( e, opts, API ) {\r\n if ( opts.fx !== 'carousel' )\r\n return;\r\n\r\n API.getSlideIndex = function( el ) {\r\n var slides = this.opts()._carouselWrap.children();\r\n var i = slides.index( el );\r\n return i % slides.length;\r\n };\r\n\r\n // override default 'next' function\r\n API.next = function() {\r\n var count = opts.reverse ? -1 : 1;\r\n if ( opts.allowWrap === false && ( opts.currSlide + count ) > opts.slideCount - opts.carouselVisible )\r\n return;\r\n opts.API.advanceSlide( count );\r\n opts.API.trigger('cycle-next', [ opts ]).log('cycle-next');\r\n };\r\n\r\n});\r\n\r\n\r\n$.fn.cycle.transitions.carousel = {\r\n // transition API impl\r\n preInit: function( opts ) {\r\n opts.hideNonActive = false;\r\n \r\n opts.container.on('cycle-destroyed', $.proxy(this.onDestroy, opts.API));\r\n // override default API implementation\r\n opts.API.stopTransition = this.stopTransition;\r\n\r\n // issue #10\r\n for (var i=0; i < opts.startingSlide; i++) {\r\n opts.container.append( opts.slides[0] );\r\n } \r\n },\r\n\r\n // transition API impl\r\n postInit: function( opts ) {\r\n var i, j, slide, pagerCutoffIndex, wrap;\r\n var vert = opts.carouselVertical;\r\n if (opts.carouselVisible && opts.carouselVisible > opts.slideCount)\r\n opts.carouselVisible = opts.slideCount - 1;\r\n var visCount = opts.carouselVisible || opts.slides.length;\r\n var slideCSS = { display: vert ? 'block' : 'inline-block', position: 'static' };\r\n\r\n // required styles\r\n opts.container.css({ position: 'relative', overflow: 'hidden' });\r\n opts.slides.css( slideCSS );\r\n\r\n opts._currSlide = opts.currSlide;\r\n\r\n // wrap slides in a div; this div is what is animated\r\n wrap = $('')\r\n .prependTo( opts.container )\r\n .css({ margin: 0, padding: 0, top: 0, left: 0, position: 'absolute' })\r\n .append( opts.slides );\r\n\r\n opts._carouselWrap = wrap;\r\n\r\n if ( !vert )\r\n wrap.css('white-space', 'nowrap');\r\n\r\n if ( opts.allowWrap !== false ) {\r\n // prepend and append extra slides so we don't see any empty space when we\r\n // near the end of the carousel. for fluid containers, add even more clones\r\n // so there is plenty to fill the screen\r\n // @todo: optimzie this based on slide sizes\r\n\r\n for ( j=0; j < (opts.carouselVisible === undefined ? 2 : 1); j++ ) {\r\n for ( i=0; i < opts.slideCount; i++ ) {\r\n wrap.append( opts.slides[i].cloneNode(true) );\r\n }\r\n i = opts.slideCount;\r\n while ( i-- ) { // #160, #209\r\n wrap.prepend( opts.slides[i].cloneNode(true) );\r\n }\r\n }\r\n\r\n wrap.find('.cycle-slide-active').removeClass('cycle-slide-active');\r\n opts.slides.eq(opts.startingSlide).addClass('cycle-slide-active');\r\n }\r\n\r\n if ( opts.pager && opts.allowWrap === false ) {\r\n // hide \"extra\" pagers\r\n pagerCutoffIndex = opts.slideCount - visCount;\r\n $( opts.pager ).children().filter( ':gt('+pagerCutoffIndex+')' ).hide();\r\n }\r\n\r\n opts._nextBoundry = opts.slideCount - opts.carouselVisible;\r\n\r\n this.prepareDimensions( opts );\r\n },\r\n\r\n prepareDimensions: function( opts ) {\r\n var dim, offset, pagerCutoffIndex, tmp, j;\r\n var vert = opts.carouselVertical;\r\n var visCount = opts.carouselVisible || opts.slides.length;\r\n\r\n if ( opts.carouselFluid && opts.carouselVisible ) {\r\n if ( ! opts._carouselResizeThrottle ) {\r\n // fluid container AND fluid slides; slides need to be resized to fit container\r\n this.fluidSlides( opts );\r\n }\r\n }\r\n else if ( opts.carouselVisible && opts.carouselSlideDimension ) {\r\n dim = visCount * opts.carouselSlideDimension;\r\n opts.container[ vert ? 'height' : 'width' ]( dim );\r\n }\r\n else if ( opts.carouselVisible ) {\r\n dim = visCount * $(opts.slides[0])[vert ? 'outerHeight' : 'outerWidth'](true);\r\n opts.container[ vert ? 'height' : 'width' ]( dim );\r\n }\r\n // else {\r\n // // fluid; don't size the container\r\n // }\r\n\r\n offset = ( opts.carouselOffset || 0 );\r\n if ( opts.allowWrap !== false ) {\r\n if ( opts.carouselSlideDimension ) {\r\n offset -= ( (opts.slideCount + opts.currSlide) * opts.carouselSlideDimension );\r\n }\r\n else {\r\n // calculate offset based on actual slide dimensions\r\n tmp = opts._carouselWrap.children();\r\n for (j=0; j < (opts.slideCount + opts.currSlide); j++) {\r\n offset -= $(tmp[j])[vert?'outerHeight':'outerWidth'](true);\r\n }\r\n }\r\n }\r\n\r\n opts._carouselWrap.css( vert ? 'top' : 'left', offset );\r\n },\r\n\r\n fluidSlides: function( opts ) {\r\n var timeout;\r\n var slide = opts.slides.eq(0);\r\n var adjustment = slide.outerWidth() - slide.width();\r\n var prepareDimensions = this.prepareDimensions;\r\n\r\n // throttle resize event\r\n $(window).on( 'resize', resizeThrottle);\r\n\r\n opts._carouselResizeThrottle = resizeThrottle;\r\n onResize();\r\n\r\n function resizeThrottle() {\r\n clearTimeout( timeout );\r\n timeout = setTimeout( onResize, 20 );\r\n }\r\n\r\n function onResize() {\r\n opts._carouselWrap.stop( false, true );\r\n var slideWidth = opts.container.width() / opts.carouselVisible;\r\n slideWidth = Math.ceil( slideWidth - adjustment );\r\n opts._carouselWrap.children().width( slideWidth );\r\n if ( opts._sentinel )\r\n opts._sentinel.width( slideWidth );\r\n prepareDimensions( opts );\r\n }\r\n },\r\n\r\n // transition API impl\r\n transition: function( opts, curr, next, fwd, callback ) {\r\n var moveBy, props = {};\r\n var hops = opts.nextSlide - opts.currSlide;\r\n var vert = opts.carouselVertical;\r\n var speed = opts.speed;\r\n\r\n // handle all the edge cases for wrapping & non-wrapping\r\n if ( opts.allowWrap === false ) {\r\n fwd = hops > 0;\r\n var currSlide = opts._currSlide;\r\n var maxCurr = opts.slideCount - opts.carouselVisible;\r\n if ( hops > 0 && opts.nextSlide > maxCurr && currSlide == maxCurr ) {\r\n hops = 0;\r\n }\r\n else if ( hops > 0 && opts.nextSlide > maxCurr ) {\r\n hops = opts.nextSlide - currSlide - (opts.nextSlide - maxCurr);\r\n }\r\n else if ( hops < 0 && opts.currSlide > maxCurr && opts.nextSlide > maxCurr ) {\r\n hops = 0;\r\n }\r\n else if ( hops < 0 && opts.currSlide > maxCurr ) {\r\n hops += opts.currSlide - maxCurr;\r\n }\r\n else \r\n currSlide = opts.currSlide;\r\n\r\n moveBy = this.getScroll( opts, vert, currSlide, hops );\r\n opts.API.opts()._currSlide = opts.nextSlide > maxCurr ? maxCurr : opts.nextSlide;\r\n }\r\n else {\r\n if ( fwd && opts.nextSlide === 0 ) {\r\n // moving from last slide to first\r\n moveBy = this.getDim( opts, opts.currSlide, vert );\r\n callback = this.genCallback( opts, fwd, vert, callback );\r\n }\r\n else if ( !fwd && opts.nextSlide == opts.slideCount - 1 ) {\r\n // moving from first slide to last\r\n moveBy = this.getDim( opts, opts.currSlide, vert );\r\n callback = this.genCallback( opts, fwd, vert, callback );\r\n }\r\n else {\r\n moveBy = this.getScroll( opts, vert, opts.currSlide, hops );\r\n }\r\n }\r\n\r\n props[ vert ? 'top' : 'left' ] = fwd ? ( \"-=\" + moveBy ) : ( \"+=\" + moveBy );\r\n\r\n // throttleSpeed means to scroll slides at a constant rate, rather than\r\n // a constant speed\r\n if ( opts.throttleSpeed )\r\n speed = (moveBy / $(opts.slides[0])[vert ? 'height' : 'width']() ) * opts.speed;\r\n\r\n opts._carouselWrap.animate( props, speed, opts.easing, callback );\r\n },\r\n\r\n getDim: function( opts, index, vert ) {\r\n var slide = $( opts.slides[index] );\r\n return slide[ vert ? 'outerHeight' : 'outerWidth'](true);\r\n },\r\n\r\n getScroll: function( opts, vert, currSlide, hops ) {\r\n var i, moveBy = 0;\r\n\r\n if (hops > 0) {\r\n for (i=currSlide; i < currSlide+hops; i++)\r\n moveBy += this.getDim( opts, i, vert);\r\n }\r\n else {\r\n for (i=currSlide; i > currSlide+hops; i--)\r\n moveBy += this.getDim( opts, i, vert);\r\n }\r\n return moveBy;\r\n },\r\n\r\n genCallback: function( opts, fwd, vert, callback ) {\r\n // returns callback fn that resets the left/top wrap position to the \"real\" slides\r\n return function() {\r\n var pos = $(opts.slides[opts.nextSlide]).position();\r\n var offset = 0 - pos[vert?'top':'left'] + (opts.carouselOffset || 0);\r\n opts._carouselWrap.css( opts.carouselVertical ? 'top' : 'left', offset );\r\n callback();\r\n };\r\n },\r\n\r\n // core API override\r\n stopTransition: function() {\r\n var opts = this.opts();\r\n opts.slides.stop( false, true );\r\n opts._carouselWrap.stop( false, true );\r\n },\r\n\r\n // core API supplement\r\n onDestroy: function( e ) {\r\n var opts = this.opts();\r\n if ( opts._carouselResizeThrottle )\r\n $( window ).off( 'resize', opts._carouselResizeThrottle );\r\n opts.slides.prependTo( opts.container );\r\n opts._carouselWrap.remove();\r\n }\r\n};\r\n\r\n})(jQuery);\r\n","/**\r\n * jQuery Unveil\r\n * A very lightweight jQuery plugin to lazy load images\r\n * http://luis-almeida.github.com/unveil\r\n *\r\n * Licensed under the MIT license.\r\n * Copyright 2013 Luís Almeida\r\n * https://github.com/luis-almeida\r\n */\r\n\r\n;(function($) {\r\n\r\n $.fn.unveil = function(threshold, callback) {\r\n\r\n var $w = $(window),\r\n th = threshold || 0,\r\n retina = window.devicePixelRatio > 1,\r\n attrib = retina? \"data-src-retina\" : \"data-src\",\r\n images = this,\r\n loaded;\r\n\r\n this.one(\"unveil\", function() {\r\n var source = this.getAttribute(attrib);\r\n source = source || this.getAttribute(\"data-src\");\r\n if (source) {\r\n this.setAttribute(\"src\", source);\r\n if (typeof callback === \"function\") callback.call(this);\r\n }\r\n });\r\n\r\n function unveil() {\r\n var inview = images.filter(function() {\r\n var $e = $(this);\r\n if ($e.is(\":hidden\")) return;\r\n\r\n var wt = $w.scrollTop(),\r\n wb = wt + $w.height(),\r\n et = $e.offset().top,\r\n eb = et + $e.height();\r\n\r\n return eb >= wt - th && et <= wb + th;\r\n });\r\n\r\n loaded = inview.trigger(\"unveil\");\r\n images = images.not(loaded);\r\n }\r\n\r\n $w.on(\"scroll.unveil resize.unveil lookup.unveil\", unveil);\r\n\r\n unveil();\r\n\r\n return this;\r\n\r\n };\r\n\r\n})(window.jQuery || window.Zepto);","/*\r\n * Foundation Responsive Library\r\n * http://foundation.zurb.com\r\n * Copyright 2015, ZURB\r\n * Free to use under the MIT license.\r\n * http://www.opensource.org/licenses/mit-license.php\r\n*/\r\n\r\n(function ($, window, document, undefined) {\r\n 'use strict';\r\n\r\n var header_helpers = function (class_array) {\r\n var head = $('head');\r\n head.prepend($.map(class_array, function (class_name) {\r\n if (head.has('.' + class_name).length === 0) {\r\n return '';\r\n }\r\n }));\r\n };\r\n\r\n header_helpers([\r\n 'foundation-mq-small',\r\n 'foundation-mq-small-only',\r\n 'foundation-mq-medium',\r\n 'foundation-mq-medium-only',\r\n 'foundation-mq-large',\r\n 'foundation-mq-large-only',\r\n 'foundation-mq-xlarge',\r\n 'foundation-mq-xlarge-only',\r\n 'foundation-mq-xxlarge',\r\n 'foundation-data-attribute-namespace']);\r\n\r\n // Enable FastClick if present\r\n\r\n $(function () {\r\n if (typeof FastClick !== 'undefined') {\r\n // Don't attach to body if undefined\r\n if (typeof document.body !== 'undefined') {\r\n FastClick.attach(document.body);\r\n }\r\n }\r\n });\r\n\r\n // private Fast Selector wrapper,\r\n // returns jQuery object. Only use where\r\n // getElementById is not available.\r\n var S = function (selector, context) {\r\n if (typeof selector === 'string') {\r\n if (context) {\r\n var cont;\r\n if (context.jquery) {\r\n cont = context[0];\r\n if (!cont) {\r\n return context;\r\n }\r\n } else {\r\n cont = context;\r\n }\r\n return $(cont.querySelectorAll(selector));\r\n }\r\n\r\n return $(document.querySelectorAll(selector));\r\n }\r\n\r\n return $(selector, context);\r\n };\r\n\r\n // Namespace functions.\r\n\r\n var attr_name = function (init) {\r\n var arr = [];\r\n if (!init) {\r\n arr.push('data');\r\n }\r\n if (this.namespace.length > 0) {\r\n arr.push(this.namespace);\r\n }\r\n arr.push(this.name);\r\n\r\n return arr.join('-');\r\n };\r\n\r\n var add_namespace = function (str) {\r\n var parts = str.split('-'),\r\n i = parts.length,\r\n arr = [];\r\n\r\n while (i--) {\r\n if (i !== 0) {\r\n arr.push(parts[i]);\r\n } else {\r\n if (this.namespace.length > 0) {\r\n arr.push(this.namespace, parts[i]);\r\n } else {\r\n arr.push(parts[i]);\r\n }\r\n }\r\n }\r\n\r\n return arr.reverse().join('-');\r\n };\r\n\r\n // Event binding and data-options updating.\r\n\r\n var bindings = function (method, options) {\r\n var self = this,\r\n bind = function(){\r\n var $this = S(this),\r\n should_bind_events = !S(self).data(self.attr_name(true) + '-init');\r\n $this.data(self.attr_name(true) + '-init', $.extend({}, self.settings, (options || method), self.data_options($this)));\r\n\r\n if (should_bind_events) {\r\n self.events(this);\r\n }\r\n };\r\n\r\n if (S(this.scope).is('[' + this.attr_name() +']')) {\r\n bind.call(this.scope);\r\n } else {\r\n S('[' + this.attr_name() +']', this.scope).each(bind);\r\n }\r\n // # Patch to fix #5043 to move this *after* the if/else clause in order for Backbone and similar frameworks to have improved control over event binding and data-options updating.\r\n if (typeof method === 'string') {\r\n return this[method].call(this, options);\r\n }\r\n\r\n };\r\n\r\n var single_image_loaded = function (image, callback) {\r\n function loaded () {\r\n callback(image[0]);\r\n }\r\n\r\n function bindLoad () {\r\n this.one('load', loaded);\r\n\r\n if (/MSIE (\\d+\\.\\d+);/.test(navigator.userAgent)) {\r\n var src = this.attr( 'src' ),\r\n param = src.match( /\\?/ ) ? '&' : '?';\r\n\r\n param += 'random=' + (new Date()).getTime();\r\n this.attr('src', src + param);\r\n }\r\n }\r\n\r\n if (!image.attr('src')) {\r\n loaded();\r\n return;\r\n }\r\n\r\n if (image[0].complete || image[0].readyState === 4) {\r\n loaded();\r\n } else {\r\n bindLoad.call(image);\r\n }\r\n };\r\n\r\n /*! matchMedia() polyfill - Test a CSS media type/query in JS. Authors & copyright (c) 2012: Scott Jehl, Paul Irish, Nicholas Zakas, David Knight. Dual MIT/BSD license */\r\n\r\n window.matchMedia || (window.matchMedia = function() {\r\n \"use strict\";\r\n\r\n // For browsers that support matchMedium api such as IE 9 and webkit\r\n var styleMedia = (window.styleMedia || window.media);\r\n\r\n // For those that don't support matchMedium\r\n if (!styleMedia) {\r\n var style = document.createElement('style'),\r\n script = document.getElementsByTagName('script')[0],\r\n info = null;\r\n\r\n style.type = 'text/css';\r\n style.id = 'matchmediajs-test';\r\n\r\n script.parentNode.insertBefore(style, script);\r\n\r\n // 'style.currentStyle' is used by IE <= 8 and 'window.getComputedStyle' for all other browsers\r\n info = ('getComputedStyle' in window) && window.getComputedStyle(style, null) || style.currentStyle;\r\n\r\n styleMedia = {\r\n matchMedium: function(media) {\r\n var text = '@media ' + media + '{ #matchmediajs-test { width: 1px; } }';\r\n\r\n // 'style.styleSheet' is used by IE <= 8 and 'style.textContent' for all other browsers\r\n if (style.styleSheet) {\r\n style.styleSheet.cssText = text;\r\n } else {\r\n style.textContent = text;\r\n }\r\n\r\n // Test if media query is true or false\r\n return info.width === '1px';\r\n }\r\n };\r\n }\r\n\r\n return function(media) {\r\n return {\r\n matches: styleMedia.matchMedium(media || 'all'),\r\n media: media || 'all'\r\n };\r\n };\r\n }());\r\n\r\n /*\r\n * jquery.requestAnimationFrame\r\n * https://github.com/gnarf37/jquery-requestAnimationFrame\r\n * Requires jQuery 1.8+\r\n *\r\n * Copyright (c) 2012 Corey Frang\r\n * Licensed under the MIT license.\r\n */\r\n\r\n (function(jQuery) {\r\n\r\n\r\n // requestAnimationFrame polyfill adapted from Erik Möller\r\n // fixes from Paul Irish and Tino Zijdel\r\n // http://paulirish.com/2011/requestanimationframe-for-smart-animating/\r\n // http://my.opera.com/emoller/blog/2011/12/20/requestanimationframe-for-smart-er-animating\r\n\r\n var animating,\r\n lastTime = 0,\r\n vendors = ['webkit', 'moz'],\r\n requestAnimationFrame = window.requestAnimationFrame,\r\n cancelAnimationFrame = window.cancelAnimationFrame,\r\n jqueryFxAvailable = 'undefined' !== typeof jQuery.fx;\r\n\r\n for (; lastTime < vendors.length && !requestAnimationFrame; lastTime++) {\r\n requestAnimationFrame = window[ vendors[lastTime] + 'RequestAnimationFrame' ];\r\n cancelAnimationFrame = cancelAnimationFrame ||\r\n window[ vendors[lastTime] + 'CancelAnimationFrame' ] ||\r\n window[ vendors[lastTime] + 'CancelRequestAnimationFrame' ];\r\n }\r\n\r\n function raf() {\r\n if (animating) {\r\n requestAnimationFrame(raf);\r\n\r\n if (jqueryFxAvailable) {\r\n jQuery.fx.tick();\r\n }\r\n }\r\n }\r\n\r\n if (requestAnimationFrame) {\r\n // use rAF\r\n window.requestAnimationFrame = requestAnimationFrame;\r\n window.cancelAnimationFrame = cancelAnimationFrame;\r\n\r\n if (jqueryFxAvailable) {\r\n jQuery.fx.timer = function (timer) {\r\n if (timer() && jQuery.timers.push(timer) && !animating) {\r\n animating = true;\r\n raf();\r\n }\r\n };\r\n\r\n jQuery.fx.stop = function () {\r\n animating = false;\r\n };\r\n }\r\n } else {\r\n // polyfill\r\n window.requestAnimationFrame = function (callback) {\r\n var currTime = new Date().getTime(),\r\n timeToCall = Math.max(0, 16 - (currTime - lastTime)),\r\n id = window.setTimeout(function () {\r\n callback(currTime + timeToCall);\r\n }, timeToCall);\r\n lastTime = currTime + timeToCall;\r\n return id;\r\n };\r\n\r\n window.cancelAnimationFrame = function (id) {\r\n clearTimeout(id);\r\n };\r\n\r\n }\r\n\r\n }( $ ));\r\n\r\n function removeQuotes (string) {\r\n if (typeof string === 'string' || string instanceof String) {\r\n string = string.replace(/^['\\\\/\"]+|(;\\s?})+|['\\\\/\"]+$/g, '');\r\n }\r\n\r\n return string;\r\n }\r\n\r\n function MediaQuery(selector) {\r\n this.selector = selector;\r\n this.query = '';\r\n }\r\n\r\n MediaQuery.prototype.toString = function () {\r\n return this.query || (this.query = S(this.selector).css('font-family').replace(/^[\\/\\\\'\"]+|(;\\s?})+|[\\/\\\\'\"]+$/g, ''));\r\n };\r\n\r\n window.Foundation = {\r\n name : 'Foundation',\r\n\r\n version : '{{VERSION}}',\r\n\r\n media_queries : {\r\n 'small' : new MediaQuery('.foundation-mq-small'),\r\n 'small-only' : new MediaQuery('.foundation-mq-small-only'),\r\n 'medium' : new MediaQuery('.foundation-mq-medium'),\r\n 'medium-only' : new MediaQuery('.foundation-mq-medium-only'),\r\n 'large' : new MediaQuery('.foundation-mq-large'),\r\n 'large-only' : new MediaQuery('.foundation-mq-large-only'),\r\n 'xlarge' : new MediaQuery('.foundation-mq-xlarge'),\r\n 'xlarge-only' : new MediaQuery('.foundation-mq-xlarge-only'),\r\n 'xxlarge' : new MediaQuery('.foundation-mq-xxlarge')\r\n },\r\n\r\n stylesheet : $('').appendTo('head')[0].sheet,\r\n\r\n global : {\r\n namespace : undefined\r\n },\r\n\r\n init : function (scope, libraries, method, options, response) {\r\n var args = [scope, method, options, response],\r\n responses = [];\r\n\r\n // check RTL\r\n this.rtl = /rtl/i.test(S('html').attr('dir'));\r\n\r\n // set foundation global scope\r\n this.scope = scope || this.scope;\r\n\r\n this.set_namespace();\r\n\r\n if (libraries && typeof libraries === 'string' && !/reflow/i.test(libraries)) {\r\n if (this.libs.hasOwnProperty(libraries)) {\r\n responses.push(this.init_lib(libraries, args));\r\n }\r\n } else {\r\n for (var lib in this.libs) {\r\n responses.push(this.init_lib(lib, libraries));\r\n }\r\n }\r\n\r\n S(window).load(function () {\r\n S(window)\r\n .trigger('resize.fndtn.clearing')\r\n .trigger('resize.fndtn.dropdown')\r\n .trigger('resize.fndtn.equalizer')\r\n .trigger('resize.fndtn.interchange')\r\n .trigger('resize.fndtn.joyride')\r\n .trigger('resize.fndtn.magellan')\r\n .trigger('resize.fndtn.topbar')\r\n .trigger('resize.fndtn.slider');\r\n });\r\n\r\n return scope;\r\n },\r\n\r\n init_lib : function (lib, args) {\r\n if (this.libs.hasOwnProperty(lib)) {\r\n this.patch(this.libs[lib]);\r\n\r\n if (args && args.hasOwnProperty(lib)) {\r\n if (typeof this.libs[lib].settings !== 'undefined') {\r\n $.extend(true, this.libs[lib].settings, args[lib]);\r\n } else if (typeof this.libs[lib].defaults !== 'undefined') {\r\n $.extend(true, this.libs[lib].defaults, args[lib]);\r\n }\r\n return this.libs[lib].init.apply(this.libs[lib], [this.scope, args[lib]]);\r\n }\r\n\r\n args = args instanceof Array ? args : new Array(args);\r\n return this.libs[lib].init.apply(this.libs[lib], args);\r\n }\r\n\r\n return function () {};\r\n },\r\n\r\n patch : function (lib) {\r\n lib.scope = this.scope;\r\n lib.namespace = this.global.namespace;\r\n lib.rtl = this.rtl;\r\n lib['data_options'] = this.utils.data_options;\r\n lib['attr_name'] = attr_name;\r\n lib['add_namespace'] = add_namespace;\r\n lib['bindings'] = bindings;\r\n lib['S'] = this.utils.S;\r\n },\r\n\r\n inherit : function (scope, methods) {\r\n var methods_arr = methods.split(' '),\r\n i = methods_arr.length;\r\n\r\n while (i--) {\r\n if (this.utils.hasOwnProperty(methods_arr[i])) {\r\n scope[methods_arr[i]] = this.utils[methods_arr[i]];\r\n }\r\n }\r\n },\r\n\r\n set_namespace : function () {\r\n\r\n // Description:\r\n // Don't bother reading the namespace out of the meta tag\r\n // if the namespace has been set globally in javascript\r\n //\r\n // Example:\r\n // Foundation.global.namespace = 'my-namespace';\r\n // or make it an empty string:\r\n // Foundation.global.namespace = '';\r\n //\r\n //\r\n\r\n // If the namespace has not been set (is undefined), try to read it out of the meta element.\r\n // Otherwise use the globally defined namespace, even if it's empty ('')\r\n var namespace = ( this.global.namespace === undefined ) ? $('.foundation-data-attribute-namespace').css('font-family') : this.global.namespace;\r\n\r\n // Finally, if the namsepace is either undefined or false, set it to an empty string.\r\n // Otherwise use the namespace value.\r\n this.global.namespace = ( namespace === undefined || /false/i.test(namespace) ) ? '' : namespace;\r\n },\r\n\r\n libs : {},\r\n\r\n // methods that can be inherited in libraries\r\n utils : {\r\n\r\n // Description:\r\n // Fast Selector wrapper returns jQuery object. Only use where getElementById\r\n // is not available.\r\n //\r\n // Arguments:\r\n // Selector (String): CSS selector describing the element(s) to be\r\n // returned as a jQuery object.\r\n //\r\n // Scope (String): CSS selector describing the area to be searched. Default\r\n // is document.\r\n //\r\n // Returns:\r\n // Element (jQuery Object): jQuery object containing elements matching the\r\n // selector within the scope.\r\n S : S,\r\n\r\n // Description:\r\n // Executes a function a max of once every n milliseconds\r\n //\r\n // Arguments:\r\n // Func (Function): Function to be throttled.\r\n //\r\n // Delay (Integer): Function execution threshold in milliseconds.\r\n //\r\n // Returns:\r\n // Lazy_function (Function): Function with throttling applied.\r\n throttle : function (func, delay) {\r\n var timer = null;\r\n\r\n return function () {\r\n var context = this, args = arguments;\r\n\r\n if (timer == null) {\r\n timer = setTimeout(function () {\r\n func.apply(context, args);\r\n timer = null;\r\n }, delay);\r\n }\r\n };\r\n },\r\n\r\n // Description:\r\n // Executes a function when it stops being invoked for n seconds\r\n // Modified version of _.debounce() http://underscorejs.org\r\n //\r\n // Arguments:\r\n // Func (Function): Function to be debounced.\r\n //\r\n // Delay (Integer): Function execution threshold in milliseconds.\r\n //\r\n // Immediate (Bool): Whether the function should be called at the beginning\r\n // of the delay instead of the end. Default is false.\r\n //\r\n // Returns:\r\n // Lazy_function (Function): Function with debouncing applied.\r\n debounce : function (func, delay, immediate) {\r\n var timeout, result;\r\n return function () {\r\n var context = this, args = arguments;\r\n var later = function () {\r\n timeout = null;\r\n if (!immediate) {\r\n result = func.apply(context, args);\r\n }\r\n };\r\n var callNow = immediate && !timeout;\r\n clearTimeout(timeout);\r\n timeout = setTimeout(later, delay);\r\n if (callNow) {\r\n result = func.apply(context, args);\r\n }\r\n return result;\r\n };\r\n },\r\n\r\n // Description:\r\n // Parses data-options attribute\r\n //\r\n // Arguments:\r\n // El (jQuery Object): Element to be parsed.\r\n //\r\n // Returns:\r\n // Options (Javascript Object): Contents of the element's data-options\r\n // attribute.\r\n data_options : function (el, data_attr_name) {\r\n data_attr_name = data_attr_name || 'options';\r\n var opts = {}, ii, p, opts_arr,\r\n data_options = function (el) {\r\n var namespace = Foundation.global.namespace;\r\n\r\n if (namespace.length > 0) {\r\n return el.data(namespace + '-' + data_attr_name);\r\n }\r\n\r\n return el.data(data_attr_name);\r\n };\r\n\r\n var cached_options = data_options(el);\r\n\r\n if (typeof cached_options === 'object') {\r\n return cached_options;\r\n }\r\n\r\n opts_arr = (cached_options || ':').split(';');\r\n ii = opts_arr.length;\r\n\r\n function isNumber (o) {\r\n return !isNaN (o - 0) && o !== null && o !== '' && o !== false && o !== true;\r\n }\r\n\r\n function trim (str) {\r\n if (typeof str === 'string') {\r\n return $.trim(str);\r\n }\r\n return str;\r\n }\r\n\r\n while (ii--) {\r\n p = opts_arr[ii].split(':');\r\n p = [p[0], p.slice(1).join(':')];\r\n\r\n if (/true/i.test(p[1])) {\r\n p[1] = true;\r\n }\r\n if (/false/i.test(p[1])) {\r\n p[1] = false;\r\n }\r\n if (isNumber(p[1])) {\r\n if (p[1].indexOf('.') === -1) {\r\n p[1] = parseInt(p[1], 10);\r\n } else {\r\n p[1] = parseFloat(p[1]);\r\n }\r\n }\r\n\r\n if (p.length === 2 && p[0].length > 0) {\r\n opts[trim(p[0])] = trim(p[1]);\r\n }\r\n }\r\n\r\n return opts;\r\n },\r\n\r\n // Description:\r\n // Adds JS-recognizable media queries\r\n //\r\n // Arguments:\r\n // Media (String): Key string for the media query to be stored as in\r\n // Foundation.media_queries\r\n //\r\n // Class (String): Class name for the generated tag\r\n register_media : function (media, media_class) {\r\n if (Foundation.media_queries[media] === undefined) {\r\n $('head').append('');\r\n Foundation.media_queries[media] = removeQuotes($('.' + media_class).css('font-family'));\r\n }\r\n },\r\n\r\n // Description:\r\n // Add custom CSS within a JS-defined media query\r\n //\r\n // Arguments:\r\n // Rule (String): CSS rule to be appended to the document.\r\n //\r\n // Media (String): Optional media query string for the CSS rule to be\r\n // nested under.\r\n add_custom_rule : function (rule, media) {\r\n if (media === undefined && Foundation.stylesheet) {\r\n Foundation.stylesheet.insertRule(rule, Foundation.stylesheet.cssRules.length);\r\n } else {\r\n var query = Foundation.media_queries[media];\r\n\r\n if (query !== undefined) {\r\n Foundation.stylesheet.insertRule('@media ' +\r\n Foundation.media_queries[media] + '{ ' + rule + ' }', Foundation.stylesheet.cssRules.length);\r\n }\r\n }\r\n },\r\n\r\n // Description:\r\n // Performs a callback function when an image is fully loaded\r\n //\r\n // Arguments:\r\n // Image (jQuery Object): Image(s) to check if loaded.\r\n //\r\n // Callback (Function): Function to execute when image is fully loaded.\r\n image_loaded : function (images, callback) {\r\n var self = this,\r\n unloaded = images.length;\r\n\r\n function pictures_has_height(images) {\r\n var pictures_number = images.length;\r\n\r\n for (var i = pictures_number - 1; i >= 0; i--) {\r\n if(images.attr('height') === undefined) {\r\n return false;\r\n };\r\n };\r\n\r\n return true;\r\n }\r\n\r\n if (unloaded === 0 || pictures_has_height(images)) {\r\n callback(images);\r\n }\r\n\r\n images.each(function () {\r\n single_image_loaded(self.S(this), function () {\r\n unloaded -= 1;\r\n if (unloaded === 0) {\r\n callback(images);\r\n }\r\n });\r\n });\r\n },\r\n\r\n // Description:\r\n // Returns a random, alphanumeric string\r\n //\r\n // Arguments:\r\n // Length (Integer): Length of string to be generated. Defaults to random\r\n // integer.\r\n //\r\n // Returns:\r\n // Rand (String): Pseudo-random, alphanumeric string.\r\n random_str : function () {\r\n if (!this.fidx) {\r\n this.fidx = 0;\r\n }\r\n this.prefix = this.prefix || [(this.name || 'F'), (+new Date).toString(36)].join('-');\r\n\r\n return this.prefix + (this.fidx++).toString(36);\r\n },\r\n\r\n // Description:\r\n // Helper for window.matchMedia\r\n //\r\n // Arguments:\r\n // mq (String): Media query\r\n //\r\n // Returns:\r\n // (Boolean): Whether the media query passes or not\r\n match : function (mq) {\r\n return window.matchMedia(mq).matches;\r\n },\r\n\r\n // Description:\r\n // Helpers for checking Foundation default media queries with JS\r\n //\r\n // Returns:\r\n // (Boolean): Whether the media query passes or not\r\n\r\n is_small_up : function () {\r\n return this.match(Foundation.media_queries.small);\r\n },\r\n\r\n is_medium_up : function () {\r\n return this.match(Foundation.media_queries.medium);\r\n },\r\n\r\n is_large_up : function () {\r\n return this.match(Foundation.media_queries.large);\r\n },\r\n\r\n is_xlarge_up : function () {\r\n return this.match(Foundation.media_queries.xlarge);\r\n },\r\n\r\n is_xxlarge_up : function () {\r\n return this.match(Foundation.media_queries.xxlarge);\r\n },\r\n\r\n is_small_only : function () {\r\n return !this.is_medium_up() && !this.is_large_up() && !this.is_xlarge_up() && !this.is_xxlarge_up();\r\n },\r\n\r\n is_medium_only : function () {\r\n return this.is_medium_up() && !this.is_large_up() && !this.is_xlarge_up() && !this.is_xxlarge_up();\r\n },\r\n\r\n is_large_only : function () {\r\n return this.is_medium_up() && this.is_large_up() && !this.is_xlarge_up() && !this.is_xxlarge_up();\r\n },\r\n\r\n is_xlarge_only : function () {\r\n return this.is_medium_up() && this.is_large_up() && this.is_xlarge_up() && !this.is_xxlarge_up();\r\n },\r\n\r\n is_xxlarge_only : function () {\r\n return this.is_medium_up() && this.is_large_up() && this.is_xlarge_up() && this.is_xxlarge_up();\r\n }\r\n }\r\n };\r\n\r\n $.fn.foundation = function () {\r\n var args = Array.prototype.slice.call(arguments, 0);\r\n\r\n return this.each(function () {\r\n Foundation.init.apply(Foundation, [this].concat(args));\r\n return this;\r\n });\r\n };\r\n\r\n}(jQuery, window, window.document));\r\n",";(function ($, window, document, undefined) {\r\n 'use strict';\r\n\r\n var openModals = [];\r\n\r\n Foundation.libs.reveal = {\r\n name : 'reveal',\r\n\r\n version : '{{VERSION}}',\r\n\r\n locked : false,\r\n\r\n settings : {\r\n animation : 'fadeAndPop',\r\n animation_speed : 250,\r\n close_on_background_click : true,\r\n close_on_esc : true,\r\n dismiss_modal_class : 'close-reveal-modal',\r\n multiple_opened : false,\r\n bg_class : 'reveal-modal-bg',\r\n root_element : 'body',\r\n no_scroll: true,\r\n open : function(){},\r\n opened : function(){},\r\n close : function(){},\r\n closed : function(){},\r\n on_ajax_error: $.noop,\r\n bg : $('.reveal-modal-bg'),\r\n css : {\r\n open : {\r\n 'opacity' : 0,\r\n 'visibility' : 'visible',\r\n 'display' : 'block'\r\n },\r\n close : {\r\n 'opacity' : 1,\r\n 'visibility' : 'hidden',\r\n 'display' : 'none'\r\n }\r\n }\r\n },\r\n\r\n init : function (scope, method, options) {\r\n $.extend(true, this.settings, method, options);\r\n this.bindings(method, options);\r\n },\r\n\r\n events : function (scope) {\r\n var self = this,\r\n S = self.S;\r\n\r\n S(this.scope)\r\n .off('.reveal')\r\n .on('click.fndtn.reveal', '[' + this.add_namespace('data-reveal-id') + ']:not([disabled])', function (e) {\r\n e.preventDefault();\r\n\r\n if (!self.locked) {\r\n var element = S(this),\r\n ajax = element.data(self.data_attr('reveal-ajax')),\r\n replaceContentSel = element.data(self.data_attr('reveal-replace-content'));\r\n\r\n self.locked = true;\r\n\r\n if (typeof ajax === 'undefined') {\r\n self.open.call(self, element);\r\n } else {\r\n var url = ajax === true ? element.attr('href') : ajax;\r\n self.open.call(self, element, {url : url}, { replaceContentSel : replaceContentSel });\r\n }\r\n }\r\n });\r\n\r\n S(document)\r\n .on('click.fndtn.reveal', this.close_targets(), function (e) {\r\n e.preventDefault();\r\n if (!self.locked) {\r\n var settings = S('[' + self.attr_name() + '].open').data(self.attr_name(true) + '-init') || self.settings,\r\n bg_clicked = S(e.target)[0] === S('.' + settings.bg_class)[0];\r\n\r\n if (bg_clicked) {\r\n if (settings.close_on_background_click) {\r\n e.stopPropagation();\r\n } else {\r\n return;\r\n }\r\n }\r\n\r\n self.locked = true;\r\n self.close.call(self, bg_clicked ? S('[' + self.attr_name() + '].open:not(.toback)') : S(this).closest('[' + self.attr_name() + ']'));\r\n }\r\n });\r\n\r\n if (S('[' + self.attr_name() + ']', this.scope).length > 0) {\r\n S(this.scope)\r\n // .off('.reveal')\r\n .on('open.fndtn.reveal', this.settings.open)\r\n .on('opened.fndtn.reveal', this.settings.opened)\r\n .on('opened.fndtn.reveal', this.open_video)\r\n .on('close.fndtn.reveal', this.settings.close)\r\n .on('closed.fndtn.reveal', this.settings.closed)\r\n .on('closed.fndtn.reveal', this.close_video);\r\n } else {\r\n S(this.scope)\r\n // .off('.reveal')\r\n .on('open.fndtn.reveal', '[' + self.attr_name() + ']', this.settings.open)\r\n .on('opened.fndtn.reveal', '[' + self.attr_name() + ']', this.settings.opened)\r\n .on('opened.fndtn.reveal', '[' + self.attr_name() + ']', this.open_video)\r\n .on('close.fndtn.reveal', '[' + self.attr_name() + ']', this.settings.close)\r\n .on('closed.fndtn.reveal', '[' + self.attr_name() + ']', this.settings.closed)\r\n .on('closed.fndtn.reveal', '[' + self.attr_name() + ']', this.close_video);\r\n }\r\n\r\n return true;\r\n },\r\n\r\n // PATCH #3: turning on key up capture only when a reveal window is open\r\n key_up_on : function (scope) {\r\n var self = this;\r\n\r\n // PATCH #1: fixing multiple keyup event trigger from single key press\r\n self.S('body').off('keyup.fndtn.reveal').on('keyup.fndtn.reveal', function ( event ) {\r\n var open_modal = self.S('[' + self.attr_name() + '].open'),\r\n settings = open_modal.data(self.attr_name(true) + '-init') || self.settings ;\r\n // PATCH #2: making sure that the close event can be called only while unlocked,\r\n // so that multiple keyup.fndtn.reveal events don't prevent clean closing of the reveal window.\r\n if ( settings && event.which === 27 && settings.close_on_esc && !self.locked) { // 27 is the keycode for the Escape key\r\n self.close.call(self, open_modal);\r\n }\r\n });\r\n\r\n return true;\r\n },\r\n\r\n // PATCH #3: turning on key up capture only when a reveal window is open\r\n key_up_off : function (scope) {\r\n this.S('body').off('keyup.fndtn.reveal');\r\n return true;\r\n },\r\n\r\n open : function (target, ajax_settings) {\r\n var self = this,\r\n modal;\r\n\r\n if (target) {\r\n if (typeof target.selector !== 'undefined') {\r\n // Find the named node; only use the first one found, since the rest of the code assumes there's only one node\r\n modal = self.S('#' + target.data(self.data_attr('reveal-id'))).first();\r\n } else {\r\n modal = self.S(this.scope);\r\n\r\n ajax_settings = target;\r\n }\r\n } else {\r\n modal = self.S(this.scope);\r\n }\r\n\r\n var settings = modal.data(self.attr_name(true) + '-init');\r\n settings = settings || this.settings;\r\n\r\n\r\n if (modal.hasClass('open') && target !== undefined && target.attr('data-reveal-id') == modal.attr('id')) {\r\n return self.close(modal);\r\n }\r\n\r\n if (!modal.hasClass('open')) {\r\n var open_modal = self.S('[' + self.attr_name() + '].open');\r\n\r\n if (typeof modal.data('css-top') === 'undefined') {\r\n modal.data('css-top', parseInt(modal.css('top'), 10))\r\n .data('offset', this.cache_offset(modal));\r\n }\r\n\r\n modal.attr('tabindex','0').attr('aria-hidden','false');\r\n\r\n if(settings.no_scroll){//added 10/9/15, prevents annoying scroll positioning bug with position: absolute; reveals\r\n var $body = $('body');\r\n $body.on('open.fndtn.reveal', function(){\r\n $body.css('overflow', 'hidden')\r\n .off('open.fndtn.reveal');\r\n });\r\n }\r\n\r\n this.key_up_on(modal); // PATCH #3: turning on key up capture only when a reveal window is open\r\n\r\n // Prevent namespace event from triggering twice\r\n modal.on('open.fndtn.reveal', function(e) {\r\n if (e.namespace !== 'fndtn.reveal') return;\r\n });\r\n\r\n modal.on('open.fndtn.reveal').trigger('open.fndtn.reveal');\r\n\r\n\r\n if (open_modal.length < 1) {\r\n this.toggle_bg(modal, true);\r\n }\r\n\r\n if (typeof ajax_settings === 'string') {\r\n ajax_settings = {\r\n url : ajax_settings\r\n };\r\n }\r\n\r\n var openModal = function() {\r\n if(open_modal.length > 0) {\r\n if(settings.multiple_opened) {\r\n self.to_back(open_modal);\r\n } else {\r\n self.hide(open_modal, settings.css.close);\r\n }\r\n }\r\n\r\n // bl: add the open_modal that isn't already in the background to the openModals array\r\n if(settings.multiple_opened) {\r\n openModals.push(modal);\r\n }\r\n\r\n self.show(modal, settings.css.open);\r\n };\r\n\r\n if (typeof ajax_settings === 'undefined' || !ajax_settings.url) {\r\n openModal();\r\n } else {\r\n var old_success = typeof ajax_settings.success !== 'undefined' ? ajax_settings.success : null;\r\n $.extend(ajax_settings, {\r\n success : function (data, textStatus, jqXHR) {\r\n if ( $.isFunction(old_success) ) {\r\n var result = old_success(data, textStatus, jqXHR);\r\n if (typeof result == 'string') {\r\n data = result;\r\n }\r\n }\r\n\r\n if (typeof options !== 'undefined' && typeof options.replaceContentSel !== 'undefined') {\r\n modal.find(options.replaceContentSel).html(data);\r\n } else {\r\n modal.html(data);\r\n }\r\n\r\n self.S(modal).foundation('section', 'reflow');\r\n self.S(modal).children().foundation();\r\n\r\n openModal();\r\n }\r\n });\r\n\r\n // check for if user initalized with error callback\r\n if (settings.on_ajax_error !== $.noop) {\r\n $.extend(ajax_settings, {\r\n error : settings.on_ajax_error\r\n });\r\n }\r\n\r\n $.ajax(ajax_settings);\r\n }\r\n }\r\n self.S(window).trigger('resize');\r\n },\r\n\r\n close : function (modal) {\r\n var modal = modal && modal.length ? modal : this.S(this.scope),\r\n open_modals = this.S('[' + this.attr_name() + '].open'),\r\n settings = modal.data(this.attr_name(true) + '-init') || this.settings,\r\n self = this;\r\n\r\n if (open_modals.length > 0) {\r\n\r\n modal.removeAttr('tabindex','0').attr('aria-hidden','true');\r\n\r\n if(settings.no_scroll){//added 10/9/15, prevents annoying scroll positioning bug with position: absolute; reveals\r\n var $body = $('body');\r\n $body.on('close.fndtn.reveal', function(){\r\n $body.css('overflow', 'auto')\r\n .off('close.fndtn.reveal');\r\n });\r\n }\r\n\r\n this.locked = true;\r\n this.key_up_off(modal); // PATCH #3: turning on key up capture only when a reveal window is open\r\n\r\n modal.trigger('close.fndtn.reveal');\r\n\r\n if ((settings.multiple_opened && open_modals.length === 1) || !settings.multiple_opened || modal.length > 1) {\r\n self.toggle_bg(modal, false);\r\n self.to_front(modal);\r\n }\r\n\r\n if (settings.multiple_opened) {\r\n var isCurrent = modal.is(':not(.toback)');\r\n self.hide(modal, settings.css.close, settings);\r\n if(isCurrent) {\r\n // remove the last modal since it is now closed\r\n openModals.pop();\r\n } else {\r\n // if this isn't the current modal, then find it in the array and remove it\r\n openModals = $.grep(openModals, function(elt) {\r\n var isThis = elt[0]===modal[0];\r\n if(isThis) {\r\n // since it's not currently in the front, put it in the front now that it is hidden\r\n // so that if it's re-opened, it won't be .toback\r\n self.to_front(modal);\r\n }\r\n return !isThis;\r\n });\r\n }\r\n // finally, show the next modal in the stack, if there is one\r\n if(openModals.length>0) {\r\n self.to_front(openModals[openModals.length - 1]);\r\n }\r\n } else {\r\n self.hide(open_modals, settings.css.close, settings);\r\n }\r\n }\r\n },\r\n\r\n close_targets : function () {\r\n var base = '.' + this.settings.dismiss_modal_class;\r\n\r\n if (this.settings.close_on_background_click) {\r\n return base + ', .' + this.settings.bg_class;\r\n }\r\n\r\n return base;\r\n },\r\n\r\n toggle_bg : function (modal, state) {\r\n if (this.S('.' + this.settings.bg_class).length === 0) {\r\n this.settings.bg = $('
', {'class': this.settings.bg_class})\r\n .appendTo('body').hide();\r\n }\r\n\r\n var visible = this.settings.bg.filter(':visible').length > 0;\r\n if ( state != visible ) {\r\n if ( state == undefined ? visible : !state ) {\r\n this.hide(this.settings.bg);\r\n } else {\r\n this.show(this.settings.bg);\r\n }\r\n }\r\n },\r\n\r\n show : function (el, css) {\r\n // is modal\r\n if (css) {\r\n var settings = el.data(this.attr_name(true) + '-init') || this.settings,\r\n root_element = settings.root_element,\r\n context = this;\r\n\r\n if (el.parent(root_element).length === 0) {\r\n var placeholder = el.wrap('
').parent();\r\n\r\n el.on('closed.fndtn.reveal.wrapped', function () {\r\n el.detach().appendTo(placeholder);\r\n el.unwrap().unbind('closed.fndtn.reveal.wrapped');\r\n });\r\n\r\n el.detach().appendTo(root_element);\r\n }\r\n\r\n var animData = getAnimationData(settings.animation);\r\n if (!animData.animate) {\r\n this.locked = false;\r\n }\r\n if (animData.pop) {\r\n css.top = $(window).scrollTop() - el.data('offset') + 'px';\r\n var end_css = {\r\n top: $(window).scrollTop() + el.data('css-top') + 'px',\r\n opacity: 1\r\n };\r\n\r\n return setTimeout(function () {\r\n return el\r\n .css(css)\r\n .animate(end_css, settings.animation_speed, 'linear', function () {\r\n context.locked = false;\r\n el.trigger('opened.fndtn.reveal');\r\n })\r\n .addClass('open');\r\n }, settings.animation_speed / 2);\r\n }\r\n\r\n css.top = $(window).scrollTop() + el.data('css-top') + 'px';\r\n\r\n if (animData.fade) {\r\n var end_css = {opacity: 1};\r\n\r\n return setTimeout(function () {\r\n return el\r\n .css(css)\r\n .animate(end_css, settings.animation_speed, 'linear', function () {\r\n context.locked = false;\r\n el.trigger('opened.fndtn.reveal');\r\n })\r\n .addClass('open');\r\n }, settings.animation_speed / 2);\r\n }\r\n\r\n return el.css(css).show().css({opacity : 1}).addClass('open').trigger('opened.fndtn.reveal');\r\n }\r\n\r\n var settings = this.settings;\r\n\r\n // should we animate the background?\r\n if (getAnimationData(settings.animation).fade) {\r\n return el.fadeIn(settings.animation_speed / 2);\r\n }\r\n\r\n this.locked = false;\r\n\r\n return el.show();\r\n },\r\n\r\n to_back : function(el) {\r\n el.addClass('toback');\r\n },\r\n\r\n to_front : function(el) {\r\n el.removeClass('toback');\r\n },\r\n\r\n hide : function (el, css) {\r\n // is modal\r\n if (css) {\r\n var settings = el.data(this.attr_name(true) + '-init'),\r\n context = this;\r\n settings = settings || this.settings;\r\n\r\n var animData = getAnimationData(settings.animation);\r\n if (!animData.animate) {\r\n this.locked = false;\r\n }\r\n if (animData.pop) {\r\n var end_css = {\r\n top: - $(window).scrollTop() - el.data('offset') + 'px',\r\n opacity: 0\r\n };\r\n\r\n return setTimeout(function () {\r\n return el\r\n .animate(end_css, settings.animation_speed, 'linear', function () {\r\n context.locked = false;\r\n el.css(css).trigger('closed.fndtn.reveal');\r\n })\r\n .removeClass('open');\r\n }, settings.animation_speed / 2);\r\n }\r\n\r\n if (animData.fade) {\r\n var end_css = {opacity : 0};\r\n\r\n return setTimeout(function () {\r\n return el\r\n .animate(end_css, settings.animation_speed, 'linear', function () {\r\n context.locked = false;\r\n el.css(css).trigger('closed.fndtn.reveal');\r\n })\r\n .removeClass('open');\r\n }, settings.animation_speed / 2);\r\n }\r\n\r\n return el.hide().css(css).removeClass('open').trigger('closed.fndtn.reveal');\r\n }\r\n\r\n var settings = this.settings;\r\n\r\n // should we animate the background?\r\n if (getAnimationData(settings.animation).fade) {\r\n return el.fadeOut(settings.animation_speed / 2);\r\n }\r\n\r\n return el.hide();\r\n },\r\n\r\n close_video : function (e) {\r\n var video = $('.flex-video', e.target),\r\n iframe = $('iframe', video);\r\n\r\n if (iframe.length > 0) {\r\n iframe.attr('data-src', iframe[0].src);\r\n iframe.attr('src', iframe.attr('src'));\r\n video.hide();\r\n }\r\n },\r\n\r\n open_video : function (e) {\r\n var video = $('.flex-video', e.target),\r\n iframe = video.find('iframe');\r\n\r\n if (iframe.length > 0) {\r\n var data_src = iframe.attr('data-src');\r\n if (typeof data_src === 'string') {\r\n iframe[0].src = iframe.attr('data-src');\r\n } else {\r\n var src = iframe[0].src;\r\n iframe[0].src = undefined;\r\n iframe[0].src = src;\r\n }\r\n video.show();\r\n }\r\n },\r\n\r\n data_attr : function (str) {\r\n if (this.namespace.length > 0) {\r\n return this.namespace + '-' + str;\r\n }\r\n\r\n return str;\r\n },\r\n\r\n cache_offset : function (modal) {\r\n var offset = modal.show().height() + parseInt(modal.css('top'), 10) + modal.scrollY;\r\n\r\n modal.hide();\r\n\r\n return offset;\r\n },\r\n\r\n off : function () {\r\n $(this.scope).off('.fndtn.reveal');\r\n },\r\n\r\n reflow : function () {}\r\n };\r\n\r\n /*\r\n * getAnimationData('popAndFade') // {animate: true, pop: true, fade: true}\r\n * getAnimationData('fade') // {animate: true, pop: false, fade: true}\r\n * getAnimationData('pop') // {animate: true, pop: true, fade: false}\r\n * getAnimationData('foo') // {animate: false, pop: false, fade: false}\r\n * getAnimationData(null) // {animate: false, pop: false, fade: false}\r\n */\r\n function getAnimationData(str) {\r\n var fade = /fade/i.test(str);\r\n var pop = /pop/i.test(str);\r\n return {\r\n animate : fade || pop,\r\n pop : pop,\r\n fade : fade\r\n };\r\n }\r\n}(jQuery, window, window.document));\r\n","// automatic accessible nav\r\n// include this file in your gulp file and then initialize on any PARENT element of any/or multiple navs\r\n\r\n// parameters\r\n// desktop: pixel value without the 'px', set to desktop nav size\r\n// spans: 'show'|'hide',\r\n// level2position: 'horizontal-left'|'horizontal-right'|'vertical-top'|'vertical-bottom',\r\n// level3position: 'horizontal-left'|'horizontal-right'|'vertical-top'|'vertical-bottom'\r\n\r\n// example\r\n// $('.nav-primary').accessibleNav({\r\n// desktop: 1025,\r\n// spans: 'hide',\r\n// level2position: 'vertical-bottom',\r\n// level3position: 'horizontal-right'\r\n// });\r\n\r\n(function ($) {\r\n $.fn.accessibleNav = function (options) {\r\n\r\n // default plugin settings\r\n var settings = $.extend({\r\n desktop: 1024,\r\n spans: 'show',\r\n level2position: 'vertical-bottom',\r\n level3position: 'horizontal-right'\r\n }, options);\r\n\r\n // gather plugin settings\r\n var accessibleNavContainer = this;\r\n var desktop = settings.desktop;\r\n var screen;\r\n // if (mobile === null && phone === null && tablet === null) {\r\n if ($(window).width() >= desktop) {\r\n var spans = settings.spans;\r\n var level2position = settings.level2position;\r\n var level3position = settings.level3position;\r\n } else {\r\n spans = 'show';\r\n level2position = 'vertical-bottom';\r\n level3position = 'vertical-bottom';\r\n }\r\n\r\n var resizeTimer;\r\n $(window).on('resize', function (e) {\r\n clearTimeout(resizeTimer);\r\n resizeTimer = setTimeout(function () {\r\n screen = $(window).width();\r\n console.log(screen);\r\n }, 100);\r\n });\r\n\r\n // insert togglers\r\n function togglers() {\r\n // add focusable spans to each list item with a child list\r\n $('li', accessibleNavContainer).each(function () {\r\n if ($(this).hasClass('has_children')) {\r\n var togglerLabel = $('> a', this).text();\r\n $('> a', this).after('');\r\n }\r\n });\r\n }\r\n\r\n // toggler click functions\r\n function togglerClick() {\r\n // open and close subnav when toggler is clicked\r\n if (screen >= desktop) {\r\n $('span.toggler').on('click', function () {\r\n if ($(this).next('ul').hasClass('open')) {\r\n $(this).removeClass('open');\r\n $(this).next('ul').removeClass('open').hide();\r\n $(this).focus();\r\n } else {\r\n $('span.toggler').not(this).removeClass('open');\r\n $(this).addClass('open');\r\n $(this).next('ul').addClass('open').show();\r\n }\r\n });\r\n } else {\r\n $('span.toggler').on('click', function () {\r\n if ($(this).next('ul').hasClass('open')) {\r\n $(this).removeClass('open');\r\n $(this).next('ul').removeClass('open').hide();\r\n $(this).focus();\r\n } else {\r\n $(this).addClass('open');\r\n $(this).next('ul').addClass('open').show();\r\n }\r\n });\r\n }\r\n\r\n }\r\n\r\n // toggler key functions\r\n function togglerKeys() {\r\n // open subnav if enter key is pressed when toggler is focused\r\n $('span.toggler').on('keypress', function (e) {\r\n if (e.which === 13) {\r\n if ($(this).next('ul').hasClass('open')) {\r\n $(this).prev('a').removeClass('focus');\r\n $(this).parent().children('ul').removeClass('open').hide();\r\n $(this).focus();\r\n } else {\r\n $(this).prev('a').addClass('focus');\r\n $(this).parent().children('ul').addClass('open').show();\r\n $($(this).next('ul').find('a')[0]).focus();\r\n }\r\n }\r\n });\r\n // close subnav if escape key is pressed when toggler is focused\r\n $('span.toggler').on('keyup', function (e) {\r\n if (e.keyCode === 27) {\r\n $(this).prev('a').removeClass('focus');\r\n $(this).parent().children('ul').removeClass('open').hide();\r\n }\r\n });\r\n // if span parameter is set to 'hide'\r\n if (spans === 'hide') {\r\n // hide togglers\r\n $('> ul > li > span.toggler', accessibleNavContainer).hide();\r\n // when tab is pressed if a nav item with children is focus show the toggler or if focusout hide the toggler\r\n $(document).keyup(function (e) {\r\n if (e.which === 9 && !e.shiftKey) {\r\n $('> ul > li.has_children > a', accessibleNavContainer).on('focus', function (e) {\r\n $(this).next('span.toggler').addClass('visible').show();\r\n });\r\n $('> ul > li > span.toggler', accessibleNavContainer).on('focusout', function (e) {\r\n if (!$(this).prev('a').hasClass('focus')) {\r\n $(this).removeClass('visible').hide();\r\n }\r\n });\r\n }\r\n });\r\n }\r\n }\r\n\r\n // link key functions\r\n function linkKeys() {\r\n // arrows to focus through subnav\r\n $('> ul ul a', accessibleNavContainer).on('keydown', function (e) {\r\n if (e.keyCode === 40) {\r\n $(this).parent('li').next('li').find('a').focus();\r\n e.preventDefault();\r\n } else if (e.keyCode === 38) {\r\n $(this).parent('li').prev('li').find('a').focus();\r\n e.preventDefault();\r\n }\r\n });\r\n // if a subnav element is focused and escape key is pressed, collapse that subnav and focus back on the toggler\r\n $(document).on('keyup', function (e) {\r\n $('> ul ul a, > ul ul span.toggler', accessibleNavContainer).each(function () {\r\n if ($(this).is(':focus')) {\r\n if (e.keyCode === 27) {\r\n $(this).closest('ul').removeClass('open').toggle().removeAttr('style').parent('li').find('a.focus').removeClass('focus').next('span.toggler').focus();\r\n }\r\n }\r\n });\r\n });\r\n // if first link in level2 subnav is focused and appropriate key is pressed, collapse that subnav and focus back on the toggler\r\n $($('.ul2 > li > a', accessibleNavContainer)[0]).on('keydown', function (e) {\r\n if (level2position === 'vertical-bottom') {\r\n if (e.keyCode === 38) {\r\n $(this).closest('ul').removeClass('open').hide().removeAttr('style').parent('li').find('a.focus').removeClass('focus').next('span.toggler').focus();\r\n e.preventDefault();\r\n }\r\n } else if (level2position === 'vertical-top') {\r\n if (e.keyCode === 40) {\r\n $(this).closest('ul').removeClass('open').hide().removeAttr('style').parent('li').find('a.focus').removeClass('focus').next('span.toggler').focus();\r\n e.preventDefault();\r\n }\r\n } else if (level2position === 'horizontal-left') {\r\n if (e.keyCode === 39) {\r\n $(this).closest('ul').removeClass('open').hide().removeAttr('style').parent('li').find('a.focus').removeClass('focus').next('span.toggler').focus();\r\n e.preventDefault();\r\n }\r\n } else if (level2position === 'horizontal-right') {\r\n if (e.keyCode === 37) {\r\n $(this).closest('ul').removeClass('open').hide().removeAttr('style').parent('li').find('a.focus').removeClass('focus').next('span.toggler').focus();\r\n e.preventDefault();\r\n }\r\n } else {\r\n if (e.keyCode === 38) {\r\n $(this).closest('ul').removeClass('open').hide().removeAttr('style').parent('li').find('a.focus').removeClass('focus').next('span.toggler').focus();\r\n e.preventDefault();\r\n }\r\n }\r\n });\r\n // if first link in level3 subnav is focused and up key is pressed, collapse that subnav and focus back on the toggler\r\n $($('.ul3 > li > a', accessibleNavContainer)[0]).on('keydown', function (e) {\r\n if (level3position === 'vertical-bottom') {\r\n if (e.keyCode === 38) {\r\n $(this).closest('ul').removeClass('open').hide().removeAttr('style').parent('li').find('a.focus').removeClass('focus').next('span.toggler').focus();\r\n e.preventDefault();\r\n }\r\n } else if (level3position === 'vertical-top') {\r\n if (e.keyCode === 40) {\r\n $(this).closest('ul').removeClass('open').hide().removeAttr('style').parent('li').find('a.focus').removeClass('focus').next('span.toggler').focus();\r\n e.preventDefault();\r\n }\r\n } else if (level3position === 'horizontal-left') {\r\n if (e.keyCode === 39) {\r\n $(this).closest('ul').removeClass('open').hide().removeAttr('style').parent('li').find('a.focus').removeClass('focus').next('span.toggler').focus();\r\n e.preventDefault();\r\n }\r\n } else if (level3position === 'horizontal-right') {\r\n if (e.keyCode === 37) {\r\n $(this).closest('ul').removeClass('open').hide().removeAttr('style').parent('li').find('a.focus').removeClass('focus').next('span.toggler').focus();\r\n e.preventDefault();\r\n }\r\n } else {\r\n if (e.keyCode === 38) {\r\n $(this).closest('ul').removeClass('open').hide().removeAttr('style').parent('li').find('a.focus').removeClass('focus').next('span.toggler').focus();\r\n e.preventDefault();\r\n }\r\n }\r\n });\r\n // when focusing out of last link or toggler in list\r\n // ul2\r\n $('.ul2 > li:last-child > a').on('focusout', function () {\r\n if ($(this).next('span.toggler').length) {\r\n $(this).next('span.toggler').focus();\r\n } else {\r\n if (spans === 'hide') {\r\n $(this).closest('ul').parent('li').find('span.toggler').removeClass('visible').hide();\r\n }\r\n $(this).closest('ul').removeClass('open').hide().removeAttr('style').parent('li').find('a.focus').removeClass('focus').parent('li').next('li > a').focus();\r\n }\r\n });\r\n $('.ul2 > li:last-child > a + span.toggler').on('focusout', function () {\r\n if (spans === 'hide') {\r\n $(this).closest('ul').parent('li').find('span.toggler').removeClass('visible').hide();\r\n }\r\n $(this).closest('ul').removeClass('open').hide().removeAttr('style').parent('li').find('a.focus').removeClass('focus').parent('li').next('li > a').focus();\r\n });\r\n // ul3\r\n $('.ul3 > li:last-child > a').on('focusout', function () {\r\n if ($(this).next('span.toggler').length) {\r\n $(this).next('span.toggler').focus();\r\n } else {\r\n // $(this).closest('ul').parent('li').find('span.toggler').removeClass('visible').hide();\r\n $(this).closest('ul').removeClass('open').hide().removeAttr('style').parent('li').find('a.focus').removeClass('focus').parent('li').next('li > a').focus();\r\n }\r\n });\r\n $('.ul3 > li:last-child > a + span.toggler').on('focusout', function () {\r\n // $(this).closest('ul').parent('li').find('span.toggler').removeClass('visible').hide();\r\n $(this).closest('ul').removeClass('open').hide().removeAttr('style').parent('li').find('a.focus').removeClass('focus').parent('li').next('li > a').focus();\r\n });\r\n }\r\n\r\n // clicks outside of the nav elements\r\n function outsideClicks() {\r\n // when clicking outside of any element within or OF nav-primary, close the subnavs\r\n $(document).click(function (event) {\r\n if (!$(event.target).closest(accessibleNavContainer).length) {\r\n if ($('> ul ul', accessibleNavContainer).is(':visible')) {\r\n $('> ul ul', accessibleNavContainer).removeClass('open').hide().removeAttr('style');\r\n }\r\n // if span parameter is set to 'hide'\r\n if (spans === 'hide') {\r\n $('> ul > li > span.toggler').hide();\r\n }\r\n }\r\n });\r\n }\r\n\r\n // initialize functions in order\r\n togglers();\r\n togglerClick();\r\n togglerKeys();\r\n linkKeys();\r\n outsideClicks();\r\n };\r\n}(jQuery));","jQuery(document).ready(function ($) {\r\n $('.accordions').each(function () {\r\n var $this = $(this);\r\n $this.addClass('active');\r\n });\r\n function accordionTitles() {\r\n var r = $.Deferred();\r\n var titleCount = 0;\r\n $('.accordions .accordion-title').each(function () {\r\n titleCount++;\r\n var $this = $(this);\r\n var id = 'accordion-' + titleCount;\r\n if ($this.hasClass('open')) {\r\n $this.addClass('is-active');\r\n if ($this.is('div')) {\r\n $('h2', $this).wrapInner('