{"version":3,"sources":["article-columns.js","article-modals.js","jquery.cycle2.js","jquery.cycle2.swipe.js","jquery.cycle2.center.js","jquery.cycle2.carousel.js","enquire.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;ACnBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AC9OA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;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;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;ACvSA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;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":["// $.fn.articleColumns = function () {\r\n$.articleColumns = function () {\r\n jQuery(document).ready(function ($) {\r\n $(':not(.col-2) + .col-2, * > .col-2:first-of-type').each(function () {\r\n $(this).nextUntil(':not(.col-2)').addBack().wrapAll('
');\r\n });\r\n $(':not(.col-3) + .col-3, * > .col-3:first-of-type').each(function () {\r\n $(this).nextUntil(':not(.col-3)').addBack().wrapAll('
');\r\n });\r\n $(':not(.col-4) + .col-4, * > .col-4:first-of-type').each(function () {\r\n $(this).nextUntil(':not(.col-4)').addBack().wrapAll('
');\r\n });\r\n $(':not(.col-5) + .col-5, * > .col-5:first-of-type').each(function () {\r\n $(this).nextUntil(':not(.col-5)').addBack().wrapAll('
');\r\n });\r\n $(':not(.col-6) + .col-6, * > .col-6:first-of-type').each(function () {\r\n $(this).nextUntil(':not(.col-6)').addBack().wrapAll('
');\r\n });\r\n });\r\n}","// create modal markup\r\n//
\r\n// \t
\r\n//\t\t

Sample Modal Title

\r\n//\t\t×\r\n// \t
\r\n//
\r\n// create modal link\r\n// Open Sample Modal\r\n// OR to open a modal without moving its content in the dom\r\n// Open Sample Modal\r\njQuery(function () {\r\n\r\n\t// global variables\r\n\tvar modalLink = undefined;\r\n\tvar modal;\r\n\tvar modalURL;\r\n\tvar modalID;\r\n\tvar modalTitle;\r\n\tvar modalCopy;\r\n\tvar modalFocus;\r\n\tvar modalHeight;\r\n\r\n\t// add overlay\r\n\t$('body').append('
');\r\n\r\n\t// collect all modals\r\n\tvar modals = [];\r\n\t$('.modal').each(function () {\r\n\t\t$(this).attr('hidden', 'hidden').attr('role', 'dialog').attr('tabindex', '-1');\r\n\t\tmodalTitle = $('.modal-content > h1', this).text();\r\n\t\t$(this).attr('aria-label', modalTitle);\r\n\t\tmodals.push($(this).attr('id'));\r\n\t});\r\n\r\n\t// if url has hash for modal open that modal\r\n\tif (window.location.hash) {\r\n\t\tvar modalHash = window.location.hash.substr(1);\r\n\t\tif (jQuery.inArray(modalHash, modals) != '-1') {\r\n\t\t\tmodalURL = '#' + modalHash;\r\n\t\t\tmodalID = modalHash;\r\n\t\t\tmodalCopy = $(modalURL).clone();\r\n\t\t\tmodalHeight = $(modalURL).attr('data-modal-height');\r\n\t\t\tif (typeof modalHeight !== typeof undefined && modalHeight !== false) {\r\n\t\t\t\t$(modalURL).css({\r\n\t\t\t\t\theight: modalHeight + 'px',\r\n\t\t\t\t\t'min-height': 'calc(' + modalHeight + 'px - 40px)'\r\n\t\t\t\t})\r\n\t\t\t}\r\n\t\t\tif ($(modalURL).hasClass('modal-inline')) {\r\n\t\t\t\t$(modalURL).parent().addClass('modal-inline-parent');\r\n\t\t\t\t$('html, body').toggleClass('modal-open');\r\n\t\t\t\t$('.modal-overlay').toggleClass('show-modal modal-inline');\r\n\t\t\t\t$(modalURL).toggleClass('show-modal');\r\n\t\t\t\t$(modalURL).removeAttr('hidden').attr('aria-hidden', 'false').attr('tabindex', '0');\r\n\t\t\t\t$('.modal-content .close-modal').addClass('modal-inline').attr('tabindex', '0');\r\n\t\t\t\t$(modalURL).focus();\r\n\t\t\t\tmodalFocus = $(modalURL + ' > .modal-content');\r\n\t\t\t\tfocusable(modalFocus);\r\n\t\t\t} else {\r\n\t\t\t\tmodalCopy = $(modalURL).clone();\r\n\t\t\t\t$(modalURL).replaceWith('');\r\n\t\t\t\tmodal(modalURL);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t$(document).on('click', '.open-modal', function (e) {\r\n\t\te.preventDefault();\r\n\t\t// set variables\r\n\t\tmodalLink = $(this);\r\n\t\tmodalURL = $(this).attr('href');\r\n\t\tmodalID = modalURL.replace(/^#/, '');\r\n\t\tmodalHeight = $(modalURL).attr('data-modal-height');\r\n\r\n\t\t// open modal if it exists in modals array\r\n\t\tif (jQuery.inArray(modalID, modals) != '-1') {\r\n\t\t\tif (typeof modalHeight !== typeof undefined && modalHeight !== false) {\r\n\t\t\t\t$(modalURL).css({\r\n\t\t\t\t\theight: modalHeight + 'px',\r\n\t\t\t\t\t'min-height': 'calc(' + modalHeight + 'px - 40px)'\r\n\t\t\t\t})\r\n\t\t\t}\r\n\t\t\tif ($(modalURL).hasClass('modal-inline')) {\r\n\t\t\t\t$(modalURL).parent().addClass('modal-inline-parent');\r\n\t\t\t\t$('html, body').toggleClass('modal-open');\r\n\t\t\t\t$('.modal-overlay').toggleClass('show-modal modal-inline');\r\n\t\t\t\t$(modalURL).toggleClass('show-modal');\r\n\t\t\t\t$(modalURL).removeAttr('hidden').attr('aria-hidden', 'false').attr('tabindex', '0');\r\n\t\t\t\t$('.modal-content .close-modal').addClass('modal-inline').attr('tabindex', '0');\r\n\t\t\t\t$(modalURL).focus();\r\n\t\t\t\tmodalFocus = $(modalURL + ' > .modal-content');\r\n\t\t\t\tfocusable(modalFocus);\r\n\t\t\t} else {\r\n\t\t\t\tmodalCopy = $(modalURL).clone();\r\n\t\t\t\t$(modalURL).replaceWith('');\r\n\t\t\t\tmodal(modalURL);\r\n\t\t\t}\r\n\t\t}\r\n\t});\r\n\r\n\t// modal\r\n\tfunction modal() {\r\n\t\t$('.modal-overlay').after(modalCopy);\r\n\t\t$('html, body').toggleClass('modal-open');\r\n\t\t$('.modal-overlay').toggleClass('show-modal');\r\n\t\t$(modalURL).toggleClass('show-modal');\r\n\t\t$(modalURL).removeAttr('hidden').attr('aria-hidden', 'false').attr('tabindex', '0');\r\n\t\t$('.modal-content .close-modal').attr('tabindex', '0');\r\n\t\t$(modalURL).focus();\r\n\t\tmodalFocus = $(modalURL + ' > .modal-content');\r\n\t\tfocusable(modalFocus);\r\n\t}\r\n\r\n\t// find focusable items\r\n\tfunction focusable() {\r\n\t\tvar modalFocusable = $('span.close-modal, a[href], area[href], input:not([disabled]), select:not([disabled]), textarea:not([disabled]), button:not([disabled]), iframe, object, embed, *[tabindex], *[contenteditable]', modalFocus);\r\n\t\tvar modalFocusableFirst = modalFocusable.first();\r\n\t\tvar modalFocusableLast = modalFocusable.last();\r\n\t\tmodalFocusableLast.on('keydown', function (e) {\r\n\t\t\tif ((e.which === 9 && !e.shiftKey)) {\r\n\t\t\t\te.preventDefault();\r\n\t\t\t\tmodalFocusableFirst.focus();\r\n\t\t\t}\r\n\t\t});\r\n\t\tmodalFocusableFirst.on('keydown', function (e) {\r\n\t\t\tif ((e.which === 9 && e.shiftKey)) {\r\n\t\t\t\te.preventDefault();\r\n\t\t\t\tmodalFocusableLast.focus();\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\r\n\t// focus to modal content\r\n\t$(document).keydown(function (e) {\r\n\t\tif ($(e.target).is('.modal')) {\r\n\t\t\tif (e.keyCode === 9) {\r\n\t\t\t\tmodalFocus = $(modalURL + ' > .modal-content');\r\n\t\t\t\tfocusable(modalFocus);\r\n\t\t\t}\r\n\t\t}\r\n\t});\r\n\r\n\t// close when clicking overlay / outside of modal window\r\n\t$('.modal-overlay').click(function () {\r\n\t\t$('html, body').removeClass('modal-open');\r\n\t\t$(this).removeClass('show-modal');\r\n\t\tif (!$(this).hasClass('modal-inline')) {\r\n\t\t\tmodalCopy.remove();\r\n\t\t\t$('span[data-modalid=\"' + modalID + '\"]').replaceWith(modalCopy);\r\n\t\t\t$(modalURL).attr('hidden', 'hidden').attr('aria-hidden', 'true').attr('tabindex', '-1');\r\n\t\t\t$('.modal').removeClass('show-modal');\r\n\t\t} else {\r\n\t\t\t$(modalURL).parent().removeClass('modal-inline-parent');\r\n\t\t\t$(modalURL).removeClass('show-modal');\r\n\t\t\t$(modalURL).attr('hidden', 'hidden').attr('aria-hidden', 'true').attr('tabindex', '-1');\r\n\t\t}\r\n\t\tif (modalLink !== undefined) {\r\n\t\t\tmodalLink.focus();\r\n\t\t\tmodalLink = undefined;\r\n\t\t}\r\n\t});\r\n\r\n\t// dont close modal if clicking anything but close button\r\n\t$('.modal-content *:not(.close-modal)').click(function (e) {\r\n\t\te.stopPropagation();\r\n\t});\r\n\r\n\t// close modal with button\r\n\t$(document).on('click', '.close-modal', function () {\r\n\t\t$('html, body').removeClass('modal-open');\r\n\t\t$('.modal-overlay').removeClass('show-modal');\r\n\t\tif (!$(this).hasClass('modal-inline')) {\r\n\t\t\tmodalCopy.remove();\r\n\t\t\t$('span[data-modalid=\"' + modalID + '\"]').replaceWith(modalCopy);\r\n\t\t\t$(modalURL).attr('hidden', 'hidden').attr('aria-hidden', 'true').attr('tabindex', '-1');\r\n\t\t\t$('.modal').removeClass('show-modal');\r\n\t\t} else {\r\n\t\t\t$(modalURL).parent().removeClass('modal-inline-parent');\r\n\t\t\t$(modalURL).removeClass('show-modal');\r\n\t\t\t$(modalURL).attr('hidden', 'hidden').attr('aria-hidden', 'true').attr('tabindex', '-1');\r\n\r\n\t\t}\r\n\t\tif (modalLink != undefined) {\r\n\t\t\tmodalLink.focus();\r\n\t\t\tmodalLink = undefined;\r\n\t\t}\r\n\t});\r\n\r\n\t// close modal if close is focused and enter key pressed\r\n\t// focus to modal content\r\n\t$(document).keydown(function (e) {\r\n\t\tif ($(e.target).is('.close-modal')) {\r\n\t\t\tif (e.keyCode === 13) {\r\n\t\t\t\t$('html, body').removeClass('modal-open');\r\n\t\t\t\t$('.modal-overlay').removeClass('show-modal');\r\n\t\t\t\tif (!$('.modal-overlay').hasClass('modal-inline')) {\r\n\t\t\t\t\tmodalCopy.remove();\r\n\t\t\t\t\t$('span[data-modalid=\"' + modalID + '\"]').replaceWith(modalCopy);\r\n\t\t\t\t\t$(modalURL).attr('hidden', 'hidden').attr('aria-hidden', 'true').attr('tabindex', '-1');\r\n\t\t\t\t\t$('.modal').removeClass('show-modal');\r\n\t\t\t\t} else {\r\n\t\t\t\t\t$(modalURL).parent().removeClass('modal-inline-parent');\r\n\t\t\t\t\t$(modalURL).removeClass('show-modal');\r\n\t\t\t\t\t$(modalURL).attr('hidden', 'hidden').attr('aria-hidden', 'true').attr('tabindex', '-1');\r\n\t\t\t\t}\r\n\t\t\t\tif (modalLink !== undefined) {\r\n\t\t\t\t\tmodalLink.focus();\r\n\t\t\t\t\tmodalLink = undefined;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t});\r\n\r\n\t// close modal with escape key\r\n\t$(document).on('keyup', function (e) {\r\n\t\tif (e.keyCode === 27) {\r\n\t\t\te.preventDefault();\r\n\t\t\tif ($('body').hasClass('modal-open')) {\r\n\t\t\t\t$('html, body').removeClass('modal-open');\r\n\t\t\t\t$('.modal-overlay').removeClass('show-modal');\r\n\t\t\t\tif (!$('.modal-overlay').hasClass('modal-inline')) {\r\n\t\t\t\t\tmodalCopy.remove();\r\n\t\t\t\t\t$('span[data-modalid=\"' + modalID + '\"]').replaceWith(modalCopy);\r\n\t\t\t\t\t$(modalURL).attr('hidden', 'hidden').attr('aria-hidden', 'true').attr('tabindex', '-1');\r\n\t\t\t\t\t$('.modal').removeClass('show-modal');\r\n\t\t\t\t} else {\r\n\t\t\t\t\t$(modalURL).parent().removeClass('modal-inline-parent');\r\n\t\t\t\t\t$(modalURL).removeClass('show-modal');\r\n\t\t\t\t\t$(modalURL).attr('hidden', 'hidden').attr('aria-hidden', 'true').attr('tabindex', '-1');\r\n\t\t\t\t}\r\n\t\t\t\tif (modalLink !== undefined) {\r\n\t\t\t\t\tmodalLink.focus();\r\n\t\t\t\t\tmodalLink = undefined;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t});\r\n});","/*!\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 * enquire.js v2.1.2 - Awesome Media Queries in JavaScript\r\n * Copyright (c) 2014 Nick Williams - http://wicky.nillia.ms/enquire.js\r\n * License: MIT (http://www.opensource.org/licenses/mit-license.php)\r\n */\r\n\r\n;(function (name, context, factory) {\r\n\tvar matchMedia = window.matchMedia;\r\n\r\n\tif (typeof module !== 'undefined' && module.exports) {\r\n\t\tmodule.exports = factory(matchMedia);\r\n\t}\r\n\telse if (typeof define === 'function' && define.amd) {\r\n\t\tdefine(function() {\r\n\t\t\treturn (context[name] = factory(matchMedia));\r\n\t\t});\r\n\t}\r\n\telse {\r\n\t\tcontext[name] = factory(matchMedia);\r\n\t}\r\n}('enquire', this, function (matchMedia) {\r\n\r\n\t'use strict';\r\n\r\n /*jshint unused:false */\r\n /**\r\n * Helper function for iterating over a collection\r\n *\r\n * @param collection\r\n * @param fn\r\n */\r\n function each(collection, fn) {\r\n var i = 0,\r\n length = collection.length,\r\n cont;\r\n\r\n for(i; i < length; i++) {\r\n cont = fn(collection[i], i);\r\n if(cont === false) {\r\n break; //allow early exit\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * Helper function for determining whether target object is an array\r\n *\r\n * @param target the object under test\r\n * @return {Boolean} true if array, false otherwise\r\n */\r\n function isArray(target) {\r\n return Object.prototype.toString.apply(target) === '[object Array]';\r\n }\r\n\r\n /**\r\n * Helper function for determining whether target object is a function\r\n *\r\n * @param target the object under test\r\n * @return {Boolean} true if function, false otherwise\r\n */\r\n function isFunction(target) {\r\n return typeof target === 'function';\r\n }\r\n\r\n /**\r\n * Delegate to handle a media query being matched and unmatched.\r\n *\r\n * @param {object} options\r\n * @param {function} options.match callback for when the media query is matched\r\n * @param {function} [options.unmatch] callback for when the media query is unmatched\r\n * @param {function} [options.setup] one-time callback triggered the first time a query is matched\r\n * @param {boolean} [options.deferSetup=false] should the setup callback be run immediately, rather than first time query is matched?\r\n * @constructor\r\n */\r\n function QueryHandler(options) {\r\n this.options = options;\r\n !options.deferSetup && this.setup();\r\n }\r\n QueryHandler.prototype = {\r\n\r\n /**\r\n * coordinates setup of the handler\r\n *\r\n * @function\r\n */\r\n setup : function() {\r\n if(this.options.setup) {\r\n this.options.setup();\r\n }\r\n this.initialised = true;\r\n },\r\n\r\n /**\r\n * coordinates setup and triggering of the handler\r\n *\r\n * @function\r\n */\r\n on : function() {\r\n !this.initialised && this.setup();\r\n this.options.match && this.options.match();\r\n },\r\n\r\n /**\r\n * coordinates the unmatch event for the handler\r\n *\r\n * @function\r\n */\r\n off : function() {\r\n this.options.unmatch && this.options.unmatch();\r\n },\r\n\r\n /**\r\n * called when a handler is to be destroyed.\r\n * delegates to the destroy or unmatch callbacks, depending on availability.\r\n *\r\n * @function\r\n */\r\n destroy : function() {\r\n this.options.destroy ? this.options.destroy() : this.off();\r\n },\r\n\r\n /**\r\n * determines equality by reference.\r\n * if object is supplied compare options, if function, compare match callback\r\n *\r\n * @function\r\n * @param {object || function} [target] the target for comparison\r\n */\r\n equals : function(target) {\r\n return this.options === target || this.options.match === target;\r\n }\r\n\r\n };\r\n /**\r\n * Represents a single media query, manages it's state and registered handlers for this query\r\n *\r\n * @constructor\r\n * @param {string} query the media query string\r\n * @param {boolean} [isUnconditional=false] whether the media query should run regardless of whether the conditions are met. Primarily for helping older browsers deal with mobile-first design\r\n */\r\n function MediaQuery(query, isUnconditional) {\r\n this.query = query;\r\n this.isUnconditional = isUnconditional;\r\n this.handlers = [];\r\n this.mql = matchMedia(query);\r\n\r\n var self = this;\r\n this.listener = function(mql) {\r\n self.mql = mql;\r\n self.assess();\r\n };\r\n this.mql.addListener(this.listener);\r\n }\r\n MediaQuery.prototype = {\r\n\r\n /**\r\n * add a handler for this query, triggering if already active\r\n *\r\n * @param {object} handler\r\n * @param {function} handler.match callback for when query is activated\r\n * @param {function} [handler.unmatch] callback for when query is deactivated\r\n * @param {function} [handler.setup] callback for immediate execution when a query handler is registered\r\n * @param {boolean} [handler.deferSetup=false] should the setup callback be deferred until the first time the handler is matched?\r\n */\r\n addHandler : function(handler) {\r\n var qh = new QueryHandler(handler);\r\n this.handlers.push(qh);\r\n\r\n this.matches() && qh.on();\r\n },\r\n\r\n /**\r\n * removes the given handler from the collection, and calls it's destroy methods\r\n * \r\n * @param {object || function} handler the handler to remove\r\n */\r\n removeHandler : function(handler) {\r\n var handlers = this.handlers;\r\n each(handlers, function(h, i) {\r\n if(h.equals(handler)) {\r\n h.destroy();\r\n return !handlers.splice(i,1); //remove from array and exit each early\r\n }\r\n });\r\n },\r\n\r\n /**\r\n * Determine whether the media query should be considered a match\r\n * \r\n * @return {Boolean} true if media query can be considered a match, false otherwise\r\n */\r\n matches : function() {\r\n return this.mql.matches || this.isUnconditional;\r\n },\r\n\r\n /**\r\n * Clears all handlers and unbinds events\r\n */\r\n clear : function() {\r\n each(this.handlers, function(handler) {\r\n handler.destroy();\r\n });\r\n this.mql.removeListener(this.listener);\r\n this.handlers.length = 0; //clear array\r\n },\r\n\r\n /*\r\n * Assesses the query, turning on all handlers if it matches, turning them off if it doesn't match\r\n */\r\n assess : function() {\r\n var action = this.matches() ? 'on' : 'off';\r\n\r\n each(this.handlers, function(handler) {\r\n handler[action]();\r\n });\r\n }\r\n };\r\n /**\r\n * Allows for registration of query handlers.\r\n * Manages the query handler's state and is responsible for wiring up browser events\r\n *\r\n * @constructor\r\n */\r\n function MediaQueryDispatch () {\r\n if(!matchMedia) {\r\n throw new Error('matchMedia not present, legacy browsers require a polyfill');\r\n }\r\n\r\n this.queries = {};\r\n this.browserIsIncapable = !matchMedia('only all').matches;\r\n }\r\n\r\n MediaQueryDispatch.prototype = {\r\n\r\n /**\r\n * Registers a handler for the given media query\r\n *\r\n * @param {string} q the media query\r\n * @param {object || Array || Function} options either a single query handler object, a function, or an array of query handlers\r\n * @param {function} options.match fired when query matched\r\n * @param {function} [options.unmatch] fired when a query is no longer matched\r\n * @param {function} [options.setup] fired when handler first triggered\r\n * @param {boolean} [options.deferSetup=false] whether setup should be run immediately or deferred until query is first matched\r\n * @param {boolean} [shouldDegrade=false] whether this particular media query should always run on incapable browsers\r\n */\r\n register : function(q, options, shouldDegrade) {\r\n var queries = this.queries,\r\n isUnconditional = shouldDegrade && this.browserIsIncapable;\r\n\r\n if(!queries[q]) {\r\n queries[q] = new MediaQuery(q, isUnconditional);\r\n }\r\n\r\n //normalise to object in an array\r\n if(isFunction(options)) {\r\n options = { match : options };\r\n }\r\n if(!isArray(options)) {\r\n options = [options];\r\n }\r\n each(options, function(handler) {\r\n if (isFunction(handler)) {\r\n handler = { match : handler };\r\n }\r\n queries[q].addHandler(handler);\r\n });\r\n\r\n return this;\r\n },\r\n\r\n /**\r\n * unregisters a query and all it's handlers, or a specific handler for a query\r\n *\r\n * @param {string} q the media query to target\r\n * @param {object || function} [handler] specific handler to unregister\r\n */\r\n unregister : function(q, handler) {\r\n var query = this.queries[q];\r\n\r\n if(query) {\r\n if(handler) {\r\n query.removeHandler(handler);\r\n }\r\n else {\r\n query.clear();\r\n delete this.queries[q];\r\n }\r\n }\r\n\r\n return this;\r\n }\r\n };\r\n\r\n\treturn new MediaQueryDispatch();\r\n\r\n}));","$(function () {\r\n try {\r\n Typekit.load();\r\n } catch (e) { }\r\n});\r\n\r\njQuery(document).ready(function ($) {\r\n\r\n // hash focus onload\r\n if (document.location.hash) {\r\n var myAnchor = document.location.hash;\r\n $(myAnchor).attr('tabindex', -1).on('blur focusout', function () {\r\n $(this).removeAttr('tabindex');\r\n }).focus();\r\n }\r\n\r\n // hash focus inline\r\n $(window).bind('hashchange', function () {\r\n var hash = \"#\" + window.location.hash.replace(/^#/, '');\r\n if (hash != \"#\") {\r\n $(hash).attr('tabindex', -1).on('blur focusout', function () {\r\n $(this).removeAttr('tabindex');\r\n }).focus();\r\n }\r\n else {\r\n $(\"#header\").attr('tabindex', -1).on('blur focusout', function () {\r\n $(this).removeAttr('tabindex');\r\n }).focus();\r\n }\r\n });\r\n\r\n // banner smooth scroll to clients\r\n // $('a[href*=\\\\#]').on('click', function (event) {\r\n // event.preventDefault();\r\n // $('html,body').animate({\r\n // scrollTop: $(this.hash).offset().top\r\n // }, 500);\r\n // });\r\n\r\n // add class to select on open\r\n $('select').on('click', function () {\r\n $(this).toggleClass('open');\r\n });\r\n $('select').on('blur', function () {\r\n if ($(this).hasClass('open')) {\r\n $(this).removeClass('open');\r\n }\r\n });\r\n $(document).on('keyup', function (e) {\r\n if (e.keyCode == 27) {\r\n if ($('select').hasClass('open')) {\r\n $(this).removeClass('open');\r\n }\r\n }\r\n });\r\n $(window).on('scroll', function () {\r\n if ($('select').hasClass('open')) {\r\n $('select').removeClass('open');\r\n }\r\n });\r\n\r\n // open and close mobile nav\r\n $('.nav-primary > .ul1 > li.has_children > a, .nav-primary > .ul1 > li.has_children > span, .search button, .search input[type=\"text\"], .nav-close, .wrap-nav .social a').attr('tabindex', '-1');\r\n function openNav() {\r\n $('.wrap-nav').addClass('open');\r\n $('.nav-open').addClass('open');\r\n $('body, form').addClass('open');\r\n $('.nav-primary > .ul1 > li.has_children > a, .nav-primary > .ul1 > li.has_children > span, .search button, .search input[type=\"text\"], .nav-close, .wrap-nav .social a').attr('tabindex', '0');\r\n }\r\n function closeNav() {\r\n $('.wrap-nav').removeClass('open');\r\n $('.nav-open').removeClass('open');\r\n $('body, form').removeClass('open');\r\n $('.nav-open').focus();\r\n $('.nav-primary > .ul1 > li.has_children > a, .nav-primary > .ul1 > li.has_children > span, .search button, .search input[type=\"text\"], .nav-close, .wrap-nav .social a').attr('tabindex', '-1');\r\n }\r\n $('.nav-open').on('click', function () {\r\n if ($(this).hasClass('open')) {\r\n closeNav();\r\n } else {\r\n openNav();\r\n }\r\n });\r\n $('.nav-close').on('click', function () {\r\n closeNav();\r\n });\r\n $(function () {\r\n $('.nav-open').on('keypress', function (e) {\r\n if (e.keyCode == 13 || e.keyCode == 32) {\r\n e.preventDefault();\r\n if ($(this).hasClass('open')) {\r\n closeNav();\r\n } else {\r\n openNav();\r\n }\r\n }\r\n });\r\n });\r\n $(function () {\r\n $('.nav-close').on('keypress', function (e) {\r\n if (e.keyCode == 13 || e.keyCode == 32) {\r\n e.preventDefault();\r\n closeNav();\r\n }\r\n });\r\n });\r\n $(document).on('keyup', function (e) {\r\n if (e.keyCode === 27) {\r\n e.preventDefault();\r\n if ($('.wrap-nav').hasClass('open')) {\r\n closeNav();\r\n $('.nav-primary .ul1, .nav-primary .ul1 li').removeClass('child-open');\r\n $('.nav-open').focus();\r\n }\r\n if ($('.search').hasClass('open')) {\r\n $('.search').removeClass('open');\r\n $('.search-toggle').focus();\r\n }\r\n }\r\n });\r\n\r\n $('.wrap-nav .social li:last-child > a').on('focusout', function () {\r\n $('.search input[type=\"text\"]').focus();\r\n });\r\n\r\n // search\r\n $('button[name=\"search-submit\"]').on('click', function (e) {\r\n e.preventDefault();\r\n var root = location.protocol + '//' + location.host + '/search-results?q=';\r\n var terms = $('input[name=\"search\"]').val();\r\n var url = root + terms;\r\n window.location.href = url;\r\n });\r\n if ($('button[name=\"search-submit\"]').is(':focus')) {\r\n $(this).on('keypress', function (e) {\r\n if (e.which === 13) {\r\n e.preventDefault();\r\n window.location.href = url;\r\n }\r\n });\r\n }\r\n $('input[name=\"search\"]').on('keypress', function (e) {\r\n var root = location.protocol + '//' + location.host + '/search-results?q=';\r\n var terms = $(this).val();\r\n var url = root + terms;\r\n if (e.which === 13) {\r\n e.preventDefault();\r\n window.location.href = url;\r\n }\r\n });\r\n\r\n // primary nav first level\r\n $('.nav-primary .ul1 > li').each(function () {\r\n if ($(this).hasClass('has_children')) {\r\n $('> a', this).after('');\r\n }\r\n });\r\n $('.nav-primary .ul1 > li > span').on('click', function () {\r\n $('.nav-primary .ul1').addClass('child-open');\r\n $(this).parent('li').addClass('child-open');\r\n $('.nav-primary > .ul1 > li.has_children > a, .nav-primary > .ul1 > li.has_children > span').attr('tabindex', '-1');\r\n $('.nav-primary > .ul1 li.child-open > .ul2 > .back, .nav-primary .ul2 > li > a').attr('tabindex', '0');\r\n });\r\n $('.nav-primary .ul1 > li > span').on('keypress', function (e) {\r\n if (e.keyCode == 13 || e.keyCode == 32) {\r\n e.preventDefault();\r\n $('.nav-primary .ul1').addClass('child-open');\r\n $(this).parent('li').addClass('child-open');\r\n $('.nav-primary > .ul1 > li.has_children > a, .nav-primary > .ul1 > li.has_children > span').attr('tabindex', '-1');\r\n $('.nav-primary > .ul1 li.child-open > .ul2 > .back, .nav-primary .ul2 > li > a').attr('tabindex', '0');\r\n }\r\n });\r\n\r\n // primary nav second level\r\n $('.nav-primary .ul2').each(function () {\r\n title = $(this).prevAll('a').text();\r\n link = $(this).prevAll('a').attr('href');\r\n $(this).prepend('
  • ' + title + '
  • ');\r\n $(this).prepend('
  • Back
  • ');\r\n });\r\n $('.nav-primary .ul2 > li.back').on('click', function () {\r\n $('.nav-primary .ul1, .nav-primary .ul1 li').removeClass('child-open');\r\n\r\n $('.nav-primary > .ul1 > li.has_children > a, .nav-primary > .ul1 > li.has_children > span').attr('tabindex', '0');\r\n $('.nav-primary > .ul1 li.child-open > .ul2 > .back, .nav-primary .ul2 > li > a').attr('tabindex', '-1');\r\n });\r\n $('.nav-primary .ul2 > li.back').on('keypress', function (e) {\r\n if (e.keyCode == 13 || e.keyCode == 32) {\r\n e.preventDefault();\r\n $('.nav-primary .ul1, .nav-primary .ul1 li').removeClass('child-open');\r\n\r\n $('.nav-primary > .ul1 > li.has_children > a, .nav-primary > .ul1 > li.has_children > span').attr('tabindex', '0');\r\n $('.nav-primary > .ul1 li.child-open > .ul2 > .back, .nav-primary .ul2 > li > a').attr('tabindex', '-1');\r\n }\r\n });\r\n\r\n // features without links\r\n $('.features article h3 > a').each(function () {\r\n if ($(this).attr('href') == '#' || $(this).attr('href') == '') {\r\n var title = $(this).text();\r\n $(this).contents().unwrap();\r\n }\r\n });\r\n\r\n // show more features\r\n if ($('.features').find('article').length > 4) {\r\n $('.features article:gt(3) h3 a').attr('tabindex', '-1');\r\n $('.features .more').css('display', 'block');\r\n $('.features .more').on('click', function () {\r\n if ($('.features .more').hasClass('open')) {\r\n $('.features .more').removeClass('open');\r\n $('.features .more').html(' Show More Features');\r\n $('.features article.show').each(function () {\r\n $(this).hide();\r\n $('h3 a', this).attr('tabindex', '-1');\r\n });\r\n } else {\r\n $('.features .more').addClass('open');\r\n $('.features .more').html(' Show Less Features');\r\n $('.features article:hidden').each(function (i) {\r\n $(this).addClass('show').show();\r\n $('h3 a', this).attr('tabindex', '0');\r\n if (i === 0) {\r\n $('h3 a', this).focus();\r\n }\r\n });\r\n }\r\n });\r\n $('.features .more').on('keypress', function (e) {\r\n if (e.keyCode == 13 || e.keyCode == 32) {\r\n if ($('.features .more').hasClass('open')) {\r\n $('.features .more').removeClass('open');\r\n $('.features .more').html(' Show More Features');\r\n $('.features article.show').each(function () {\r\n $(this).hide();\r\n $('h3 a', this).attr('tabindex', '-1');\r\n });\r\n $('.features .more').focus();\r\n } else {\r\n $('.features .more').addClass('open');\r\n $('.features .more').html(' Show Less Features');\r\n $('.features article:hidden').each(function (i) {\r\n $(this).addClass('show').show();\r\n $('h3 a', this).attr('tabindex', '0');\r\n if (i === 0) {\r\n $('h3 a', this).focus();\r\n }\r\n });\r\n }\r\n }\r\n });\r\n }\r\n\r\n enquire.register('screen and (max-width: 1023px)', function () {\r\n }).register('screen and (min-width: 1024px)', function () {\r\n $('.search-toggle').on('click', function () {\r\n if ($('.search').hasClass('open')) {\r\n $('body, form').removeClass('open');\r\n $('.wrap-nav').removeClass('open');\r\n $('.nav-open').removeClass('open');\r\n } else {\r\n $('body, form').addClass('open');\r\n $('.wrap-nav').addClass('open');\r\n $('.nav-open').addClass('open', function () {\r\n $('input[name=\"search\"]').focus();\r\n });\r\n }\r\n });\r\n $('.search-toggle').on('keypress', function (e) {\r\n if (e.keyCode == 13 || e.keyCode == 32) {\r\n e.preventDefault();\r\n if ($('.search').hasClass('open')) {\r\n $('body, form').removeClass('open');\r\n $('.wrap-nav').removeClass('open');\r\n $('.nav-open').removeClass('open');\r\n } else {\r\n $('body, form').addClass('open');\r\n $('.wrap-nav').addClass('open');\r\n $('.nav-open').addClass('open', function () {\r\n $('input[name=\"search\"]').focus();\r\n });\r\n }\r\n }\r\n });\r\n });\r\n\r\n $('a.skipcontent').click(function () {\r\n $('main').focus();\r\n });\r\n\r\n //Article Columns\r\n $.articleColumns();\r\n\r\n});"]}