\").append(m.parseHTML(a)).find(d):a)}).complete(c&&function(a,b){g.each(c,e||[a.responseText,b,a])}),this},m.each([\"ajaxStart\",\"ajaxStop\",\"ajaxComplete\",\"ajaxError\",\"ajaxSuccess\",\"ajaxSend\"],function(a,b){m.fn[b]=function(a){return this.on(b,a)}}),m.expr.filters.animated=function(a){return m.grep(m.timers,function(b){return a===b.elem}).length};var cc=a.document.documentElement;function dc(a){return m.isWindow(a)?a:9===a.nodeType?a.defaultView||a.parentWindow:!1}m.offset={setOffset:function(a,b,c){var d,e,f,g,h,i,j,k=m.css(a,\"position\"),l=m(a),n={};\"static\"===k&&(a.style.position=\"relative\"),h=l.offset(),f=m.css(a,\"top\"),i=m.css(a,\"left\"),j=(\"absolute\"===k||\"fixed\"===k)&&m.inArray(\"auto\",[f,i])>-1,j?(d=l.position(),g=d.top,e=d.left):(g=parseFloat(f)||0,e=parseFloat(i)||0),m.isFunction(b)&&(b=b.call(a,c,h)),null!=b.top&&(n.top=b.top-h.top+g),null!=b.left&&(n.left=b.left-h.left+e),\"using\"in b?b.using.call(a,n):l.css(n)}},m.fn.extend({offset:function(a){if(arguments.length)return void 0===a?this:this.each(function(b){m.offset.setOffset(this,a,b)});var b,c,d={top:0,left:0},e=this[0],f=e&&e.ownerDocument;if(f)return b=f.documentElement,m.contains(b,e)?(typeof e.getBoundingClientRect!==K&&(d=e.getBoundingClientRect()),c=dc(f),{top:d.top+(c.pageYOffset||b.scrollTop)-(b.clientTop||0),left:d.left+(c.pageXOffset||b.scrollLeft)-(b.clientLeft||0)}):d},position:function(){if(this[0]){var a,b,c={top:0,left:0},d=this[0];return\"fixed\"===m.css(d,\"position\")?b=d.getBoundingClientRect():(a=this.offsetParent(),b=this.offset(),m.nodeName(a[0],\"html\")||(c=a.offset()),c.top+=m.css(a[0],\"borderTopWidth\",!0),c.left+=m.css(a[0],\"borderLeftWidth\",!0)),{top:b.top-c.top-m.css(d,\"marginTop\",!0),left:b.left-c.left-m.css(d,\"marginLeft\",!0)}}},offsetParent:function(){return this.map(function(){var a=this.offsetParent||cc;while(a&&!m.nodeName(a,\"html\")&&\"static\"===m.css(a,\"position\"))a=a.offsetParent;return a||cc})}}),m.each({scrollLeft:\"pageXOffset\",scrollTop:\"pageYOffset\"},function(a,b){var c=/Y/.test(b);m.fn[a]=function(d){return V(this,function(a,d,e){var f=dc(a);return void 0===e?f?b in f?f[b]:f.document.documentElement[d]:a[d]:void(f?f.scrollTo(c?m(f).scrollLeft():e,c?e:m(f).scrollTop()):a[d]=e)},a,d,arguments.length,null)}}),m.each([\"top\",\"left\"],function(a,b){m.cssHooks[b]=La(k.pixelPosition,function(a,c){return c?(c=Ja(a,b),Ha.test(c)?m(a).position()[b]+\"px\":c):void 0})}),m.each({Height:\"height\",Width:\"width\"},function(a,b){m.each({padding:\"inner\"+a,content:b,\"\":\"outer\"+a},function(c,d){m.fn[d]=function(d,e){var f=arguments.length&&(c||\"boolean\"!=typeof d),g=c||(d===!0||e===!0?\"margin\":\"border\");return V(this,function(b,c,d){var e;return m.isWindow(b)?b.document.documentElement[\"client\"+a]:9===b.nodeType?(e=b.documentElement,Math.max(b.body[\"scroll\"+a],e[\"scroll\"+a],b.body[\"offset\"+a],e[\"offset\"+a],e[\"client\"+a])):void 0===d?m.css(b,c,g):m.style(b,c,d,g)},b,f?d:void 0,f,null)}})}),m.fn.size=function(){return this.length},m.fn.andSelf=m.fn.addBack,\"function\"==typeof define&&define.amd&&define(\"jquery\",[],function(){return m});var ec=a.jQuery,fc=a.$;return m.noConflict=function(b){return a.$===m&&(a.$=fc),b&&a.jQuery===m&&(a.jQuery=ec),m},typeof b===K&&(a.jQuery=a.$=m),m});\r\n","!function($) {\r\n var DarthPhader = function(elem, opts) {\r\n this.init('darthphader', elem, opts);\r\n };\r\n\r\n //------------------------------------------------------------------------------\r\n // Init\r\n //------------------------------------------------------------------------------\r\n DarthPhader.prototype = {\r\n constructor: DarthPhader,\r\n init: function(type, elem, opts) {\r\n this.type = type;\r\n this.$element = $(elem);\r\n this.options = this.getOptions(opts);\r\n this.slides = [];\r\n this.setup();\r\n },\r\n\r\n getOptions: function(opts) {\r\n return $.extend({}, $.fn[this.type].defaults, this.$element.data(), opts);\r\n },\r\n\r\n //------------------------------------------------------------------------------\r\n // Setup click events, triggers, base view of phader\r\n //------------------------------------------------------------------------------\r\n setup: function(opts) {\r\n var that = this;\r\n\r\n //------------------------------------------------------------------------------\r\n // show first slide, hide the rest\r\n //------------------------------------------------------------------------------\r\n $(this.options.container + ' ' + this.options.slide).hide();\r\n $(this.options.container + ' ' + this.options.slide).eq(0).show().addClass('active');\r\n\r\n //------------------------------------------------------------------------------\r\n // accessibility things\r\n //------------------------------------------------------------------------------\r\n if ( this.options.accessible === true ) {\r\n $(this.options.container + ' ' + this.options.slide).eq(0).attr('aria-live', 'assertive');\r\n }\r\n\r\n //------------------------------------------------------------------------------\r\n // set up nav buttons\r\n //------------------------------------------------------------------------------\r\n if ( this.options.showNav === true ) {\r\n if ( this.options.navStyle == 'nextPrev' ) {\r\n this.$element.append('
');\r\n } else {\r\n var buttonHtml = '';\r\n\r\n $(this.options.slide).each(function() {\r\n buttonHtml = buttonHtml + '
';\r\n });\r\n\r\n this.$element.append('
');\r\n\r\n this.$element.find('nav button').eq(0).addClass('active');\r\n }\r\n }\r\n\r\n //------------------------------------------------------------------------------\r\n // Autophade\r\n //------------------------------------------------------------------------------\r\n if ( this.options.autoPhader === true ) {\r\n var autoPhaderTimer = setInterval( function() { that.autoPhade() }, parseInt(this.options.waitTime,10));\r\n }\r\n\r\n //------------------------------------------------------------------------------\r\n // Next, previous and specific slide trigger functions\r\n //------------------------------------------------------------------------------\r\n this.slides = this.$element.on({\r\n 'slide.next': function(e) {\r\n //interrupt the timer for auto if it's going\r\n if (that.options.autoPhader === true) {\r\n clearInterval(autoPhaderTimer);\r\n }\r\n\r\n var $slide = that.getNextSlide();\r\n\r\n if ( $slide === null ) {\r\n that.goToSlide(0);\r\n } else {\r\n that.goToSlide($slide.prevAll(that.options.slide).length);\r\n }\r\n\r\n //set timer going again\r\n if (that.options.autoPhader === true) {\r\n autoPhaderTimer = setInterval( function() { that.autoPhade() }, parseInt(that.options.waitTime,10));\r\n }\r\n },\r\n\r\n 'slide.prev': function(e) {\r\n //interrupt the timer for auto if it's going\r\n if (that.options.autoPhader === true) {\r\n clearInterval(autoPhaderTimer);\r\n }\r\n\r\n var $slide = that.getPrevSlide();\r\n\r\n if ( $slide === null ) {\r\n that.goToSlide($(that.options.slide).length - 1);\r\n } else {\r\n that.goToSlide($slide.prevAll(that.options.slide).length);\r\n }\r\n\r\n //set timer going again\r\n if (that.options.autoPhader === true) {\r\n autoPhaderTimer = setInterval( function() { that.autoPhade() }, parseInt(that.options.waitTime,10));\r\n }\r\n },\r\n\r\n 'slide.specific': function(e, slideNum) {\r\n //interrupt the timer for auto if it's going\r\n if (that.options.autoPhader === true) {\r\n clearInterval(autoPhaderTimer);\r\n }\r\n\r\n that.goToSpecificSlide(slideNum);\r\n\r\n //set timer going again\r\n if (that.options.autoPhader === true) {\r\n autoPhaderTimer = setInterval( function() { that.autoPhade() }, parseInt(that.options.waitTime,10));\r\n }\r\n }\r\n });\r\n\r\n //------------------------------------------------------------------------------\r\n // Next, previous and button click events\r\n //------------------------------------------------------------------------------\r\n this.$element.on('click', this.options.nextClass, function(e) {\r\n e.preventDefault();\r\n that.$element.trigger('slide.next');\r\n });\r\n\r\n this.$element.on('click', this.options.prevClass, function(e) {\r\n e.preventDefault();\r\n that.$element.trigger('slide.prev');\r\n });\r\n\r\n this.$element.on('click', this.options.buttonClass, function(e) {\r\n e.preventDefault();\r\n\r\n var slideNum = $(this).attr('data-slide');\r\n that.$element.trigger('slide.specific', [ slideNum ]);\r\n });\r\n },\r\n\r\n //------------------------------------------------------------------------------\r\n // Work out what the current slide is\r\n //------------------------------------------------------------------------------\r\n getCurrentSlide: function() {\r\n return this.$element.find(this.options.slide + '.active');\r\n },\r\n\r\n //------------------------------------------------------------------------------\r\n // Work out the next slide in sequence\r\n //------------------------------------------------------------------------------\r\n getNextSlide: function() {\r\n var $currentSlide = this.getCurrentSlide();\r\n\r\n if ( $currentSlide.length === 0) {\r\n return null;\r\n }\r\n\r\n var $nextSlide = $currentSlide.nextAll(this.options.slide).first();\r\n\r\n if ( $nextSlide.length === 0 ) {\r\n return null;\r\n }\r\n\r\n return $nextSlide;\r\n },\r\n\r\n //------------------------------------------------------------------------------\r\n // Work out previous slide in sequence\r\n //------------------------------------------------------------------------------\r\n getPrevSlide: function() {\r\n var $currentSlide = this.getCurrentSlide();\r\n\r\n if ( $currentSlide.length === 0) {\r\n return null;\r\n }\r\n\r\n var $prevSlide = $currentSlide.prevAll(this.options.slide).first();\r\n\r\n if ( $prevSlide.length === 0 ) {\r\n return null;\r\n }\r\n\r\n return $prevSlide;\r\n },\r\n\r\n //------------------------------------------------------------------------------\r\n // Go to slide - used for only single slide jump\r\n //------------------------------------------------------------------------------\r\n goToSlide: function(slideNumber) {\r\n\r\n var $slides = this.$element.find(this.options.slide),\r\n $active = $slides.filter(function() { return $(this).hasClass('active'); }),\r\n $target = $slides.slice(slideNumber, slideNumber + 1);\r\n\r\n this.setActiveNavButton(slideNumber);\r\n\r\n if ( this.options.crossfade === true ) {\r\n $active.finish().fadeOut(parseInt(this.options.animationDuration, 10)*1.5).removeClass('active');\r\n $target.finish().fadeIn(parseInt(this.options.animationDuration, 10)).addClass('active');\r\n } else {\r\n var that = this;\r\n\r\n $active.finish().fadeOut(parseInt(this.options.animationDuration, 10), function() {\r\n $target.finish().fadeIn(parseInt(that.options.animationDuration, 10)).addClass('active');\r\n }).removeClass('active');\r\n }\r\n\r\n if ( this.options.accessible === true ) {\r\n $active.attr('aria-live', 'off');\r\n $target.attr('aria-live', 'assertive');\r\n }\r\n },\r\n\r\n //------------------------------------------------------------------------------\r\n // Go to slide - used for jumping more than one slide at a time\r\n //------------------------------------------------------------------------------\r\n goToSpecificSlide: function(slideNumber) {\r\n var $slides = this.$element.find(this.options.slide),\r\n $target = $slides.eq(slideNumber);\r\n\r\n this.setActiveNavButton(slideNumber);\r\n\r\n if ( this.options.crossfade === true ) {\r\n $slides.finish().fadeOut(parseInt(this.options.animationDuration, 10)*1.5).removeClass('active');\r\n $target.finish().fadeIn(parseInt(this.options.animationDuration, 10)).addClass('active');\r\n } else {\r\n var that = this;\r\n $slides.finish().fadeOut(parseInt(this.options.animationDuration, 10), function() {\r\n $target.finish().fadeIn(parseInt(that.options.animationDuration, 10)).addClass('active');\r\n }).removeClass('active');\r\n }\r\n\r\n if ( this.options.accessible === true ) {\r\n $slides.attr('aria-live', 'off');\r\n $target.attr('aria-live', 'assertive');\r\n }\r\n },\r\n\r\n //----------------------------------------------------\r\n // set button for current slide active\r\n //----------------------------------------------------\r\n setActiveNavButton: function(button) {\r\n if ( this.options.navStyle == 'buttons' ) {\r\n $targetNavButton = this.$element.find('nav button[data-slide=\"' + button + '\"]').addClass('active').siblings('button').removeClass('active');\r\n }\r\n },\r\n\r\n //------------------------------------------------------------------------------\r\n // Let things phade on their own\r\n //------------------------------------------------------------------------------\r\n autoPhade: function() {\r\n var that = this;\r\n that.$element.trigger('slide.next');\r\n }\r\n };\r\n\r\n //------------------------------------------------------------------------------\r\n // Stuff and things\r\n //------------------------------------------------------------------------------\r\n $.fn.darthphader = function(option) {\r\n return this.each(function() {\r\n var $this = $(this),\r\n data = $this.data('darthphader'),\r\n options = typeof option == 'object' && option;\r\n\r\n if (!data) {\r\n $this.data('darthphader', data = new DarthPhader(this, options));\r\n }\r\n\r\n if (typeof option == 'string') {\r\n data[option]();\r\n }\r\n });\r\n };\r\n\r\n //------------------------------------------------------------------------------\r\n // Options\r\n //------------------------------------------------------------------------------\r\n $.fn.darthphader.defaults = {\r\n 'animationDuration' : 500,\r\n 'waitTime' : 5000,\r\n 'autoPhader' : false,\r\n 'crossfade' : true,\r\n 'slide' : '.slide',\r\n 'container' : '.container',\r\n 'prevClass' : '.prevSlide',\r\n 'nextClass' : '.nextSlide',\r\n 'accessible' : true,\r\n 'showNav' : true,\r\n 'navStyle' : 'nextPrev', //or buttons\r\n 'buttonClass' : '.button' //not used for nextPrev nav\r\n };\r\n}(window.jQuery);\r\n","/**\r\n * ProductFeatureImages\r\n *\r\n * @author Phil Steer
\r\n * @package ProductFeatureImages\r\n */\r\n!function($) {\r\n var ProductFeatureImages = function(elem, opts) {\r\n this.init('productfeatureimages', elem, opts);\r\n };\r\n\r\n ProductFeatureImages.prototype = {\r\n constructor: ProductFeatureImages,\r\n init: function(type, elem, opts) {\r\n this.type = type;\r\n this.$element = $(elem);\r\n this.options = this.getOptions(opts);\r\n this.$container = this.$element.find(this.options.container);\r\n this.$feature = this.$element.find(this.options.feature);\r\n this.$thumbs = this.$element.find(this.options.thumbs);\r\n this.$loading = this.$element.find(this.options.loading);\r\n this.setup();\r\n },\r\n\r\n getOptions: function(opts) {\r\n return $.extend({}, $.fn[this.type].defaults, this.$element.data(), opts);\r\n },\r\n\r\n setup: function() {\r\n var that = this;\r\n\r\n this.$thumbs.find('a').on('click', function(e) {\r\n e.preventDefault();\r\n\r\n var featureImg = $(this).attr('href');\r\n that.switchFeatureImg(featureImg);\r\n });\r\n },\r\n\r\n switchFeatureImg: function(featureImg) {\r\n var that = this;\r\n this.$loading.addClass('active');\r\n\r\n this.$feature.find('img').one('load', function() {\r\n that.$loading.removeClass('active');\r\n }).attr('src', featureImg);\r\n }\r\n };\r\n\r\n $.fn.productfeatureimages = function(option) {\r\n var args = Array.prototype.slice.call(arguments, 1);\r\n\r\n if (typeof option === 'string' && $.inArray(option, []) !== -1) {\r\n var data = this.data('productfeatureimages');\r\n return data[option].apply(data, args);\r\n }\r\n\r\n return this.each(function() {\r\n var $this = $(this),\r\n data = $this.data('productfeatureimages'),\r\n options = typeof option == 'object' && option;\r\n\r\n if (!data) {\r\n $this.data('productfeatureimages', data = new ProductFeatureImages(this, options));\r\n }\r\n\r\n if (typeof option == 'string') {\r\n data[option]();\r\n }\r\n });\r\n };\r\n\r\n $.fn.productfeatureimages.defaults = {\r\n 'container': '.feature-images__container',\r\n 'feature': '.feature-images__large',\r\n 'thumbs': '.feature-images__thumbs',\r\n 'loading': '.feature-images__loading'\r\n };\r\n}(window.jQuery);\r\n","// Avoid `console` errors in browsers that lack a console.\r\n(function() {\r\n var method;\r\n var noop = function () {};\r\n var methods = [\r\n 'assert', 'clear', 'count', 'debug', 'dir', 'dirxml', 'error',\r\n 'exception', 'group', 'groupCollapsed', 'groupEnd', 'info', 'log',\r\n 'markTimeline', 'profile', 'profileEnd', 'table', 'time', 'timeEnd',\r\n 'timeStamp', 'trace', 'warn'\r\n ];\r\n var length = methods.length;\r\n var console = (window.console = window.console || {});\r\n\r\n while (length--) {\r\n method = methods[length];\r\n\r\n // Only stub undefined methods.\r\n if (!console[method]) {\r\n console[method] = noop;\r\n }\r\n }\r\n}());\r\n\r\n/*\r\n * jQuery Easing v1.3 - http://gsgd.co.uk/sandbox/jquery/easing/\r\n *\r\n * Uses the built in easing capabilities added In jQuery 1.1\r\n * to offer multiple easing options\r\n *\r\n * TERMS OF USE - jQuery Easing\r\n *\r\n * Open source under the BSD License.\r\n *\r\n * Copyright © 2008 George McGinley Smith\r\n * All rights reserved.\r\n *\r\n * Redistribution and use in source and binary forms, with or without modification,\r\n * are permitted provided that the following conditions are met:\r\n *\r\n * Redistributions of source code must retain the above copyright notice, this list of\r\n * conditions and the following disclaimer.\r\n * Redistributions in binary form must reproduce the above copyright notice, this list\r\n * of conditions and the following disclaimer in the documentation and/or other materials\r\n * provided with the distribution.\r\n *\r\n * Neither the name of the author nor the names of contributors may be used to endorse\r\n * or promote products derived from this software without specific prior written permission.\r\n *\r\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\" AND ANY\r\n * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF\r\n * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE\r\n * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,\r\n * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE\r\n * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED\r\n * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING\r\n * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED\r\n * OF THE POSSIBILITY OF SUCH DAMAGE.\r\n *\r\n*/\r\n\r\n// t: current time, b: begInnIng value, c: change In value, d: duration\r\njQuery.easing['jswing'] = jQuery.easing['swing'];\r\n\r\njQuery.extend( jQuery.easing,\r\n{\r\n def: 'easeOutQuad',\r\n swing: function (x, t, b, c, d) {\r\n //alert(jQuery.easing.default);\r\n return jQuery.easing[jQuery.easing.def](x, t, b, c, d);\r\n },\r\n easeInQuad: function (x, t, b, c, d) {\r\n return c*(t/=d)*t + b;\r\n },\r\n easeOutQuad: function (x, t, b, c, d) {\r\n return -c *(t/=d)*(t-2) + b;\r\n },\r\n easeInOutQuad: function (x, t, b, c, d) {\r\n if ((t/=d/2) < 1) return c/2*t*t + b;\r\n return -c/2 * ((--t)*(t-2) - 1) + b;\r\n },\r\n easeInCubic: function (x, t, b, c, d) {\r\n return c*(t/=d)*t*t + b;\r\n },\r\n easeOutCubic: function (x, t, b, c, d) {\r\n return c*((t=t/d-1)*t*t + 1) + b;\r\n },\r\n easeInOutCubic: function (x, t, b, c, d) {\r\n if ((t/=d/2) < 1) return c/2*t*t*t + b;\r\n return c/2*((t-=2)*t*t + 2) + b;\r\n },\r\n easeInQuart: function (x, t, b, c, d) {\r\n return c*(t/=d)*t*t*t + b;\r\n },\r\n easeOutQuart: function (x, t, b, c, d) {\r\n return -c * ((t=t/d-1)*t*t*t - 1) + b;\r\n },\r\n easeInOutQuart: function (x, t, b, c, d) {\r\n if ((t/=d/2) < 1) return c/2*t*t*t*t + b;\r\n return -c/2 * ((t-=2)*t*t*t - 2) + b;\r\n },\r\n easeInQuint: function (x, t, b, c, d) {\r\n return c*(t/=d)*t*t*t*t + b;\r\n },\r\n easeOutQuint: function (x, t, b, c, d) {\r\n return c*((t=t/d-1)*t*t*t*t + 1) + b;\r\n },\r\n easeInOutQuint: function (x, t, b, c, d) {\r\n if ((t/=d/2) < 1) return c/2*t*t*t*t*t + b;\r\n return c/2*((t-=2)*t*t*t*t + 2) + b;\r\n },\r\n easeInSine: function (x, t, b, c, d) {\r\n return -c * Math.cos(t/d * (Math.PI/2)) + c + b;\r\n },\r\n easeOutSine: function (x, t, b, c, d) {\r\n return c * Math.sin(t/d * (Math.PI/2)) + b;\r\n },\r\n easeInOutSine: function (x, t, b, c, d) {\r\n return -c/2 * (Math.cos(Math.PI*t/d) - 1) + b;\r\n },\r\n easeInExpo: function (x, t, b, c, d) {\r\n return (t==0) ? b : c * Math.pow(2, 10 * (t/d - 1)) + b;\r\n },\r\n easeOutExpo: function (x, t, b, c, d) {\r\n return (t==d) ? b+c : c * (-Math.pow(2, -10 * t/d) + 1) + b;\r\n },\r\n easeInOutExpo: function (x, t, b, c, d) {\r\n if (t==0) return b;\r\n if (t==d) return b+c;\r\n if ((t/=d/2) < 1) return c/2 * Math.pow(2, 10 * (t - 1)) + b;\r\n return c/2 * (-Math.pow(2, -10 * --t) + 2) + b;\r\n },\r\n easeInCirc: function (x, t, b, c, d) {\r\n return -c * (Math.sqrt(1 - (t/=d)*t) - 1) + b;\r\n },\r\n easeOutCirc: function (x, t, b, c, d) {\r\n return c * Math.sqrt(1 - (t=t/d-1)*t) + b;\r\n },\r\n easeInOutCirc: function (x, t, b, c, d) {\r\n if ((t/=d/2) < 1) return -c/2 * (Math.sqrt(1 - t*t) - 1) + b;\r\n return c/2 * (Math.sqrt(1 - (t-=2)*t) + 1) + b;\r\n },\r\n easeInElastic: function (x, t, b, c, d) {\r\n var s=1.70158;var p=0;var a=c;\r\n if (t==0) return b; if ((t/=d)==1) return b+c; if (!p) p=d*.3;\r\n if (a < Math.abs(c)) { a=c; var s=p/4; }\r\n else var s = p/(2*Math.PI) * Math.asin (c/a);\r\n return -(a*Math.pow(2,10*(t-=1)) * Math.sin( (t*d-s)*(2*Math.PI)/p )) + b;\r\n },\r\n easeOutElastic: function (x, t, b, c, d) {\r\n var s=1.70158;var p=0;var a=c;\r\n if (t==0) return b; if ((t/=d)==1) return b+c; if (!p) p=d*.3;\r\n if (a < Math.abs(c)) { a=c; var s=p/4; }\r\n else var s = p/(2*Math.PI) * Math.asin (c/a);\r\n return a*Math.pow(2,-10*t) * Math.sin( (t*d-s)*(2*Math.PI)/p ) + c + b;\r\n },\r\n easeInOutElastic: function (x, t, b, c, d) {\r\n var s=1.70158;var p=0;var a=c;\r\n if (t==0) return b; if ((t/=d/2)==2) return b+c; if (!p) p=d*(.3*1.5);\r\n if (a < Math.abs(c)) { a=c; var s=p/4; }\r\n else var s = p/(2*Math.PI) * Math.asin (c/a);\r\n if (t < 1) return -.5*(a*Math.pow(2,10*(t-=1)) * Math.sin( (t*d-s)*(2*Math.PI)/p )) + b;\r\n return a*Math.pow(2,-10*(t-=1)) * Math.sin( (t*d-s)*(2*Math.PI)/p )*.5 + c + b;\r\n },\r\n easeInBack: function (x, t, b, c, d, s) {\r\n if (s == undefined) s = 1.70158;\r\n return c*(t/=d)*t*((s+1)*t - s) + b;\r\n },\r\n easeOutBack: function (x, t, b, c, d, s) {\r\n if (s == undefined) s = 1.70158;\r\n return c*((t=t/d-1)*t*((s+1)*t + s) + 1) + b;\r\n },\r\n easeInOutBack: function (x, t, b, c, d, s) {\r\n if (s == undefined) s = 1.70158;\r\n if ((t/=d/2) < 1) return c/2*(t*t*(((s*=(1.525))+1)*t - s)) + b;\r\n return c/2*((t-=2)*t*(((s*=(1.525))+1)*t + s) + 2) + b;\r\n },\r\n easeInBounce: function (x, t, b, c, d) {\r\n return c - jQuery.easing.easeOutBounce (x, d-t, 0, c, d) + b;\r\n },\r\n easeOutBounce: function (x, t, b, c, d) {\r\n if ((t/=d) < (1/2.75)) {\r\n return c*(7.5625*t*t) + b;\r\n } else if (t < (2/2.75)) {\r\n return c*(7.5625*(t-=(1.5/2.75))*t + .75) + b;\r\n } else if (t < (2.5/2.75)) {\r\n return c*(7.5625*(t-=(2.25/2.75))*t + .9375) + b;\r\n } else {\r\n return c*(7.5625*(t-=(2.625/2.75))*t + .984375) + b;\r\n }\r\n },\r\n easeInOutBounce: function (x, t, b, c, d) {\r\n if (t < d/2) return jQuery.easing.easeInBounce (x, t*2, 0, c, d) * .5 + b;\r\n return jQuery.easing.easeOutBounce (x, t*2-d, 0, c, d) * .5 + c*.5 + b;\r\n }\r\n});\r\n\r\n/*\r\n *\r\n * TERMS OF USE - EASING EQUATIONS\r\n *\r\n * Open source under the BSD License.\r\n *\r\n * Copyright © 2001 Robert Penner\r\n * All rights reserved.\r\n *\r\n * Redistribution and use in source and binary forms, with or without modification,\r\n * are permitted provided that the following conditions are met:\r\n *\r\n * Redistributions of source code must retain the above copyright notice, this list of\r\n * conditions and the following disclaimer.\r\n * Redistributions in binary form must reproduce the above copyright notice, this list\r\n * of conditions and the following disclaimer in the documentation and/or other materials\r\n * provided with the distribution.\r\n *\r\n * Neither the name of the author nor the names of contributors may be used to endorse\r\n * or promote products derived from this software without specific prior written permission.\r\n *\r\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\" AND ANY\r\n * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF\r\n * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE\r\n * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,\r\n * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE\r\n * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED\r\n * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING\r\n * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED\r\n * OF THE POSSIBILITY OF SUCH DAMAGE.\r\n *\r\n */\r\n\r\n","$(document).ready(function() {\n $('.menu-toggle').on('click', function() {\n $(this).toggleClass('active');\n\n $('.main-nav > ul').slideToggle(200);\n });\n\n if ( $('#darth-phader').length ) {\n $('#darth-phader').darthphader({\n 'animationDuration' : 500,\n 'waitTime' : 5000,\n 'autoPhader' : true,\n 'crossfade' : true,\n 'slide' : '.slide',\n 'container' : '.slides',\n 'accessible' : true,\n 'showNav' : true,\n 'navStyle' : 'buttons',\n 'buttonClass' : '.button'\n });\n }\n\n if( $('.bradley-gallery').length > 0 ) {\n $('.bradley-gallery').productfeatureimages({\n 'container': '.bradley-gallery',\n 'feature': '.gallery-main-image',\n 'thumbs': '.gallery-thumbs',\n 'loading': '.gallery-loading'\n });\n }\n});\n"],"sourceRoot":"/source/"}