PageSourceSearch

https://babyan.co.kr/ind-script/optimizer_user.php?filename=lZExDs…523a021735dbd66763d214a&t=1614227262&user=T

js babyan.co.kr collected 2026-09-27 06:24:43 UTC 269,990 bytes, 5,636 lines download raw bytes

1EC$(function($) {
2    var filter = "win16|win32|win64|mac|macintel";
3    var device = "pc";
4    if (navigator.platform) {
5        if (filter.indexOf(navigator.platform.toLowerCase()) < 0) { device = "mobile"; }
6    }
7
8    /**
9     * 상품상세, 상품 확대보기(팝업) - 소비자가 할인표시 */
10    var oPriceInfoEl = $('#ec-product-price-info');
11    if (oPriceInfoEl.length > 0) {
12        var salePriceEl = $('#span_product_price_text');
13        percentageCul(oPriceInfoEl, salePriceEl);
14    }    
15
16    /**
17    * 상품목록/메인진열 - 소비자가 할인표시*/
18    var mainEl = $("#wrap");
19    if (mainEl.length > 0) {
20      var productListEl = $('.xans-product-listmain, .xans-product-listrecommend, .xans-product-listnew, .xans-product-listnormal');
21        for (var i = 0; i < productListEl.length; i++) {
22            var prdListEl = productListEl.eq(i).find('.prdList > li');
23            for (var j = 0; j < prdListEl.length; j++) {
24                var priceEl = prdListEl.eq(j).find('.description'),
25                    salePriceEl = priceEl.find('.xans-product > li').eq(1).find('span:eq(1)');
26
27                if (device == "mobile") {
28                    salePriceEl = priceEl.find('.spec >li.price');
29                }                percentageCul(priceEl, salePriceEl);
30            }
31        }
32    }
33
34    function percentageCul(target, salePriceEl) {
35        var iCustomPrice = parseInt(target.attr('ec-data-custom')),
36            iPrice = parseInt(target.attr('ec-data-price')),
37            sDisplayAmount = 'p', // p:할인율, w:할인금액
38            iOfftoFixed = 0, // 할인율 소수점자릿수
39            sSaleText = '',
40            regexp = /B(?=(d{3})+(?!d))/g;
41
42        if (iCustomPrice > 0 && iPrice > 0 && iPrice != iCustomPrice) {
43              if (sDisplayAmount == 'p') {
44               sSaleText = '(' +  (((iCustomPrice - iPrice) / iCustomPrice) * 100).toFixed(iOfftoFixed) + '% 할인)'; 
45                   /*  sSaleText = (((iCustomPrice - iPrice) / iCustomPrice) * 100).toFixed(iOfftoFixed) + '% 할인'; */
46            } else if (sDisplayAmount == 'w') {
47                sSaleText = parseInt(iCustomPrice - iPrice).toString().replace(regexp, ',') + '원 OFF';
48            }
49            salePriceEl.append('<span class="ec-sale-rate"> ' + sSaleText + '</span>');
50        }
51    }
52});
53/**
54 * 움직이는 배너 Jquery Plug-in
55 * @author  cafe24
56 */
57
58(function($){
59
60    $.fn.floatBanner = function(options) {
61        options = $.extend({}, $.fn.floatBanner.defaults , options);
62
63        return this.each(function() {
64            var aPosition = $(this).position();
65            var jbOffset = $(this).offset();
66            var node = this;
67
68            $(window).scroll(function() {
69                var _top = $(document).scrollTop();
70                _top = (aPosition.top < _top) ? _top : aPosition.top;
71
72                setTimeout(function () {
73                    var newinit = $(document).scrollTop();
74
75                    if ( newinit > jbOffset.top ) {
76                        _top -= jbOffset.top;
77                        var container_height = $("#wrap").height();
78                        var quick_height = $(node).height();
79                        var cul = container_height - quick_height;
80                        if(_top > cul){
81                            _top = cul;
82                        }
83                    }else {
84                        _top = 0;
85                    }
86
87                    $(node).stop().animate({top: _top}, options.animate);
88                }, options.delay);
89            });
90        });
91    };
92
93    $.fn.floatBanner.defaults = {
94        'animate'  : 500,
95        'delay'    : 500
96    };
97
98})(jQuery);
99
100/**
101 * 문서 구동후 시작
102 */
103$(document).ready(function(){
104    $('#banner:visible, #quick:visible').floatBanner();
105
106    //placeholder
107    $(".ePlaceholder input, .ePlaceholder textarea").each(function(i){
108        var placeholderName = $(this).parents().attr('title');
109        $(this).attr("placeholder", placeholderName);
110    });
111    /* placeholder ie8, ie9 */
112    $.fn.extend({
113        placeholder : function() {
114            //IE 8 버전에는 hasPlaceholderSupport() 값이 false를 리턴
115           if (hasPlaceholderSupport() === true) {
116                return this;
117            }
118            //hasPlaceholderSupport() 값이 false 일 경우 아래 코드를 실행
119            return this.each(function(){
120                var findThis = $(this);
121                var sPlaceholder = findThis.attr('placeholder');
122                if ( ! sPlaceholder) {
123                   return;
124                }
125                findThis.wrap('<label class="ePlaceholder" />');
126                var sDisplayPlaceHolder = $(this).val() ? ' style="display:none;"' : '';
127                findThis.before('<span' + sDisplayPlaceHolder + '>' + sPlaceholder + '</span>');
128                this.onpropertychange = function(e){
129                    e = event || e;
130                    if (e.propertyName == 'value') {
131                        $(this).trigger('focusout');
132                    }
133                };
134                //공통 class
135                var agent = navigator.userAgent.toLowerCase();
136                if (agent.indexOf("msie") != -1) {
137                    $(".ePlaceholder").css({"position":"relative"});
138                    $(".ePlaceholder span").css({"position":"absolute", "padding":"0 4px", "color":"#878787"});
139                    $(".ePlaceholder label").css({"padding":"0"});
140                }
141            });
142        }
143    });
144
145    $(':input[placeholder]').placeholder(); //placeholder() 함수를 호출
146
147    //클릭하면 placeholder 숨김
148    $('body').delegate('.ePlaceholder span', 'click', function(){
149        $(this).hide();
150    });
151
152    //input창 포커스 인 일때 placeholder 숨김
153    $('body').delegate('.ePlaceholder :input', 'focusin', function(){
154        $(this).prev('span').hide();
155    });
156
157    //input창 포커스 아웃 일때 value 가 true 이면 숨김, false 이면 보여짐
158    $('body').delegate('.ePlaceholder :input', 'focusout', function(){
159        if (this.value) {
160            $(this).prev('span').hide();
161        } else {
162            $(this).prev('span').show();
163        }
164    });
165
166    //input에 placeholder가 지원이 되면 true를 안되면 false를 리턴값으로 던져줌
167    function hasPlaceholderSupport() {
168        if ('placeholder' in document.createElement('input')) {
169            return true;
170        } else {
171            return false;
172        }
173    }
174});
175
176/**
177 *  썸네일 이미지 엑박일경우 기본값 설정
178 */
179$(window).load(function() {
180    $("img.thumb,img.ThumbImage,img.BigImage").each(function($i,$item){
181        var $img = new Image();
182        $img.onerror = function () {
183                $item.src="//img.echosting.cafe24.com/thumb/img_product_big.gif";
184        }
185        $img.src = this.src;
186    });
187});
188$('img[src="https://app-storage-006.cafe24.com/bannermanage2/funbiz6/2018/12/26/1c4532b13ac2007c141c1a782fff5204.jpg"]').each(function() {
189        $(this).parents("a").css("cursor","default");
190    });
191(function ($) {
192    var jQuery = $;
193    $(function() {
194        
195        // 상단 상품 메뉴 오버 시 영문 메뉴 노출
196        $('.top-product-category-wrap ul>li.cate-one').hover(function() {
197            //$(this).find('span.over-cate').stop(true).fadeIn(200);
198            $(this).find('span.hover-border').stop(true).fadeIn();
199        },function() {
200            //$(this).find('span.over-cate').stop(true).fadeOut(200);
201            $(this).find('span.hover-border').stop(true).fadeOut();
202        });
203        
204        // 상품 카테고리 오버 시 하위 카테고리 노출
205        var methods = {
206            aCategory    : [],
207            aSubCategory : {},
208
209            get: function()
210            {
211                 $.ajax({
212                    url : '/exec/front/Product/SubCategory',
213                    dataType: 'json',
214                    success: function(aData) {
215
216                        if (aData == null || aData == 'undefined') return;
217                        for (var i=0; i<aData.length; i++)
218                        {
219                            var sParentCateNo = aData[i].parent_cate_no;
220
221                            if (!methods.aSubCategory[sParentCateNo]) {
222                                methods.aSubCategory[sParentCateNo] = [];
223                            }
224
225                            methods.aSubCategory[sParentCateNo].push( aData[i] );
226                        }
227                    }
228                });
229            },
230
231            getParam: function(sUrl, sKey) {
232
233                var aUrl         = sUrl.split('?');
234                var sQueryString = aUrl[1];
235                var aParam       = {};
236
237                if (sQueryString) {
238                    var aFields = sQueryString.split("&");
239                    var aField  = [];
240                    for (var i=0; i<aFields.length; i++) {
241                        aField = aFields[i].split('=');
242                        aParam[aField[0]] = aField[1];
243                    }
244                }
245                return sKey ? aParam[sKey] : aParam;
246            },
247
248            getParamSeo: function(sUrl) {
249                var aUrl         = sUrl.split('/');
250                return aUrl[3] ? aUrl[3] : null;
251            },
252
253            show: function(overNode, iCateNo) {
254
255                if (methods.aSubCategory[iCateNo].length == 0) {
256                    return;
257                }
258
259                var aHtml = [];
260                aHtml.push('<ul>');
261                $(methods.aSubCategory[iCateNo]).each(function() {
262                    aHtml.push('<li><a href="'+this.link_product_list+'">'+this.name+'</a></li>');
263                });
264                aHtml.push('</ul>');
265
266
267                var offset = $(overNode).offset();
268                $('<div class="sub-category"></div>')
269                    .appendTo(overNode)
270                    .html(aHtml.join(''))
271                    .find('li').mouseover(function(e) {
272                        $(this).addClass('over').find('a').stop(true).animate({'color':'#ea8b91'},200);
273                    }).mouseout(function(e) {
274                        $(this).removeClass('over').find('a').stop(true).animate({'color':'#7b7b7b'},200);
275                    });
276            },
277
278            close: function() {
279                $('.sub-category').remove();
280            }
281        };
282
283        methods.get();
284        
285        $('.xans-layout-category li').mouseenter(function(e) {
286            var $this = $(this).addClass('on'),
287            iCateNo = Number(methods.getParam($this.find('a').attr('href'), 'cate_no'));
288
289            if (!iCateNo) {
290                iCateNo = Number(methods.getParamSeo($this.find('a').attr('href')));
291            }
292
293            if (!iCateNo) {
294               return;
295            }
296
297
298            methods.show($this, iCateNo);
299         }).mouseleave(function(e) {
300            $(this).removeClass('on');
301
302              methods.close();
303         });        
304        
305        // 전체 카테고리 노출
306        if( $('[rel="jourboo"]').size() == 0 ){
307            var $cate = '';
308            $.ajax({
309                url: '/exec/front/Product/SubCategory',
310                dataType : 'json',
311                success: function(data) {
312                    // name,param,cate_no,parent_cate_no,design_page_url
313                    $.each(data, function(m,key) {
314                        if(key.parent_cate_no=='1'){
315                            $cate += '<li class="all-category-list"><a class="fade" href="/product/list.html' + key.param +'">'+ key.name +'</a>';
316                            $cate += '	<ul class="all-sub-category-list-wrap">';
317                            $.each(data, function(n,sub) {
318                                if( key.cate_no == sub.parent_cate_no ){
319                                    $cate += '<li class="all-sub-category-list"><a href="/product/list.html' + sub.param +'">'+ sub.name +'</a></li>';
320                                }
321                            });
322                            $cate += '	</ul>';
323                            $cate += '</li>';
324                        };                
325                    });
326
327                    // 전체카테고리 삽입하려는 선택자 선택
328                    $('.all-category-wrap .all-category-list-wrap').each(function() {
329                        $(this).append( '<ul class="all-category-wrap">'+ $cate +'</ul>' ).find('ul.all-sub-category-list-wrap>li>a').hover(function() {
330                            $(this).stop(true).animate({'color':'#ea8b91'});
331                        },function() {
332                            $(this).stop(true).animate({'color':'#7b7b7b'});
333                        }).end().find('a.fade').hover(function() {
334                            $(this).stop(true).animate({'opacity':'.4'},200);
335                        },function() {
336                            $(this).stop(true).animate({'opacity':'1'},200);
337                        });
338                    });
339
340                }
341            });
342        };        
343        
344        // 공통 메뉴 오버 시
345        $('.fade, .ec-base-button a').hover(function() {
346            $(this).stop(true).animate({'opacity':'.4'},200);
347        },function() {
348            $(this).stop(true).animate({'opacity':'1'},200);
349        });
350        
351        // 상단 상품 메뉴 오버 시 영문 메뉴 노출
352        $('.header-bottom-wrap .top-product-category-wrap ul>
352li.cate-one').hover(function() {
353            //$(this).find('span.over-cate').stop(true).fadeIn(200);
354        },function() {
355            //$(this).find('span.over-cate').stop(true).fadeOut(200);
356        });
357        
358        // 상단 영역 서브 메뉴 오버 시
359        $('.header-bottom-wrap .top-product-category-wrap ul li .sub-category li a, .header-bottom-wrap .top-event-category-wrap ul li .sub-category-two li a').hover(function() {
360            $(this).stop(true).animate({'color':'#ea8b91'});
361        },function() {
362            $(this).stop(true).animate({'color':'#7b7b7b'});
363        });
364        
365        // sns 메뉴 오버 시
366        $('ul.sns-list li').hover(function() {
367            $(this).find('img.hover-img').fadeIn(200);
368        },function() {
369            $(this).find('img.hover-img').fadeOut(200);
370        });
371        
372        //상단 띠배너 닫기
373        $('a.btn-top-banner-close').click(function(e) {
374            
375            if($('.top-banner-wrap').css('display') == 'block') {
376                Cookies.set('lts', 'lts',{ expires: 1, path: '/' });
377                $('.top-banner-wrap').slideUp();
378                $(this).hide();
379            } else {
380                Cookies.remove('lts',{ path: '/' });
381            }
382            e.preventDefault();
383        });
384        
385        if(Cookies.get('lts') == 'lts') {
386            $('.top-banner-wrap').hide();
387            $('a.btn-top-banner-close').hide();
388        }else{
389            $('.top-banner-wrap').show();
390            $('a.btn-top-banner-close').show();
391        }        
392
393        // 전체 카테고리 노출
394        $('.all-category-wrap').hover(function() {
395            $(this).find('.all-category-list-wrap').show();
396        },function() {
397            $(this).find('.all-category-list-wrap').hide();
398        });
399        
400        // 스크롤 시 픽스 상단 영역 노출/비노출
401        $(window).scroll(function() {
402            if($(this).scrollTop() > 287) {
403                $('#fix-header').stop(true).animate({'top':'0'},200);
404                $('a.btn-top-banner-close').fadeOut();
405            } else {
406                $('#fix-header').stop(true).animate({'top':'-60px'},200);
407                $('a.btn-top-banner-close').fadeIn();
408            }
409        });
410            
411        // 상품 넘버링, 상품명 글자수 제한
412        $('.ec-base-product .prdList > li').each(function(numz) {
413            var $prdText = $(this).find('span.product-name > span').text().substring(0,40);
414            numz ++;
415            
416            $('span.product-count',this).append(numz);
417            $(this).find('span.product-name > span').text($prdText+'...');
418        });    
419        
420        // 우측 사이드 메뉴 토글 버튼 관련
421		var _rbtz = $('#side-wrap a.btn-side-toggle');
422        
423		$(_rbtz).on('click',function(e){
424			var _posir = $('#side-wrap').css('right');
425			if(_posir == '0px'){
426				$('#side-wrap').animate({'right':'-175px'});
427				_rbtz.addClass('on');
428                _rbtz.css('right','14px');
429                $('.side-slide-banner-wrap').hide();
430                $('.xans-layout-productrecent').removeClass('on');
431				Cookies.remove('cks',{ path: '/' });
432			}else if(_posir == '-175px'){
433				$('#side-wrap').animate({'right':'0px'});
434                _rbtz.removeClass('on');
435                _rbtz.css('right','189px');
436				Cookies.set('cks', 'cks',{ expires: 1, path: '/' });	
437                $('.side-slide-banner-wrap').show();
438                $('.xans-layout-productrecent').addClass('on');
439			}
440            e.preventDefault();
441     
442		});
443
444		// 우측 사이드 메뉴 쿠키값 로드 시
445		if(Cookies.get('cks') == 'cks'){
446			$('#side-wrap').animate({'right':'-0px'});
447			_rbtz.removeClass('on').css('right','189px');
448            $('.side-slide-banner-wrap').show();
449            $('.xans-layout-productrecent').addClass('on');
450		}else{
451			$('#side-wrap').animate({'right':'-175px'});
452			_rbtz.addClass('on').css('right','14px');
453            $('.side-slide-banner-wrap').hide();
454           
455		}   
456        
457        // 스크롤 탑 버튼 클릭 시 페이지 스크롤 이동
458        $('a.btn-scroll-up').click(function(e) {
459            $('html, body').animate({scrollTop:0},400);
460            e.preventDefault();
461        });
462        
463        // 스크롤 하단 버튼 클릭 시 페이지 스크롤 이동
464        $('a.btn-scroll-down').click(function(e) {
465            $('html, body').animate({scrollTop:$(document).height()},400);
466            e.preventDefault();
467        });        
468        
469        // 페이지 네비게이션
470        $('.path li:eq(0) a').text('HOME');
471        $('.path li.displaynone').prev('li').addClass('on');
472        
473        //페이징 버튼 관련
474        $('.ec-base-paginate a.first img').attr('src','/web/designwib/btn/btn-page-first.png');
475        $('.ec-base-paginate a.first').next('a').find('img').attr('src','/web/designwib/btn/btn-page-prev.png');
476        $('.ec-base-paginate a.last img').attr('src','/web/designwib/btn/btn-page-last.png');
477        $('.ec-base-paginate a.last').prev('a').find('img').attr('src','/web/designwib/btn/btn-page-next.png'); 
478        $('.mypage-pagination a.first img').attr('src','/web/designwib/btn/btn-mypage-page-first.jpg');
479        $('.mypage-pagination a.first').next('a').find('img').attr('src','/web/designwib/btn/btn-mypage-page-prev.jpg');
480        $('.mypage-pagination a.last img').attr('src','/web/designwib/btn/btn-mypage-page-last.jpg');
481        $('.mypage-pagination a.last').prev('a').find('img').attr('src','/web/designwib/btn/btn-mypage-page-next.jpg');                 
482     
483        // 검색 페이지 필터 클래스 지정
484        $('.xans-search-form .searchResult .listType li[style="font-weight:bold"]').addClass('on');
485        
486        // 이용안내 탭 메뉴 클릭 시 스크롤 이동
487        $('.xans-mall-faq .ec-base-tab[class*="grid"] .menu li a').click(function() {
488            var $thisScroll = $(this.hash).offset().top;
489            $('html, body').animate({scrollTop : $thisScroll - 100},400);
490        });        
491        
492        // 게시판 관련
493        $('.board-menu-list-wrap ul li').each(function() {
494            if($('.path li strong').text() == $(this).text()) {
495                $(this).find('a').addClass('current').end().parents('.board-menu-list-wrap').show();
496            } 
497            if($('.path li strong').text() == '사용후기') {
498                $('.board-banner-wrap.review').show();
499            }
500            if($('.path li strong').text() == '베이비앙 포토앙') {
501                $('.board-banner-wrap.photo-review').show();
502            }
503            if($('.path li strong').text() == '이달의 이벤트') {
504                $('.board-banner-wrap.event').show();
505            }
506            if($('.path li strong').text() == '출산예정 이벤트') {
507                $('.board-banner-wrap.due-date').show();
508            }
509        });
510        
511        // 하단 제휴문의 팝업 배너
512        $('footer .footer-top-wrap .footer-top-left-menu ul li.partnership a.fade').click(function(e) {
513            $(this).next('.popup-partnership').show();
514            e.preventDefault();
515        });
516
517        $('footer .popup-partnership .x').click(function(e) {
518            $('.popup-partnership').hide();
519            e.preventDefault();
520        });            
521
522
523    });
524    
525})(jQuery1_11_0);
526
527
528// 적립금 아이콘 효과
529
530upDown = setInterval(function() {
531    $('.header-top-wrap .header-top-right ul>li.join span').animate({'bottom':'-15'},600,function() {
532        $('.header-top-wrap .header-top-right ul>li.join span').animate({'bottom':'-20'},600);
533    });
534    $('.btn-scroll-wrap a span').animate({'top':'5px'},600,function() {
535            $('.btn-scroll-wrap a span').animate({'top':'8px'},600);
536        });    
537},1200);
538/*!
539* jQuery Cycle2; version: 2.1.6 build: 20141007
540* http://jquery.malsup.com/cycle2/
541* Copyright (c) 2014 M. Alsup; Dual licensed: MIT/GPL
542*/
543(function ($) {
544    var jQuery = $;
vendor: 10,280 bytes, line 545
545!function(a){"use strict";function b(a){return(a||"").toLowerCase()}var c="2.1.6";a.fn.cycle=function(c){var d;return 0!==this.length||a.isReady?this.each(function(){var d,e,f,g,h=a(this),i=a.fn.cycle.log;if(!h.data("cycle.opts")){(h.data("cycle-log")===!1||c&&c.log===!1||e&&e.log===!1)&&(i=a.noop),i("--c2 init--"),d=h.data();for(var j in d)d.hasOwnProperty(j)&&/^cycle[A-Z]+/.test(j)&&(g=d[j],f=j.match(/^cycle(.*)/)[1].replace(/^[A-Z]/,b),i(f+":",g,"("+typeof g+")"),d[f]=g);e=a.extend({},a.fn.cycle.defaults,d,c||{}),e.timeoutId=0,e.paused=e.paused||!1,e.container=h,e._maxZ=e.maxZ,e.API=a.extend({_container:h},a.fn.cycle.API),e.API.log=i,e.API.trigger=function(a,b){return e.container.trigger(a,b),e.API},h.data("cycle.opts",e),h.data("cycle.API",e.API),e.API.trigger("cycle-bootstrap",[e,e.API]),e.API.addInitialSlides(),e.API.preInitSlideshow(),e.slides.length&&e.API.initSlideshow()}}):(d={s:this.selector,c:this.context},a.fn.cycle.log("requeuing slideshow (dom not ready)"),a(function(){a(d.s,d.c).cycle(c)}),this)},a.fn.cycle.API={opts:function(){return this._container.data("cycle.opts")},addInitialSlides:function(){var b=this.opts(),c=b.slides;b.slideCount=0,b.slides=a(),c=c.jquery?c:b.container.find(c),b.random&&c.sort(function(){return Math.random()-.5}),b.API.add(c)},preInitSlideshow:function(){var b=this.opts();b.API.trigger("cycle-pre-initialize",[b]);var c=a.fn.cycle.transitions[b.fx];c&&a.isFunction(c.preInit)&&c.preInit(b),b._preInitialized=!0},postInitSlideshow:function(){var b=this.opts();b.API.trigger("cycle-post-initialize",[b]);var c=a.fn.cycle.transitions[b.fx];c&&a.isFunction(c.postInit)&&c.postInit(b)},initSlideshow:function(){var b,c=this.opts(),d=c.container;c.API.calcFirstSlide(),"static"==c.container.css("position")&&c.container.css("position","relative"),a(c.slides[c.currSlide]).css({opacity:1,display:"block",visibility:"visible"}),c.API.stackSlides(c.slides[c.currSlide],c.slides[c.nextSlide],!c.reverse),c.pauseOnHover&&(c.pauseOnHover!==!0&&(d=a(c.pauseOnHover)),d.hover(function(){c.API.pause(!0)},function(){c.API.resume(!0)})),c.timeout&&(b=c.API.getSlideOpts(c.currSlide),c.API.queueTransition(b,b.timeout+c.delay)),c._initialized=!0,c.API.updateView(!0),c.API.trigger("cycle-initialized",[c]),c.API.postInitSlideshow()},pause:function(b){var c=this.opts(),d=c.API.getSlideOpts(),e=c.hoverPaused||c.paused;b?c.hoverPaused=!0:c.paused=!0,e||(c.container.addClass("cycle-paused"),c.API.trigger("cycle-paused",[c]).log("cycle-paused"),d.timeout&&(clearTimeout(c.timeoutId),c.timeoutId=0,c._remainingTimeout-=a.now()-c._lastQueue,(c._remainingTimeout<0||isNaN(c._remainingTimeout))&&(c._remainingTimeout=void 0)))},resume:function(a){var b=this.opts(),c=!b.hoverPaused&&!b.paused;a?b.hoverPaused=!1:b.paused=!1,c||(b.container.removeClass("cycle-paused"),0===b.slides.filter(":animated").length&&b.API.queueTransition(b.API.getSlideOpts(),b._remainingTimeout),b.API.trigger("cycle-resumed",[b,b._remainingTimeout]).log("cycle-resumed"))},add:function(b,c){var d,e=this.opts(),f=e.slideCount,g=!1;"string"==a.type(b)&&(b=a.trim(b)),a(b).each(function(){var b,d=a(this);c?e.container.prepend(d):e.container.append(d),e.slideCount++,b=e.API.buildSlideOpts(d),e.slides=c?a(d).add(e.slides):e.slides.add(d),e.API.initSlide(b,d,--e._maxZ),d.data("cycle.opts",b),e.API.trigger("cycle-slide-added",[e,b,d])}),e.API.updateView(!0),g=e._preInitialized&&2>f&&e.slideCount>=1,g&&(e._initialized?e.timeout&&(d=e.slides.length,e.nextSlide=e.reverse?d-1:1,e.timeoutId||e.API.queueTransition(e)):e.API.initSlideshow())},calcFirstSlide:function(){var a,b=this.opts();a=parseInt(b.startingSlide||0,10),(a>=b.slides.length||0>a)&&(a=0),b.currSlide=a,b.reverse?(b.nextSlide=a-1,b.nextSlide<0&&(b.nextSlide=b.slides.length-1)):(b.nextSlide=a+1,b.nextSlide==b.slides.length&&(b.nextSlide=0))},calcNextSlide:function(){var a,b=this.opts();b.reverse?(a=b.nextSlide-1<0,b.nextSlide=a?b.slideCount-1:b.nextSlide-1,b.currSlide=a?0:b.nextSlide+1):(a=b.nextSlide+1==b.slides.length,b.nextSlide=a?0:b.nextSlide+1,b.currSlide=a?b.slides.length-1:b.nextSlide-1)},calcTx:function(b,c){var d,e=b;return e._tempFx?d=a.fn.cycle.transitions[e._tempFx]:c&&e.manualFx&&(d=a.fn.cycle.transitions[e.manualFx]),d||(d=a.fn.cycle.transitions[e.fx]),e._tempFx=null,this.opts()._tempFx=null,d||(d=a.fn.cycle.transitions.fade,e.API.log('Transition "'+e.fx+'" not found.  Using fade.')),d},prepareTx:function(a,b){var c,d,e,f,g,h=this.opts();return h.slideCount<2?void(h.timeoutId=0):(!a||h.busy&&!h.manualTrump||(h.API.stopTransition(),h.busy=!1,clearTimeout(h.timeoutId),h.timeoutId=0),void(h.busy||(0!==h.timeoutId||a)&&(d=h.slides[h.currSlide],e=h.slides[h.nextSlide],f=h.API.getSlideOpts(h.nextSlide),g=h.API.calcTx(f,a),h._tx=g,a&&void 0!==f.manualSpeed&&(f.speed=f.manualSpeed),h.nextSlide!=h.currSlide&&(a||!h.paused&&!h.hoverPaused&&h.timeout)?(h.API.trigger("cycle-before",[f,d,e,b]),g.before&&g.before(f,d,e,b),c=function(){h.busy=!1,h.container.data("cycle.opts")&&(g.after&&g.after(f,d,e,b),h.API.trigger("cycle-after",[f,d,e,b]),h.API.queueTransition(f),h.API.updateView(!0))},h.busy=!0,g.transition?g.transition(f,d,e,b,c):h.API.doTransition(f,d,e,b,c),h.API.calcNextSlide(),h.API.updateView()):h.API.queueTransition(f))))},doTransition:function(b,c,d,e,f){var g=b,h=a(c),i=a(d),j=function(){i.animate(g.animIn||{opacity:1},g.speed,g.easeIn||g.easing,f)};i.css(g.cssBefore||{}),h.animate(g.animOut||{},g.speed,g.easeOut||g.easing,function(){h.css(g.cssAfter||{}),g.sync||j()}),g.sync&&j()},queueTransition:function(b,c){var d=this.opts(),e=void 0!==c?c:b.timeout;return 0===d.nextSlide&&0===--d.loop?(d.API.log("terminating; loop=0"),d.timeout=0,e?setTimeout(function(){d.API.trigger("cycle-finished",[d])},e):d.API.trigger("cycle-finished",[d]),void(d.nextSlide=d.currSlide)):void 0!==d.continueAuto&&(d.continueAuto===!1||a.isFunction(d.continueAuto)&&d.continueAuto()===!1)?(d.API.log("terminating automatic transitions"),d.timeout=0,void(d.timeoutId&&clearTimeout(d.timeoutId))):void(e&&(d._lastQueue=a.now(),void 0===c&&(d._remainingTimeout=b.timeout),d.paused||d.hoverPaused||(d.timeoutId=setTimeout(function(){d.API.prepareTx(!1,!d.reverse)},e))))},stopTransition:function(){var a=this.opts();a.slides.filter(":animated").length&&(a.slides.stop(!1,!0),a.API.trigger("cycle-transition-stopped",[a])),a._tx&&a._tx.stopTransition&&a._tx.stopTransition(a)},advanceSlide:function(a){var b=this.opts();return clearTimeout(b.timeoutId),b.timeoutId=0,b.nextSlide=b.currSlide+a,b.nextSlide<0?b.nextSlide=b.slides.length-1:b.nextSlide>=b.slides.length&&(b.nextSlide=0),b.API.prepareTx(!0,a>=0),!1},buildSlideOpts:function(c){var d,e,f=this.opts(),g=c.data()||{};for(var h in g)g.hasOwnProperty(h)&&/^cycle[A-Z]+/.test(h)&&(d=g[h],e=h.match(/^cycle(.*)/)[1].replace(/^[A-Z]/,b),f.API.log("["+(f.slideCount-1)+"]",e+":",d,"("+typeof d+")"),g[e]=d);g=a.extend({},a.fn.cycle.defaults,f,g),g.slideNum=f.slideCount;try{delete g.API,delete g.slideCount,delete g.currSlide,delete g.nextSlide,delete g.slides}catch(i){}return g},getSlideOpts:function(b){var c=this.opts();void 0===b&&(b=c.currSlide);var d=c.slides[b],e=a(d).data("cycle.opts");return a.extend({},c,e)},initSlide:function(b,c,d){var e=this.opts();c.css(b.slideCss||{}),d>0&&c.css("zIndex",d),isNaN(b.speed)&&(b.speed=a.fx.speeds[b.speed]||a.fx.speeds._default),b.sync||(b.speed=b.speed/2),c.addClass(e.slideClass)},updateView:function(a,b){var c=this.opts();if(c._initialized){var d=c.API.getSlideOpts(),e=c.slides[c.currSlide];!a&&b!==!0&&(c.API.trigger("cycle-update-view-before",[c,d,e]),c.updateView<0)||(c.slideActiveClass&&c.slides.removeClass(c.slideActiveClass).eq(c.currSlide).addClass(c.slideActiveClass),a&&c.hideNonActive&&c.slides.filter(":not(."+c.slideActiveClass+")").css("visibility","hidden"),0===c.updateView&&setTimeout(function(){c.API.trigger("cycle-update-view",[c,d,e,a])},d.speed/(c.sync?2:1)),0!==c.updateView&&c.API.trigger("cycle-update-view",[c,d,e,a]),a&&c.API.trigger("cycle-update-view-after",[c,d,e]))}},getComponent:function(b){var c=this.opts(),d=c[b];return"string"==typeof d?/^\s*[\>|\+|~]/.test(d)?c.container.find(d):a(d):d.jquery?d:a(d)},stackSlides:function(b,c,d){var e=this.opts();b||(b=e.slides[e.currSlide],c=e.slides[e.nextSlide],d=!e.reverse),a(b).css("zIndex",e.maxZ);var f,g=e.maxZ-2,h=e.slideCount;if(d){for(f=e.currSlide+1;h>f;f++)a(e.slides[f]).css("zIndex",g--);for(f=0;f<e.currSlide;f++)a(e.slides[f]).css("zIndex",g--)}else{for(f=e.currSlide-1;f>=0;f--)a(e.slides[f]).css("zIndex",g--);for(f=h-1;f>e.currSlide;f--)a(e.slides[f]).css("zIndex",g--)}a(c).css("zIndex",e.maxZ-1)},getSlideIndex:function(a){return this.opts().slides.index(a)}},a.fn.cycle.log=function(){window.console&&console.log&&console.log("[cycle2] "+Array.prototype.join.call(arguments," "))},a.fn.cycle.version=function(){return"Cycle2: "+c},a.fn.cycle.transitions={custom:{},none:{before:function(a,b,c,d){a.API.stackSlides(c,b,d),a.cssBefore={opacity:1,visibility:"visible",display:"block"}}},fade:{before:function(b,c,d,e){var f=b.API.getSlideOpts(b.nextSlide).slideCss||{};b.API.stackSlides(c,d,e),b.cssBefore=a.extend(f,{opacity:0,visibility:"visible",display:"block"}),b.animIn={opacity:1},b.animOut={opacity:0}}},fadeout:{before:function(b,c,d,e){var f=b.API.getSlideOpts(b.nextSlide).slideCss||{};b.API.stackSlides(c,d,e),b.cssBefore=a.extend(f,{opacity:1,visibility:"visible",display:"block"}),b.animOut={opacity:0}}},scrollHorz:{before:function(a,b,c,d){a.API.stackSlides(b,c,d);var e=a.container.css("overflow","hidden").width();a.cssBefore={left:d?e:-e,top:0,opacity:1,visibility:"visible",display:"block"},a.cssAfter={zIndex:a._maxZ-2,left:0},a.animIn={left:0},a.animOut={left:d?-e:e}}}},a.fn.cycle.defaults={allowWrap:!0,autoSelector:".cycle-slideshow[data-cycle-auto-init!=false]",delay:0,easing:null,fx:"fade",hideNonActive:!0,loop:0,manualFx:void 0,manualSpeed:void 0,manualTrump:!0,maxZ:100,pauseOnHover:!1,reverse:!1,slideActiveClass:"cycle-slide-active",slideClass:"cycle-slide",slideCss:{position:"absolute",top:0,left:0},slides:"> img",speed:500,startingSlide:0,sync:!0,timeout:4e3,updateView:0},a(document).ready(function(){a(a.fn.cycle.defaults.autoSelector).cycle()})}(jQuery),/*! Cycle2 autoheight plugin; Copyright (c) M.Alsup, 2012; version: 20130913 */
vendor: 13,969 bytes, lines 545-625
545
546function(a){"use strict";function b(b,d){var e,f,g,h=d.autoHeight;if("container"==h)f=a(d.slides[d.currSlide]).outerHeight(),d.container.height(f);else if(d._autoHeightRatio)d.container.height(d.container.width()/d._autoHeightRatio);else if("calc"===h||"number"==a.type(h)&&h>=0){if(g="calc"===h?c(b,d):h>=d.slides.length?0:h,g==d._sentinelIndex)return;d._sentinelIndex=g,d._sentinel&&d._sentinel.remove(),e=a(d.slides[g].cloneNode(!0)),e.removeAttr("id name rel").find("[id],[name],[rel]").removeAttr("id name rel"),e.css({position:"static",visibility:"hidden",display:"block"}).prependTo(d.container).addClass("cycle-sentinel cycle-slide").removeClass("cycle-slide-active"),e.find("*").css("visibility","hidden"),d._sentinel=e}}function c(b,c){var d=0,e=-1;return c.slides.each(function(b){var c=a(this).height();c>e&&(e=c,d=b)}),d}function d(b,c,d,e){var f=a(e).outerHeight();c.container.animate({height:f},c.autoHeightSpeed,c.autoHeightEasing)}function e(c,f){f._autoHeightOnResize&&(a(window).off("resize orientationchange",f._autoHeightOnResize),f._autoHeightOnResize=null),f.container.off("cycle-slide-added cycle-slide-removed",b),f.container.off("cycle-destroyed",e),f.container.off("cycle-before",d),f._sentinel&&(f._sentinel.remove(),f._sentinel=null)}a.extend(a.fn.cycle.defaults,{autoHeight:0,autoHeightSpeed:250,autoHeightEasing:null}),a(document).on("cycle-initialized",function(c,f){function g(){b(c,f)}var h,i=f.autoHeight,j=a.type(i),k=null;("string"===j||"number"===j)&&(f.container.on("cycle-slide-added cycle-slide-removed",b),f.container.on("cycle-destroyed",e),"container"==i?f.container.on("cycle-before",d):"string"===j&&/\d+\:\d+/.test(i)&&(h=i.match(/(\d+)\:(\d+)/),h=h[1]/h[2],f._autoHeightRatio=h),"number"!==j&&(f._autoHeightOnResize=function(){clearTimeout(k),k=setTimeout(g,50)},a(window).on("resize orientationchange",f._autoHeightOnResize)),setTimeout(g,30))})}(jQuery),/*! caption plugin for Cycle2;  version: 20130306 */
547function(a){"use strict";a.extend(a.fn.cycle.defaults,{caption:"> .cycle-caption",captionTemplate:"{{slideNum}} / {{slideCount}}",overlay:"> .cycle-overlay",overlayTemplate:"<div>{{title}}</div><div>{{desc}}</div>",captionModule:"caption"}),a(document).on("cycle-update-view",function(b,c,d,e){if("caption"===c.captionModule){a.each(["caption","overlay"],function(){var a=this,b=d[a+"Template"],f=c.API.getComponent(a);f.length&&b?(f.html(c.API.tmpl(b,d,c,e)),f.show()):f.hide()})}}),a(document).on("cycle-destroyed",function(b,c){var d;a.each(["caption","overlay"],function(){var a=this,b=c[a+"Template"];c[a]&&b&&(d=c.API.getComponent("caption"),d.empty())})})}(jQuery),/*! command plugin for Cycle2;  version: 20140415 */
548function(a){"use strict";var b=a.fn.cycle;a.fn.cycle=function(c){var d,e,f,g=a.makeArray(arguments);return"number"==a.type(c)?this.cycle("goto",c):"string"==a.type(c)?this.each(function(){var h;return d=c,f=a(this).data("cycle.opts"),void 0===f?void b.log('slideshow must be initialized before sending commands; "'+d+'" ignored'):(d="goto"==d?"jump":d,e=f.API[d],a.isFunction(e)?(h=a.makeArray(g),h.shift(),e.apply(f.API,h)):void b.log("unknown command: ",d))}):b.apply(this,arguments)},a.extend(a.fn.cycle,b),a.extend(b.API,{next:function(){var a=this.opts();if(!a.busy||a.manualTrump){var b=a.reverse?-1:1;a.allowWrap===!1&&a.currSlide+b>=a.slideCount||(a.API.advanceSlide(b),a.API.trigger("cycle-next",[a]).log("cycle-next"))}},prev:function(){var a=this.opts();if(!a.busy||a.manualTrump){var b=a.reverse?1:-1;a.allowWrap===!1&&a.currSlide+b<0||(a.API.advanceSlide(b),a.API.trigger("cycle-prev",[a]).log("cycle-prev"))}},destroy:function(){this.stop();var b=this.opts(),c=a.isFunction(a._data)?a._data:a.noop;clearTimeout(b.timeoutId),b.timeoutId=0,b.API.stop(),b.API.trigger("cycle-destroyed",[b]).log("cycle-destroyed"),b.container.removeData(),c(b.container[0],"parsedAttrs",!1),b.retainStylesOnDestroy||(b.container.removeAttr("style"),b.slides.removeAttr("style"),b.slides.removeClass(b.slideActiveClass)),b.slides.each(function(){var d=a(this);d.removeData(),d.removeClass(b.slideClass),c(this,"parsedAttrs",!1)})},jump:function(a,b){var c,d=this.opts();if(!d.busy||d.manualTrump){var e=parseInt(a,10);if(isNaN(e)||0>e||e>=d.slides.length)return void d.API.log("goto: invalid slide index: "+e);if(e==d.currSlide)return void d.API.log("goto: skipping, already on slide",e);d.nextSlide=e,clearTimeout(d.timeoutId),d.timeoutId=0,d.API.log("goto: ",e," (zero-index)"),c=d.currSlide<d.nextSlide,d._tempFx=b,d.API.prepareTx(!0,c)}},stop:function(){var b=this.opts(),c=b.container;clearTimeout(b.timeoutId),b.timeoutId=0,b.API.stopTransition(),b.pauseOnHover&&(b.pauseOnHover!==!0&&(c=a(b.pauseOnHover)),c.off("mouseenter mouseleave")),b.API.trigger("cycle-stopped",[b]).log("cycle-stopped")},reinit:function(){var a=this.opts();a.API.destroy(),a.container.cycle()},remove:function(b){for(var c,d,e=this.opts(),f=[],g=1,h=0;h<e.slides.length;h++)c=e.slides[h],h==b?d=c:(f.push(c),a(c).data("cycle.opts").slideNum=g,g++);d&&(e.slides=a(f),e.slideCount--,a(d).remove(),b==e.currSlide?e.API.advanceSlide(1):b<e.currSlide?e.currSlide--:e.currSlide++,e.API.trigger("cycle-slide-removed",[e,b,d]).log("cycle-slide-removed"),e.API.updateView())}}),a(document).on("click.cycle","[data-cycle-cmd]",function(b){b.preventDefault();var c=a(this),d=c.data("cycle-cmd"),e=c.data("cycle-context")||".cycle-slideshow";a(e).cycle(d,c.data("cycle-arg"))})}(jQuery),/*! hash plugin for Cycle2;  version: 20130905 */
549function(a){"use strict";function b(b,c){var d;return b._hashFence?void(b._hashFence=!1):(d=window.location.hash.substring(1),void b.slides.each(function(e){if(a(this).data("cycle-hash")==d){if(c===!0)b.startingSlide=e;else{var f=b.currSlide<e;b.nextSlide=e,b.API.prepareTx(!0,f)}return!1}}))}a(document).on("cycle-pre-initialize",function(c,d){b(d,!0),d._onHashChange=function(){b(d,!1)},a(window).on("hashchange",d._onHashChange)}),a(document).on("cycle-update-view",function(a,b,c){c.hash&&"#"+c.hash!=window.location.hash&&(b._hashFence=!0,window.location.hash=c.hash)}),a(document).on("cycle-destroyed",function(b,c){c._onHashChange&&a(window).off("hashchange",c._onHashChange)})}(jQuery),/*! loader plugin for Cycle2;  version: 20131121 */
550function(a){"use strict";a.extend(a.fn.cycle.defaults,{loader:!1}),a(document).on("cycle-bootstrap",function(b,c){function d(b,d){function f(b){var f;"wait"==c.loader?(h.push(b),0===j&&(h.sort(g),e.apply(c.API,[h,d]),c.container.removeClass("cycle-loading"))):(f=a(c.slides[c.currSlide]),e.apply(c.API,[b,d]),f.show(),c.container.removeClass("cycle-loading"))}function g(a,b){return a.data("index")-b.data("index")}var h=[];if("string"==a.type(b))b=a.trim(b);else if("array"===a.type(b))for(var i=0;i<b.length;i++)b[i]=a(b[i])[0];b=a(b);var j=b.length;j&&(b.css("visibility","hidden").appendTo("body").each(function(b){function g(){0===--i&&(--j,f(k))}var i=0,k=a(this),l=k.is("img")?k:k.find("img");return k.data("index",b),l=l.filter(":not(.cycle-loader-ignore)").filter(':not([src=""])'),l.length?(i=l.length,void l.each(function(){this.complete?g():a(this).load(function(){g()}).on("error",function(){0===--i&&(c.API.log("slide skipped; img not loaded:",this.src),0===--j&&"wait"==c.loader&&e.apply(c.API,[h,d]))})})):(--j,void h.push(k))}),j&&c.container.addClass("cycle-loading"))}var e;c.loader&&(e=c.API.add,c.API.add=d)})}(jQuery),/*! pager plugin for Cycle2;  version: 20140415 */
551function(a){"use strict";function b(b,c,d){var e,f=b.API.getComponent("pager");f.each(function(){var f=a(this);if(c.pagerTemplate){var g=b.API.tmpl(c.pagerTemplate,c,b,d[0]);e=a(g).appendTo(f)}else e=f.children().eq(b.slideCount-1);e.on(b.pagerEvent,function(a){b.pagerEventBubble||a.preventDefault(),b.API.page(f,a.currentTarget)})})}function c(a,b){var c=this.opts();if(!c.busy||c.manualTrump){var d=a.children().index(b),e=d,f=c.currSlide<e;c.currSlide!=e&&(c.nextSlide=e,c._tempFx=c.pagerFx,c.API.prepareTx(!0,f),c.API.trigger("cycle-pager-activated",[c,a,b]))}}a.extend(a.fn.cycle.defaults,{pager:"> .cycle-pager",pagerActiveClass:"cycle-pager-active",pagerEvent:"click.cycle",pagerEventBubble:void 0,pagerTemplate:"<span>&bull;</span>"}),a(document).on("cycle-bootstrap",function(a,c,d){d.buildPagerLink=b}),a(document).on("cycle-slide-added",function(a,b,d,e){b.pager&&(b.API.buildPagerLink(b,d,e),b.API.page=c)}),a(document).on("cycle-slide-removed",function(b,c,d){if(c.pager){var e=c.API.getComponent("pager");e.each(function(){var b=a(this);a(b.children()[d]).remove()})}}),a(document).on("cycle-update-view",function(b,c){var d;c.pager&&(d=c.API.getComponent("pager"),d.each(function(){a(this).children().removeClass(c.pagerActiveClass).eq(c.currSlide).addClass(c.pagerActiveClass)}))}),a(document).on("cycle-destroyed",function(a,b){var c=b.API.getComponent("pager");c&&(c.children().off(b.pagerEvent),b.pagerTemplate&&c.empty())})}(jQuery),/*! prevnext plugin for Cycle2;  version: 20140408 */
552function(a){"use strict";a.extend(a.fn.cycle.defaults,{next:"> .cycle-next",nextEvent:"click.cycle",disabledClass:"disabled",prev:"> .cycle-prev",prevEvent:"click.cycle",swipe:!1}),a(document).on("cycle-initialized",function(a,b){if(b.API.getComponent("next").on(b.nextEvent,function(a){a.preventDefault(),b.API.next()}),b.API.getComponent("prev").on(b.prevEvent,function(a){a.preventDefault(),b.API.prev()}),b.swipe){var c=b.swipeVert?"swipeUp.cycle":"swipeLeft.cycle swipeleft.cycle",d=b.swipeVert?"swipeDown.cycle":"swipeRight.cycle swiperight.cycle";b.container.on(c,function(){b._tempFx=b.swipeFx,b.API.next()}),b.container.on(d,function(){b._tempFx=b.swipeFx,b.API.prev()})}}),a(document).on("cycle-update-view",function(a,b){if(!b.allowWrap){var c=b.disabledClass,d=b.API.getComponent("next"),e=b.API.getComponent("prev"),f=b._prevBoundry||0,g=void 0!==b._nextBoundry?b._nextBoundry:b.slideCount-1;b.currSlide==g?d.addClass(c).prop("disabled",!0):d.removeClass(c).prop("disabled",!1),b.currSlide===f?e.addClass(c).prop("disabled",!0):e.removeClass(c).prop("disabled",!1)}}),a(document).on("cycle-destroyed",function(a,b){b.API.getComponent("prev").off(b.nextEvent),b.API.getComponent("next").off(b.prevEvent),b.container.off("swipeleft.cycle swiperight.cycle swipeLeft.cycle swipeRight.cycle swipeUp.cycle swipeDown.cycle")})}(jQuery),/*! progressive loader plugin for Cycle2;  version: 20130315 */
553function(a){"use strict";a.extend(a.fn.cycle.defaults,{progressive:!1}),a(document).on("cycle-pre-initialize",function(b,c){if(c.progressive){var d,e,f=c.API,g=f.next,h=f.prev,i=f.prepareTx,j=a.type(c.progressive);if("array"==j)d=c.progressive;else if(a.isFunction(c.progressive))d=c.progressive(c);else if("string"==j){if(e=a(c.progressive),d=a.trim(e.html()),!d)return;if(/^(\[)/.test(d))try{d=a.parseJSON(d)}catch(k){return void f.log("error parsing progressive slides",k)}else d=d.split(new RegExp(e.data("cycle-split")||"\n")),d[d.length-1]||d.pop()}i&&(f.prepareTx=function(a,b){var e,f;return a||0===d.length?void i.apply(c.API,[a,b]):void(b&&c.currSlide==c.slideCount-1?(f=d[0],d=d.slice(1),c.container.one("cycle-slide-added",function(a,b){setTimeout(function(){b.API.advanceSlide(1)},50)}),c.API.add(f)):b||0!==c.currSlide?i.apply(c.API,[a,b]):(e=d.length-1,f=d[e],d=d.slice(0,e),c.container.one("cycle-slide-added",function(a,b){setTimeout(function(){b.currSlide=1,b.API.advanceSlide(-1)},50)}),c.API.add(f,!0)))}),g&&(f.next=function(){var a=this.opts();if(d.length&&a.currSlide==a.slideCount-1){var b=d[0];d=d.slice(1),a.container.one("cycle-slide-added",function(a,b){g.apply(b.API),b.container.removeClass("cycle-loading")}),a.container.addClass("cycle-loading"),a.API.add(b)}else g.apply(a.API)}),h&&(f.prev=function(){var a=this.opts();if(d.length&&0===a.currSlide){var b=d.length-1,c=d[b];d=d.slice(0,b),a.container.one("cycle-slide-added",function(a,b){b.currSlide=1,b.API.advanceSlide(-1),b.container.removeClass("cycle-loading")}),a.container.addClass("cycle-loading"),a.API.add(c,!0)}else h.apply(a.API)})}})}(jQuery),/*! tmpl plugin for Cycle2;  version: 20121227 */
554function(a){"use strict";a.extend(a.fn.cycle.defaults,{tmplRegex:"{{((.)?.*?)}}"}),a.extend(a.fn.cycle.API,{tmpl:function(b,c){var d=new RegExp(c.tmplRegex||a.fn.cycle.defaults.tmplRegex,"g"),e=a.makeArray(arguments);return e.shift(),b.replace(d,function(b,c){var d,f,g,h,i=c.split(".");for(d=0;d<e.length;d++)if(g=e[d]){if(i.length>1)for(h=g,f=0;f<i.length;f++)g=h,h=h[i[f]]||c;else h=g[c];if(a.isFunction(h))return h.apply(g,e);if(void 0!==h&&null!==h&&h!=c)return h}return c})}})}(jQuery);
555 })(jQuery1_11_0);
556/**
557 * bxSlider v4.2.12
558 * Copyright 2013-2015 Steven Wanderski
559 * Written while drinking Belgian ales and listening to jazz
560 * Licensed under MIT (http://opensource.org/licenses/MIT)
561 */
562(function ($) {
563    var jQuery = $;
564    
565;(function($) {
566
567  var defaults = {
568
569    // GENERAL
570    mode: 'horizontal',
571    slideSelector: '',
572    infiniteLoop: true,
573    hideControlOnEnd: false,
574    speed: 500,
575    easing: null,
576    slideMargin: 0,
577    startSlide: 0,
578    randomStart: false,
579    captions: false,
580    ticker: false,
581    tickerHover: false,
582    adaptiveHeight: false,
583    adaptiveHeightSpeed: 500,
584    video: false,
585    useCSS: true,
586    preloadImages: 'visible',
587    responsive: true,
588    slideZIndex: 50,
589    wrapperClass: 'bx-wrapper',
590
591    // TOUCH
592    touchEnabled: true,
593    swipeThreshold: 50,
594    oneToOneTouch: true,
595    preventDefaultSwipeX: true,
596    preventDefaultSwipeY: false,
597
598    // ACCESSIBILITY
599    ariaLive: true,
600    ariaHidden: true,
601
602    // KEYBOARD
603    keyboardEnabled: false,
604
605    // PAGER
606    pager: true,
607    pagerType: 'full',
608    pagerShortSeparator: ' / ',
609    pagerSelector: null,
610    buildPager: null,
611    pagerCustom: null,
612
613    // CONTROLS
614    controls: true,
615    nextText: 'Next',
616    prevText: 'Prev',
617    nextSelector: null,
618    prevSelector: null,
619    autoControls: false,
620    startText: 'Start',
621    stopText: 'Stop',
622    autoControlsCombine: false,
623    autoControlsSelector: null,
624
625    // AUTO
vendor: 25,441 bytes, lines 626-1190
626    auto: false,
627    pause: 4000,
628    autoStart: true,
629    autoDirection: 'next',
630    stopAutoOnClick: false,
631    autoHover: false,
632    autoDelay: 0,
633    autoSlideForOnePage: false,
634
635    // CAROUSEL
636    minSlides: 1,
637    maxSlides: 1,
638    moveSlides: 0,
639    slideWidth: 0,
640    shrinkItems: false,
641
642    // CALLBACKS
643    onSliderLoad: function() { return true; },
644    onSlideBefore: function() { return true; },
645    onSlideAfter: function() { return true; },
646    onSlideNext: function() { return true; },
647    onSlidePrev: function() { return true; },
648    onSliderResize: function() { return true; }
649  };
650
651  $.fn.bxSlider = function(options) {
652
653    if (this.length === 0) {
654      return this;
655    }
656
657    // support multiple elements
658    if (this.length > 1) {
659      this.each(function() {
660        $(this).bxSlider(options);
661      });
662      return this;
663    }
664
665    // create a namespace to be used throughout the plugin
666    var slider = {},
667    // set a reference to our slider element
668    el = this,
669    // get the original window dimens (thanks a lot IE)
670    windowWidth = $(window).width(),
671    windowHeight = $(window).height();
672
673    // Return if slider is already initialized
674    if ($(el).data('bxSlider')) { return; }
675
676    /**
677     * ===================================================================================
678     * = PRIVATE FUNCTIONS
679     * ===================================================================================
680     */
681
682    /**
683     * Initializes namespace settings to be used throughout plugin
684     */
685    var init = function() {
686      // Return if slider is already initialized
687      if ($(el).data('bxSlider')) { return; }
688      // merge user-supplied options with the defaults
689      slider.settings = $.extend({}, defaults, options);
690      // parse slideWidth setting
691      slider.settings.slideWidth = parseInt(slider.settings.slideWidth);
692      // store the original children
693      slider.children = el.children(slider.settings.slideSelector);
694      // check if actual number of slides is less than minSlides / maxSlides
695      if (slider.children.length < slider.settings.minSlides) { slider.settings.minSlides = slider.children.length; }
696      if (slider.children.length < slider.settings.maxSlides) { slider.settings.maxSlides = slider.children.length; }
697      // if random start, set the startSlide setting to random number
698      if (slider.settings.randomStart) { slider.settings.startSlide = Math.floor(Math.random() * slider.children.length); }
699      // store active slide information
700      slider.active = { index: slider.settings.startSlide };
701      // store if the slider is in carousel mode (displaying / moving multiple slides)
702      slider.carousel = slider.settings.minSlides > 1 || slider.settings.maxSlides > 1 ? true : false;
703      // if carousel, force preloadImages = 'all'
704      if (slider.carousel) { slider.settings.preloadImages = 'all'; }
705      // calculate the min / max width thresholds based on min / max number of slides
706      // used to setup and update carousel slides dimensions
707      slider.minThreshold = (slider.settings.minSlides * slider.settings.slideWidth) + ((slider.settings.minSlides - 1) * slider.settings.slideMargin);
708      slider.maxThreshold = (slider.settings.maxSlides * slider.settings.slideWidth) + ((slider.settings.maxSlides - 1) * slider.settings.slideMargin);
709      // store the current state of the slider (if currently animating, working is true)
710      slider.working = false;
711      // initialize the controls object
712      slider.controls = {};
713      // initialize an auto interval
714      slider.interval = null;
715      // determine which property to use for transitions
716      slider.animProp = slider.settings.mode === 'vertical' ? 'top' : 'left';
717      // determine if hardware acceleration can be used
718      slider.usingCSS = slider.settings.useCSS && slider.settings.mode !== 'fade' && (function() {
719        // create our test div element
720        var div = document.createElement('div'),
721        // css transition properties
722        props = ['WebkitPerspective', 'MozPerspective', 'OPerspective', 'msPerspective'];
723        // test for each property
724        for (var i = 0; i < props.length; i++) {
725          if (div.style[props[i]] !== undefined) {
726            slider.cssPrefix = props[i].replace('Perspective', '').toLowerCase();
727            slider.animProp = '-' + slider.cssPrefix + '-transform';
728            return true;
729          }
730        }
731        return false;
732      }());
733      // if vertical mode always make maxSlides and minSlides equal
734      if (slider.settings.mode === 'vertical') { slider.settings.maxSlides = slider.settings.minSlides; }
735      // save original style data
736      el.data('origStyle', el.attr('style'));
737      el.children(slider.settings.slideSelector).each(function() {
738        $(this).data('origStyle', $(this).attr('style'));
739      });
740
741      // perform all DOM / CSS modifications
742      setup();
743    };
744
745    /**
746     * Performs all DOM and CSS modifications
747     */
748    var setup = function() {
749      var preloadSelector = slider.children.eq(slider.settings.startSlide); // set the default preload selector (visible)
750
751      // wrap el in a wrapper
752      el.wrap('<div class="' + slider.settings.wrapperClass + '"><div class="bx-viewport"></div></div>');
753      // store a namespace reference to .bx-viewport
754      slider.viewport = el.parent();
755
756      // add aria-live if the setting is enabled and ticker mode is disabled
757      if (slider.settings.ariaLive && !slider.settings.ticker) {
758        slider.viewport.attr('aria-live', 'polite');
759      }
760      // add a loading div to display while images are loading
761      slider.loader = $('<div class="bx-loading" />');
762      slider.viewport.prepend(slider.loader);
763      // set el to a massive width, to hold any needed slides
764      // also strip any margin and padding from el
765      el.css({
766        width: slider.settings.mode === 'horizontal' ? (slider.children.length * 1000 + 215) + '%' : 'auto',
767        position: 'relative'
768      });
769      // if using CSS, add the easing property
770      if (slider.usingCSS && slider.settings.easing) {
771        el.css('-' + slider.cssPrefix + '-transition-timing-function', slider.settings.easing);
772      // if not using CSS and no easing value was supplied, use the default JS animation easing (swing)
773      } else if (!slider.settings.easing) {
774        slider.settings.easing = 'swing';
775      }
776      // make modifications to the viewport (.bx-viewport)
777      slider.viewport.css({
778        width: '100%',
779        overflow: 'hidden',
780        position: 'relative'
781      });
782      slider.viewport.parent().css({
783        maxWidth: getViewportMaxWidth()
784      });
785      // apply css to all slider children
786      slider.children.css({
787        float: slider.settings.mode === 'horizontal' ? 'left' : 'none',
788        listStyle: 'none',
789        position: 'relative'
790      });
791      // apply the calculated width after the float is applied to prevent scrollbar interference
792      slider.children.css('width', getSlideWidth());
793      // if slideMargin is supplied, add the css
794      if (slider.settings.mode === 'horizontal' && slider.settings.slideMargin > 0) { slider.children.css('marginRight', slider.settings.slideMargin); }
795      if (slider.settings.mode === 'vertical' && slider.settings.slideMargin > 0) { slider.children.css('marginBottom', slider.settings.slideMargin); }
796      // if "fade" mode, add positioning and z-index CSS
797      if (slider.settings.mode === 'fade') {
798        slider.children.css({
799          position: 'absolute',
800          zIndex: 0,
801          display: 'none'
802        });
803        // prepare the z-index on the showing element
804        slider.children.eq(slider.settings.startSlide).css({zIndex: slider.settings.slideZIndex, display: 'block'});
805      }
806      // create an element to contain all slider controls (pager, start / stop, etc)
807      slider.controls.el = $('<div class="bx-controls" />');
808      // if captions are requested, add them
809      if (slider.settings.captions) { appendCaptions(); }
810      // check if startSlide is last slide
811      slider.active.last = slider.settings.startSlide === getPagerQty() - 1;
812      // if video is true, set up the fitVids plugin
813      if (slider.settings.video) { el.fitVids(); }
814      if (slider.settings.preloadImages === 'all' || slider.settings.ticker) { preloadSelector = slider.children; }
815      // only check for control addition if not in "ticker" mode
816      if (!slider.settings.ticker) {
817        // if controls are requested, add them
818        if (slider.settings.controls) { appendControls(); }
819        // if auto is true, and auto controls are requested, add them
820        if (slider.settings.auto && slider.settings.autoControls) { appendControlsAuto(); }
821        // if pager is requested, add it
822        if (slider.settings.pager) { appendPager(); }
823        // if any control option is requested, add the controls wrapper
824        if (slider.settings.controls || slider.settings.autoControls || slider.settings.pager) { slider.viewport.after(slider.controls.el); }
825      // if ticker mode, do not allow a pager
826      } else {
827        slider.settings.pager = false;
828      }
829      loadElements(preloadSelector, start);
830    };
831
832    var loadElements = function(selector, callback) {
833      var total = selector.find('img:not([src=""]), iframe').length,
834      count = 0;
835      if (total === 0) {
836        callback();
837        return;
838      }
839      selector.find('img:not([src=""]), iframe').each(function() {
840        $(this).one('load error', function() {
841          if (++count === total) { callback(); }
842        }).each(function() {
843          if (this.complete) { $(this).trigger('load'); }
844        });
845      });
846    };
847
848    /**
849     * Start the slider
850     */
851    var start = function() {
852      // if infinite loop, prepare additional slides
853      if (slider.settings.infiniteLoop && slider.settings.mode !== 'fade' && !slider.settings.ticker) {
854        var slice    = slider.settings.mode === 'vertical' ? slider.settings.minSlides : slider.settings.maxSlides,
855        sliceAppend  = slider.children.slice(0, slice).clone(true).addClass('bx-clone'),
856        slicePrepend = slider.children.slice(-slice).clone(true).addClass('bx-clone');
857        if (slider.settings.ariaHidden) {
858          sliceAppend.attr('aria-hidden', true);
859          slicePrepend.attr('aria-hidden', true);
860        }
861        el.append(sliceAppend).prepend(slicePrepend);
862      }
863      // remove the loading DOM element
864      slider.loader.remove();
865      // set the left / top position of "el"
866      setSlidePosition();
867      // if "vertical" mode, always use adaptiveHeight to prevent odd behavior
868      if (slider.settings.mode === 'vertical') { slider.settings.adaptiveHeight = true; }
869      // set the viewport height
870      slider.viewport.height(getViewportHeight());
871      // make sure everything is positioned just right (same as a window resize)
872      el.redrawSlider();
873      // onSliderLoad callback
874      slider.settings.onSliderLoad.call(el, slider.active.index);
875      // slider has been fully initialized
876      slider.initialized = true;
877      // bind the resize call to the window
878      if (slider.settings.responsive) { $(window).bind('resize', resizeWindow); }
879      // if auto is true and has more than 1 page, start the show
880      if (slider.settings.auto && slider.settings.autoStart && (getPagerQty() > 1 || slider.settings.autoSlideForOnePage)) { initAuto(); }
881      // if ticker is true, start the ticker
882      if (slider.settings.ticker) { initTicker(); }
883      // if pager is requested, make the appropriate pager link active
884      if (slider.settings.pager) { updatePagerActive(slider.settings.startSlide); }
885      // check for any updates to the controls (like hideControlOnEnd updates)
886      if (slider.settings.controls) { updateDirectionControls(); }
887      // if touchEnabled is true, setup the touch events
888      if (slider.settings.touchEnabled && !slider.settings.ticker) { initTouch(); }
889      // if keyboardEnabled is true, setup the keyboard events
890      if (slider.settings.keyboardEnabled && !slider.settings.ticker) {
891        $(document).keydown(keyPress);
892      }
893    };
894
895    /**
896     * Returns the calculated height of the viewport, used to determine either adaptiveHeight or the maxHeight value
897     */
898    var getViewportHeight = function() {
899      var height = 0;
900      // first determine which children (slides) should be used in our height calculation
901      var children = $();
902      // if mode is not "vertical" and adaptiveHeight is false, include all children
903      if (slider.settings.mode !== 'vertical' && !slider.settings.adaptiveHeight) {
904        children = slider.children;
905      } else {
906        // if not carousel, return the single active child
907        if (!slider.carousel) {
908          children = slider.children.eq(slider.active.index);
909        // if carousel, return a slice of children
910        } else {
911          // get the individual slide index
912          var currentIndex = slider.settings.moveSlides === 1 ? slider.active.index : slider.active.index * getMoveBy();
913          // add the current slide to the children
914          children = slider.children.eq(currentIndex);
915          // cycle through the remaining "showing" slides
916          for (i = 1; i <= slider.settings.maxSlides - 1; i++) {
917            // if looped back to the start
918            if (currentIndex + i >= slider.children.length) {
919              children = children.add(slider.children.eq(i - 1));
920            } else {
921              children = children.add(slider.children.eq(currentIndex + i));
922            }
923          }
924        }
925      }
926      // if "vertical" mode, calculate the sum of the heights of the children
927      if (slider.settings.mode === 'vertical') {
928        children.each(function(index) {
929          height += $(this).outerHeight();
930        });
931        // add user-supplied margins
932        if (slider.settings.slideMargin > 0) {
933          height += slider.settings.slideMargin * (slider.settings.minSlides - 1);
934        }
935      // if not "vertical" mode, calculate the max height of the children
936      } else {
937        height = Math.max.apply(Math, children.map(function() {
938          return $(this).outerHeight(false);
939        }).get());
940      }
941
942      if (slider.viewport.css('box-sizing') === 'border-box') {
943        height += parseFloat(slider.viewport.css('padding-top')) + parseFloat(slider.viewport.css('padding-bottom')) +
944              parseFloat(slider.viewport.css('border-top-width')) + parseFloat(slider.viewport.css('border-bottom-width'));
945      } else if (slider.viewport.css('box-sizing') === 'padding-box') {
946        height += parseFloat(slider.viewport.css('padding-top')) + parseFloat(slider.viewport.css('padding-bottom'));
947      }
948
949      return height;
950    };
951
952    /**
953     * Returns the calculated width to be used for the outer wrapper / viewport
954     */
955    var getViewportMaxWidth = function() {
956      var width = '100%';
957      if (slider.settings.slideWidth > 0) {
958        if (slider.settings.mode === 'horizontal') {
959          width = (slider.settings.maxSlides * slider.settings.slideWidth) + ((slider.settings.maxSlides - 1) * slider.settings.slideMargin);
960        } else {
961          width = slider.settings.slideWidth;
962        }
963      }
964      return width;
965    };
966
967    /**
968     * Returns the calculated width to be applied to each slide
969     */
970    var getSlideWidth = function() {
971      var newElWidth = slider.settings.slideWidth, // start with any user-supplied slide width
972      wrapWidth      = slider.viewport.width();    // get the current viewport width
973      // if slide width was not supplied, or is larger than the viewport use the viewport width
974      if (slider.settings.slideWidth === 0 ||
975        (slider.settings.slideWidth > wrapWidth && !slider.carousel) ||
976        slider.settings.mode === 'vertical') {
977        newElWidth = wrapWidth;
978      // if carousel, use the thresholds to determine the width
979      } else if (slider.settings.maxSlides > 1 && slider.settings.mode === 'horizontal') {
980        if (wrapWidth > slider.maxThreshold) {
981          return newElWidth;
982        } else if (wrapWidth < slider.minThreshold) {
983          newElWidth = (wrapWidth - (slider.settings.slideMargin * (slider.settings.minSlides - 1))) / slider.settings.minSlides;
984        } else if (slider.settings.shrinkItems) {
985          newElWidth = Math.floor((wrapWidth + slider.settings.slideMargin) / (Math.ceil((wrapWidth + slider.settings.slideMargin) / (newElWidth + slider.settings.slideMargin))) - slider.settings.slideMargin);
986        }
987      }
988      return newElWidth;
989    };
990
991    /**
992     * Returns the number of slides currently visible in the viewport (includes partially visible slides)
993     */
994    var getNumberSlidesShowing = function() {
995      var slidesShowing = 1,
996      childWidth = null;
997      if (slider.settings.mode === 'horizontal' && slider.settings.slideWidth > 0) {
998        // if viewport is smaller than minThreshold, return minSlides
999        if (slider.viewport.width() < slider.minThreshold) {
1000          slidesShowing = slider.settings.minSlides;
1001        // if viewport is larger than maxThreshold, return maxSlides
1002        } else if (slider.viewport.width() > slider.maxThreshold) {
1003          slidesShowing = slider.settings.maxSlides;
1004        // if viewport is between min / max thresholds, divide viewport width by first child width
1005        } else {
1006          childWidth = slider.children.first().width() + slider.settings.slideMargin;
1007          slidesShowing = Math.floor((slider.viewport.width() +
1008            slider.settings.slideMargin) / childWidth);
1009        }
1010      // if "vertical" mode, slides showing will always be minSlides
1011      } else if (slider.settings.mode === 'vertical') {
1012        slidesShowing = slider.settings.minSlides;
1013      }
1014      return slidesShowing;
1015    };
1016
1017    /**
1018     * Returns the number of pages (one full viewport of slides is one "page")
1019     */
1020    var getPagerQty = function() {
1021      var pagerQty = 0,
1022      breakPoint = 0,
1023      counter = 0;
1024      // if moveSlides is specified by the user
1025      if (slider.settings.moveSlides > 0) {
1026        if (slider.settings.infiniteLoop) {
1027          pagerQty = Math.ceil(slider.children.length / getMoveBy());
1028        } else {
1029          // when breakpoint goes above children length, counter is the number of pages
1030          while (breakPoint < slider.children.length) {
1031            ++pagerQty;
1032            breakPoint = counter + getNumberSlidesShowing();
1033            counter += slider.settings.moveSlides <= getNumberSlidesShowing() ? slider.settings.moveSlides : getNumberSlidesShowing();
1034          }
1035        }
1036      // if moveSlides is 0 (auto) divide children length by sides showing, then round up
1037      } else {
1038        pagerQty = Math.ceil(slider.children.length / getNumberSlidesShowing());
1039      }
1040      return pagerQty;
1041    };
1042
1043    /**
1044     * Returns the number of individual slides by which to shift the slider
1045     */
1046    var getMoveBy = function() {
1047      // if moveSlides was set by the user and moveSlides is less than number of slides showing
1048      if (slider.settings.moveSlides > 0 && slider.settings.moveSlides <= getNumberSlidesShowing()) {
1049        return slider.settings.moveSlides;
1050      }
1051      // if moveSlides is 0 (auto)
1052      return getNumberSlidesShowing();
1053    };
1054
1055    /**
1056     * Sets the slider's (el) left or top position
1057     */
1058    var setSlidePosition = function() {
1059      var position, lastChild, lastShowingIndex;
1060      // if last slide, not infinite loop, and number of children is larger than specified maxSlides
1061      if (slider.children.length > slider.settings.maxSlides && slider.active.last && !slider.settings.infiniteLoop) {
1062        if (slider.settings.mode === 'horizontal') {
1063          // get the last child's position
1064          lastChild = slider.children.last();
1065          position = lastChild.position();
1066          // set the left position
1067          setPositionProperty(-(position.left - (slider.viewport.width() - lastChild.outerWidth())), 'reset', 0);
1068        } else if (slider.settings.mode === 'vertical') {
1069          // get the last showing index's position
1070          lastShowingIndex = slider.children.length - slider.settings.minSlides;
1071          position = slider.children.eq(lastShowingIndex).position();
1072          // set the top position
1073          setPositionProperty(-position.top, 'reset', 0);
1074        }
1075      // if not last slide
1076      } else {
1077        // get the position of the first showing slide
1078        position = slider.children.eq(slider.active.index * getMoveBy()).position();
1079        // check for last slide
1080        if (slider.active.index === getPagerQty() - 1) { slider.active.last = true; }
1081        // set the respective position
1082        if (position !== undefined) {
1083          if (slider.settings.mode === 'horizontal') { setPositionProperty(-position.left, 'reset', 0); }
1084          else if (slider.settings.mode === 'vertical') { setPositionProperty(-position.top, 'reset', 0); }
1085        }
1086      }
1087    };
1088
1089    /**
1090     * Sets the el's animating property position (which in turn will sometimes animate el).
1091     * If using CSS, sets the transform property. If not using CSS, sets the top / left property.
1092     *
1093     * @param value (int)
1094     *  - the animating property's value
1095     *
1096     * @param type (string) 'slide', 'reset', 'ticker'
1097     *  - the type of instance for which the function is being
1098     *
1099     * @param duration (int)
1100     *  - the amount of time (in ms) the transition should occupy
1101     *
1102     * @param params (array) optional
1103     *  - an optional parameter containing any variables that need to be passed in
1104     */
1105    var setPositionProperty = function(value, type, duration, params) {
1106      var animateObj, propValue;
1107      // use CSS transform
1108      if (slider.usingCSS) {
1109        // determine the translate3d value
1110        propValue = slider.settings.mode === 'vertical' ? 'translate3d(0, ' + value + 'px, 0)' : 'translate3d(' + value + 'px, 0, 0)';
1111        // add the CSS transition-duration
1112        el.css('-' + slider.cssPrefix + '-transition-duration', duration / 1000 + 's');
1113        if (type === 'slide') {
1114          // set the property value
1115          el.css(slider.animProp, propValue);
1116          if (duration !== 0) {
1117            // bind a callback method - executes when CSS transition completes
1118            el.bind('transitionend webkitTransitionEnd oTransitionEnd MSTransitionEnd', function(e) {
1119              //make sure it's the correct one
1120              if (!$(e.target).is(el)) { return; }
1121              // unbind the callback
1122              el.unbind('transitionend webkitTransitionEnd oTransitionEnd MSTransitionEnd');
1123              updateAfterSlideTransition();
1124            });
1125          } else { //duration = 0
1126            updateAfterSlideTransition();
1127          }
1128        } else if (type === 'reset') {
1129          el.css(slider.animProp, propValue);
1130        } else if (type === 'ticker') {
1131          // make the transition use 'linear'
1132          el.css('-' + slider.cssPrefix + '-transition-timing-function', 'linear');
1133          el.css(slider.animProp, propValue);
1134          if (duration !== 0) {
1135            el.bind('transitionend webkitTransitionEnd oTransitionEnd MSTransitionEnd', function(e) {
1136              //make sure it's the correct one
1137              if (!$(e.target).is(el)) { return; }
1138              // unbind the callback
1139              el.unbind('transitionend webkitTransitionEnd oTransitionEnd MSTransitionEnd');
1140              // reset the position
1141              setPositionProperty(params.resetValue, 'reset', 0);
1142              // start the loop again
1143              tickerLoop();
1144            });
1145          } else { //duration = 0
1146            setPositionProperty(params.resetValue, 'reset', 0);
1147            tickerLoop();
1148          }
1149        }
1150      // use JS animate
1151      } else {
1152        animateObj = {};
1153        animateObj[slider.animProp] = value;
1154        if (type === 'slide') {
1155          el.animate(animateObj, duration, slider.settings.easing, function() {
1156            updateAfterSlideTransition();
1157          });
1158        } else if (type === 'reset') {
1159          el.css(slider.animProp, value);
1160        } else if (type === 'ticker') {
1161          el.animate(animateObj, duration, 'linear', function() {
1162            setPositionProperty(params.resetValue, 'reset', 0);
1163            // run the recursive loop after animation
1164            tickerLoop();
1165          });
1166        }
1167      }
1168    };
1169
1170    /**
1171     * Populates the pager with proper amount of pages
1172     */
1173    var populatePager = function() {
1174      var pagerHtml = '',
1175      linkContent = '',
1176      pagerQty = getPagerQty();
1177      // loop through each pager item
1178      for (var i = 0; i < pagerQty; i++) {
1179        linkContent = '';
1180        // if a buildPager function is supplied, use it to get pager link value, else use index + 1
1181        if (slider.settings.buildPager && $.isFunction(slider.settings.buildPager) || slider.settings.pagerCustom) {
1182          linkContent = slider.settings.buildPager(i);
1183          slider.pagerEl.addClass('bx-custom-pager');
1184        } else {
1185          linkContent = i + 1;
1186          slider.pagerEl.addClass('bx-default-pager');
1187        }
1188        // var linkContent = slider.settings.buildPager && $.isFunction(slider.settings.buildPager) ? slider.settings.buildPager(i) : i + 1;
1189        // add the markup to the string
1190        pagerHtml += '<div class="bx-pager-item">
1190<a href="" data-slide-index="' + i + '" class="bx-pager-link">' + linkContent + '</a></div>';
1191      }
1192      // populate the pager element with pager links
1193      slider.pagerEl.html(pagerHtml);
1194    };
1195
1196    /**
1197     * Appends the pager to the controls element
1198     */
1199    var appendPager = function() {
1200      if (!slider.settings.pagerCustom) {
1201        // create the pager DOM element
1202        slider.pagerEl = $('<div class="bx-pager" />');
1203        // if a pager selector was supplied, populate it with the pager
1204        if (slider.settings.pagerSelector) {
1205          $(slider.settings.pagerSelector).html(slider.pagerEl);
1206        // if no pager selector was supplied, add it after the wrapper
1207        } else {
1208          slider.controls.el.addClass('bx-has-pager').append(slider.pagerEl);
1209        }
1210        // populate the pager
1211        populatePager();
1212      } else {
1213        slider.pagerEl = $(slider.settings.pagerCustom);
1214      }
1215      // assign the pager click binding
1216      slider.pagerEl.on('click touchend', 'a', clickPagerBind);
1217    };
1218
1219    /**
1220     * Appends prev / next controls to the controls element
1221     */
1222    var appendControls = function() {
1223      slider.controls.next = $('<a class="bx-next" href="">' + slider.settings.nextText + '</a>');
1224      slider.controls.prev = $('<a class="bx-prev" href="">' + slider.settings.prevText + '</a>');
1225      // bind click actions to the controls
1226      slider.controls.next.bind('click touchend', clickNextBind);
1227      slider.controls.prev.bind('click touchend', clickPrevBind);
1228      // if nextSelector was supplied, populate it
1229      if (slider.settings.nextSelector) {
1230        $(slider.settings.nextSelector).append(slider.controls.next);
1231      }
1232      // if prevSelector was supplied, populate it
1233      if (slider.settings.prevSelector) {
1234        $(slider.settings.prevSelector).append(slider.controls.prev);
1235      }
1236      // if no custom selectors were supplied
1237      if (!slider.settings.nextSelector && !slider.settings.prevSelector) {
1238        // add the controls to the DOM
1239        slider.controls.directionEl = $('<div class="bx-controls-direction" />');
1240        // add the control elements to the directionEl
1241        slider.controls.directionEl.append(slider.controls.prev).append(slider.controls.next);
1242        // slider.viewport.append(slider.controls.directionEl);
1243        slider.controls.el.addClass('bx-has-controls-direction').append(slider.controls.directionEl);
1244      }
1245    };
1246
1247    /**
1248     * Appends start / stop auto controls to the controls element
1249     */
1250    var appendControlsAuto = function() {
1251      slider.controls.start = $('<div class="bx-controls-auto-item"><a class="bx-start" href="">' + slider.settings.startText + '</a></div>');
1252      slider.controls.stop = $('<div class="bx-controls-auto-item"><a class="bx-stop" href="">' + slider.settings.stopText + '</a></div>');
1253      // add the controls to the DOM
1254      slider.controls.autoEl = $('<div class="bx-controls-auto" />');
1255      // bind
vendor: 7,154 bytes, lines 1255-1453
1255 click actions to the controls
1256      slider.controls.autoEl.on('click', '.bx-start', clickStartBind);
1257      slider.controls.autoEl.on('click', '.bx-stop', clickStopBind);
1258      // if autoControlsCombine, insert only the "start" control
1259      if (slider.settings.autoControlsCombine) {
1260        slider.controls.autoEl.append(slider.controls.start);
1261      // if autoControlsCombine is false, insert both controls
1262      } else {
1263        slider.controls.autoEl.append(slider.controls.start).append(slider.controls.stop);
1264      }
1265      // if auto controls selector was supplied, populate it with the controls
1266      if (slider.settings.autoControlsSelector) {
1267        $(slider.settings.autoControlsSelector).html(slider.controls.autoEl);
1268      // if auto controls selector was not supplied, add it after the wrapper
1269      } else {
1270        slider.controls.el.addClass('bx-has-controls-auto').append(slider.controls.autoEl);
1271      }
1272      // update the auto controls
1273      updateAutoControls(slider.settings.autoStart ? 'stop' : 'start');
1274    };
1275
1276    /**
1277     * Appends image captions to the DOM
1278     */
1279    var appendCaptions = function() {
1280      // cycle through each child
1281      slider.children.each(function(index) {
1282        // get the image title attribute
1283        var title = $(this).find('img:first').attr('title');
1284        // append the caption
1285        if (title !== undefined && ('' + title).length) {
1286          $(this).append('<div class="bx-caption"><span>' + title + '</span></div>');
1287        }
1288      });
1289    };
1290
1291    /**
1292     * Click next binding
1293     *
1294     * @param e (event)
1295     *  - DOM event object
1296     */
1297    var clickNextBind = function(e) {
1298      e.preventDefault();
1299      if (slider.controls.el.hasClass('disabled')) { return; }
1300      // if auto show is running, stop it
1301      if (slider.settings.auto && slider.settings.stopAutoOnClick) { el.stopAuto(); }
1302      el.goToNextSlide();
1303    };
1304
1305    /**
1306     * Click prev binding
1307     *
1308     * @param e (event)
1309     *  - DOM event object
1310     */
1311    var clickPrevBind = function(e) {
1312      e.preventDefault();
1313      if (slider.controls.el.hasClass('disabled')) { return; }
1314      // if auto show is running, stop it
1315      if (slider.settings.auto && slider.settings.stopAutoOnClick) { el.stopAuto(); }
1316      el.goToPrevSlide();
1317    };
1318
1319    /**
1320     * Click start binding
1321     *
1322     * @param e (event)
1323     *  - DOM event object
1324     */
1325    var clickStartBind = function(e) {
1326      el.startAuto();
1327      e.preventDefault();
1328    };
1329
1330    /**
1331     * Click stop binding
1332     *
1333     * @param e (event)
1334     *  - DOM event object
1335     */
1336    var clickStopBind = function(e) {
1337      el.stopAuto();
1338      e.preventDefault();
1339    };
1340
1341    /**
1342     * Click pager binding
1343     *
1344     * @param e (event)
1345     *  - DOM event object
1346     */
1347    var clickPagerBind = function(e) {
1348      var pagerLink, pagerIndex;
1349      e.preventDefault();
1350      if (slider.controls.el.hasClass('disabled')) {
1351        return;
1352      }
1353      // if auto show is running, stop it
1354      if (slider.settings.auto  && slider.settings.stopAutoOnClick) { el.stopAuto(); }
1355      pagerLink = $(e.currentTarget);
1356      if (pagerLink.attr('data-slide-index') !== undefined) {
1357        pagerIndex = parseInt(pagerLink.attr('data-slide-index'));
1358        // if clicked pager link is not active, continue with the goToSlide call
1359        if (pagerIndex !== slider.active.index) { el.goToSlide(pagerIndex); }
1360      }
1361    };
1362
1363    /**
1364     * Updates the pager links with an active class
1365     *
1366     * @param slideIndex (int)
1367     *  - index of slide to make active
1368     */
1369    var updatePagerActive = function(slideIndex) {
1370      // if "short" pager type
1371      var len = slider.children.length; // nb of children
1372      if (slider.settings.pagerType === 'short') {
1373        if (slider.settings.maxSlides > 1) {
1374          len = Math.ceil(slider.children.length / slider.settings.maxSlides);
1375        }
1376        slider.pagerEl.html((slideIndex + 1) + slider.settings.pagerShortSeparator + len);
1377        return;
1378      }
1379      // remove all pager active classes
1380      slider.pagerEl.find('a').removeClass('active');
1381      // apply the active class for all pagers
1382      slider.pagerEl.each(function(i, el) { $(el).find('a').eq(slideIndex).addClass('active'); });
1383    };
1384
1385    /**
1386     * Performs needed actions after a slide transition
1387     */
1388    var updateAfterSlideTransition = function() {
1389      // if infinite loop is true
1390      if (slider.settings.infiniteLoop) {
1391        var position = '';
1392        // first slide
1393        if (slider.active.index === 0) {
1394          // set the new position
1395          position = slider.children.eq(0).position();
1396        // carousel, last slide
1397        } else if (slider.active.index === getPagerQty() - 1 && slider.carousel) {
1398          position = slider.children.eq((getPagerQty() - 1) * getMoveBy()).position();
1399        // last slide
1400        } else if (slider.active.index === slider.children.length - 1) {
1401          position = slider.children.eq(slider.children.length - 1).position();
1402        }
1403        if (position) {
1404          if (slider.settings.mode === 'horizontal') { setPositionProperty(-position.left, 'reset', 0); }
1405          else if (slider.settings.mode === 'vertical') { setPositionProperty(-position.top, 'reset', 0); }
1406        }
1407      }
1408      // declare that the transition is complete
1409      slider.working = false;
1410      // onSlideAfter callback
1411      slider.settings.onSlideAfter.call(el, slider.children.eq(slider.active.index), slider.oldIndex, slider.active.index);
1412    };
1413
1414    /**
1415     * Updates the auto controls state (either active, or combined switch)
1416     *
1417     * @param state (string) "start", "stop"
1418     *  - the new state of the auto show
1419     */
1420    var updateAutoControls = function(state) {
1421      // if autoControlsCombine is true, replace the current control with the new state
1422      if (slider.settings.autoControlsCombine) {
1423        slider.controls.autoEl.html(slider.controls[state]);
1424      // if autoControlsCombine is false, apply the "active" class to the appropriate control
1425      } else {
1426        slider.controls.autoEl.find('a').removeClass('active');
1427        slider.controls.autoEl.find('a:not(.bx-' + state + ')').addClass('active');
1428      }
1429    };
1430
1431    /**
1432     * Updates the direction controls (checks if either should be hidden)
1433     */
1434    var updateDirectionControls = function() {
1435      if (getPagerQty() === 1) {
1436        slider.controls.prev.addClass('disabled');
1437        slider.controls.next.addClass('disabled');
1438      } else if (!slider.settings.infiniteLoop && slider.settings.hideControlOnEnd) {
1439        // if first slide
1440        if (slider.active.index === 0) {
1441          slider.controls.prev.addClass('disabled');
1442          slider.controls.next.removeClass('disabled');
1443        // if last slide
1444        } else if (slider.active.index === getPagerQty() - 1) {
1445          slider.controls.next.addClass('disabled');
1446          slider.controls.prev.removeClass('disabled');
1447        // if any slide in the middle
1448        } else {
1449          slider.controls.prev.removeClass('disabled');
1450          slider.controls.next.removeClass('disabled');
1451        }
1452      }
1453    };
1454
1455    /**
1456     * Initializes the auto process
1457     */
1458    var initAuto = function() {
1459      // if autoDelay was supplied, launch the auto show using a setTimeout() call
1460      if (slider.settings.autoDelay > 0) {
1461        var timeout = setTimeout(el.startAuto, slider.settings.autoDelay);
1462      // if autoDelay was not supplied, start the auto show normally
1463      } else {
1464        el.startAuto();
1465
1466        //add focus and blur events to ensure its running if timeout gets paused
1467        $(window).focus(function() {
1468          el.startAuto();
1469        }).blur(function() {
1470          el.stopAuto();
1471        }
vendor: 6,234 bytes, lines 1471-1631
1471);
1472      }
1473      // if autoHover is requested
1474      if (slider.settings.autoHover) {
1475        // on el hover
1476        el.hover(function() {
1477          // if the auto show is currently playing (has an active interval)
1478          if (slider.interval) {
1479            // stop the auto show and pass true argument which will prevent control update
1480            el.stopAuto(true);
1481            // create a new autoPaused value which will be used by the relative "mouseout" event
1482            slider.autoPaused = true;
1483          }
1484        }, function() {
1485          // if the autoPaused value was created be the prior "mouseover" event
1486          if (slider.autoPaused) {
1487            // start the auto show and pass true argument which will prevent control update
1488            el.startAuto(true);
1489            // reset the autoPaused value
1490            slider.autoPaused = null;
1491          }
1492        });
1493      }
1494    };
1495
1496    /**
1497     * Initializes the ticker process
1498     */
1499    var initTicker = function() {
1500      var startPosition = 0,
1501      position, transform, value, idx, ratio, property, newSpeed, totalDimens;
1502      // if autoDirection is "next", append a clone of the entire slider
1503      if (slider.settings.autoDirection === 'next') {
1504        el.append(slider.children.clone().addClass('bx-clone'));
1505      // if autoDirection is "prev", prepend a clone of the entire slider, and set the left position
1506      } else {
1507        el.prepend(slider.children.clone().addClass('bx-clone'));
1508        position = slider.children.first().position();
1509        startPosition = slider.settings.mode === 'horizontal' ? -position.left : -position.top;
1510      }
1511      setPositionProperty(startPosition, 'reset', 0);
1512      // do not allow controls in ticker mode
1513      slider.settings.pager = false;
1514      slider.settings.controls = false;
1515      slider.settings.autoControls = false;
1516      // if autoHover is requested
1517      if (slider.settings.tickerHover) {
1518        if (slider.usingCSS) {
1519          idx = slider.settings.mode === 'horizontal' ? 4 : 5;
1520          slider.viewport.hover(function() {
1521            transform = el.css('-' + slider.cssPrefix + '-transform');
1522            value = parseFloat(transform.split(',')[idx]);
1523            setPositionProperty(value, 'reset', 0);
1524          }, function() {
1525            totalDimens = 0;
1526            slider.children.each(function(index) {
1527              totalDimens += slider.settings.mode === 'horizontal' ? $(this).outerWidth(true) : $(this).outerHeight(true);
1528            });
1529            // calculate the speed ratio (used to determine the new speed to finish the paused animation)
1530            ratio = slider.settings.speed / totalDimens;
1531            // determine which property to use
1532            property = slider.settings.mode === 'horizontal' ? 'left' : 'top';
1533            // calculate the new speed
1534            newSpeed = ratio * (totalDimens - (Math.abs(parseInt(value))));
1535            tickerLoop(newSpeed);
1536          });
1537        } else {
1538          // on el hover
1539          slider.viewport.hover(function() {
1540            el.stop();
1541          }, function() {
1542            // calculate the total width of children (used to calculate the speed ratio)
1543            totalDimens = 0;
1544            slider.children.each(function(index) {
1545              totalDimens += slider.settings.mode === 'horizontal' ? $(this).outerWidth(true) : $(this).outerHeight(true);
1546            });
1547            // calculate the speed ratio (used to determine the new speed to finish the paused animation)
1548            ratio = slider.settings.speed / totalDimens;
1549            // determine which property to use
1550            property = slider.settings.mode === 'horizontal' ? 'left' : 'top';
1551            // calculate the new speed
1552            newSpeed = ratio * (totalDimens - (Math.abs(parseInt(el.css(property)))));
1553            tickerLoop(newSpeed);
1554          });
1555        }
1556      }
1557      // start the ticker loop
1558      tickerLoop();
1559    };
1560
1561    /**
1562     * Runs a continuous loop, news ticker-style
1563     */
1564    var tickerLoop = function(resumeSpeed) {
1565      var speed = resumeSpeed ? resumeSpeed : slider.settings.speed,
1566      position = {left: 0, top: 0},
1567      reset = {left: 0, top: 0},
1568      animateProperty, resetValue, params;
1569
1570      // if "next" animate left position to last child, then reset left to 0
1571      if (slider.settings.autoDirection === 'next') {
1572        position = el.find('.bx-clone').first().position();
1573      // if "prev" animate left position to 0, then reset left to first non-clone child
1574      } else {
1575        reset = slider.children.first().position();
1576      }
1577      animateProperty = slider.settings.mode === 'horizontal' ? -position.left : -position.top;
1578      resetValue = slider.settings.mode === 'horizontal' ? -reset.left : -reset.top;
1579      params = {resetValue: resetValue};
1580      setPositionProperty(animateProperty, 'ticker', speed, params);
1581    };
1582
1583    /**
1584     * Check if el is on screen
1585     */
1586    var isOnScreen = function(el) {
1587      var win = $(window),
1588      viewport = {
1589        top: win.scrollTop(),
1590        left: win.scrollLeft()
1591      },
1592      bounds = el.offset();
1593
1594      viewport.right = viewport.left + win.width();
1595      viewport.bottom = viewport.top + win.height();
1596      bounds.right = bounds.left + el.outerWidth();
1597      bounds.bottom = bounds.top + el.outerHeight();
1598
1599      return (!(viewport.right < bounds.left || viewport.left > bounds.right || viewport.bottom < bounds.top || viewport.top > bounds.bottom));
1600    };
1601
1602    /**
1603     * Initializes keyboard events
1604     */
1605    var keyPress = function(e) {
1606      var activeElementTag = document.activeElement.tagName.toLowerCase(),
1607      tagFilters = 'input|textarea',
1608      p = new RegExp(activeElementTag,['i']),
1609      result = p.exec(tagFilters);
1610
1611      if (result == null && isOnScreen(el)) {
1612        if (e.keyCode === 39) {
1613          clickNextBind(e);
1614          return false;
1615        } else if (e.keyCode === 37) {
1616          clickPrevBind(e);
1617          return false;
1618        }
1619      }
1620    };
1621
1622    /**
1623     * Initializes touch events
1624     */
1625    var initTouch = function() {
1626      // initialize object to contain all touch values
1627      slider.touch = {
1628        start: {x: 0, y: 0},
1629        end: {x: 0, y: 0}
1630      };
1631      slider.viewport.
vendor: 6,558 bytes, lines 1631-1792
1631bind('touchstart MSPointerDown pointerdown', onTouchStart);
1632
1633      //for browsers that have implemented pointer events and fire a click after
1634      //every pointerup regardless of whether pointerup is on same screen location as pointerdown or not
1635      slider.viewport.on('click', '.bxslider a', function(e) {
1636        if (slider.viewport.hasClass('click-disabled')) {
1637          e.preventDefault();
1638          slider.viewport.removeClass('click-disabled');
1639        }
1640      });
1641    };
1642
1643    /**
1644     * Event handler for "touchstart"
1645     *
1646     * @param e (event)
1647     *  - DOM event object
1648     */
1649    var onTouchStart = function(e) {
1650      //disable slider controls while user is interacting with slides to avoid slider freeze that happens on touch devices when a slide swipe happens immediately after interacting with slider controls
1651      slider.controls.el.addClass('disabled');
1652
1653      if (slider.working) {
1654        e.preventDefault();
1655        slider.controls.el.removeClass('disabled');
1656      } else {
1657        // record the original position when touch starts
1658        slider.touch.originalPos = el.position();
1659        var orig = e.originalEvent,
1660        touchPoints = (typeof orig.changedTouches !== 'undefined') ? orig.changedTouches : [orig];
1661        // record the starting touch x, y coordinates
1662        slider.touch.start.x = touchPoints[0].pageX;
1663        slider.touch.start.y = touchPoints[0].pageY;
1664
1665        if (slider.viewport.get(0).setPointerCapture) {
1666          slider.pointerId = orig.pointerId;
1667          slider.viewport.get(0).setPointerCapture(slider.pointerId);
1668        }
1669        // bind a "touchmove" event to the viewport
1670        slider.viewport.bind('touchmove MSPointerMove pointermove', onTouchMove);
1671        // bind a "touchend" event to the viewport
1672        slider.viewport.bind('touchend MSPointerUp pointerup', onTouchEnd);
1673        slider.viewport.bind('MSPointerCancel pointercancel', onPointerCancel);
1674      }
1675    };
1676
1677    /**
1678     * Cancel Pointer for Windows Phone
1679     *
1680     * @param e (event)
1681     *  - DOM event object
1682     */
1683    var onPointerCancel = function(e) {
1684      /* onPointerCancel handler is needed to deal with situations when a touchend
1685      doesn't fire after a touchstart (this happens on windows phones only) */
1686      setPositionProperty(slider.touch.originalPos.left, 'reset', 0);
1687
1688      //remove handlers
1689      slider.controls.el.removeClass('disabled');
1690      slider.viewport.unbind('MSPointerCancel pointercancel', onPointerCancel);
1691      slider.viewport.unbind('touchmove MSPointerMove pointermove', onTouchMove);
1692      slider.viewport.unbind('touchend MSPointerUp pointerup', onTouchEnd);
1693      if (slider.viewport.get(0).releasePointerCapture) {
1694        slider.viewport.get(0).releasePointerCapture(slider.pointerId);
1695      }
1696    };
1697
1698    /**
1699     * Event handler for "touchmove"
1700     *
1701     * @param e (event)
1702     *  - DOM event object
1703     */
1704    var onTouchMove = function(e) {
1705      var orig = e.originalEvent,
1706      touchPoints = (typeof orig.changedTouches !== 'undefined') ? orig.changedTouches : [orig],
1707      // if scrolling on y axis, do not prevent default
1708      xMovement = Math.abs(touchPoints[0].pageX - slider.touch.start.x),
1709      yMovement = Math.abs(touchPoints[0].pageY - slider.touch.start.y),
1710      value = 0,
1711      change = 0;
1712
1713      // x axis swipe
1714      if ((xMovement * 3) > yMovement && slider.settings.preventDefaultSwipeX) {
1715        e.preventDefault();
1716      // y axis swipe
1717      } else if ((yMovement * 3) > xMovement && slider.settings.preventDefaultSwipeY) {
1718        e.preventDefault();
1719      }
1720      if (slider.settings.mode !== 'fade' && slider.settings.oneToOneTouch) {
1721        // if horizontal, drag along x axis
1722        if (slider.settings.mode === 'horizontal') {
1723          change = touchPoints[0].pageX - slider.touch.start.x;
1724          value = slider.touch.originalPos.left + change;
1725        // if vertical, drag along y axis
1726        } else {
1727          change = touchPoints[0].pageY - slider.touch.start.y;
1728          value = slider.touch.originalPos.top + change;
1729        }
1730        setPositionProperty(value, 'reset', 0);
1731      }
1732    };
1733
1734    /**
1735     * Event handler for "touchend"
1736     *
1737     * @param e (event)
1738     *  - DOM event object
1739     */
1740    var onTouchEnd = function(e) {
1741      slider.viewport.unbind('touchmove MSPointerMove pointermove', onTouchMove);
1742      //enable slider controls as soon as user stops interacing with slides
1743      slider.controls.el.removeClass('disabled');
1744      var orig    = e.originalEvent,
1745      touchPoints = (typeof orig.changedTouches !== 'undefined') ? orig.changedTouches : [orig],
1746      value       = 0,
1747      distance    = 0;
1748      // record end x, y positions
1749      slider.touch.end.x = touchPoints[0].pageX;
1750      slider.touch.end.y = touchPoints[0].pageY;
1751      // if fade mode, check if absolute x distance clears the threshold
1752      if (slider.settings.mode === 'fade') {
1753        distance = Math.abs(slider.touch.start.x - slider.touch.end.x);
1754        if (distance >= slider.settings.swipeThreshold) {
1755          if (slider.touch.start.x > slider.touch.end.x) {
1756            el.goToNextSlide();
1757          } else {
1758            el.goToPrevSlide();
1759          }
1760          el.stopAuto();
1761        }
1762      // not fade mode
1763      } else {
1764        // calculate distance and el's animate property
1765        if (slider.settings.mode === 'horizontal') {
1766          distance = slider.touch.end.x - slider.touch.start.x;
1767          value = slider.touch.originalPos.left;
1768        } else {
1769          distance = slider.touch.end.y - slider.touch.start.y;
1770          value = slider.touch.originalPos.top;
1771        }
1772        // if not infinite loop and first / last slide, do not attempt a slide transition
1773        if (!slider.settings.infiniteLoop && ((slider.active.index === 0 && distance > 0) || (slider.active.last && distance < 0))) {
1774          setPositionProperty(value, 'reset', 200);
1775        } else {
1776          // check if distance clears threshold
1777          if (Math.abs(distance) >= slider.settings.swipeThreshold) {
1778            if (distance < 0) {
1779              el.goToNextSlide();
1780            } else {
1781              el.goToPrevSlide();
1782            }
1783            el.stopAuto();
1784          } else {
1785            // el.animate(property, 200);
1786            setPositionProperty(value, 'reset', 200);
1787          }
1788        }
1789      }
1790      slider.viewport.unbind('touchend MSPointerUp pointerup', onTouchEnd);
1791      if (slider.viewport.get(0).releasePointerCapture) {
1792        slider.viewport.get(0).releasePointerCapture(slider.pointerId
vendor: 8,775 bytes, lines 1792-1987
1792);
1793      }
1794    };
1795
1796    /**
1797     * Window resize event callback
1798     */
1799    var resizeWindow = function(e) {
1800      // don't do anything if slider isn't initialized.
1801      if (!slider.initialized) { return; }
1802      // Delay if slider working.
1803      if (slider.working) {
1804        window.setTimeout(resizeWindow, 10);
1805      } else {
1806        // get the new window dimens (again, thank you IE)
1807        var windowWidthNew = $(window).width(),
1808        windowHeightNew = $(window).height();
1809        // make sure that it is a true window resize
1810        // *we must check this because our dinosaur friend IE fires a window resize event when certain DOM elements
1811        // are resized. Can you just die already?*
1812        if (windowWidth !== windowWidthNew || windowHeight !== windowHeightNew) {
1813          // set the new window dimens
1814          windowWidth = windowWidthNew;
1815          windowHeight = windowHeightNew;
1816          // update all dynamic elements
1817          el.redrawSlider();
1818          // Call user resize handler
1819          slider.settings.onSliderResize.call(el, slider.active.index);
1820        }
1821      }
1822    };
1823
1824    /**
1825     * Adds an aria-hidden=true attribute to each element
1826     *
1827     * @param startVisibleIndex (int)
1828     *  - the first visible element's index
1829     */
1830    var applyAriaHiddenAttributes = function(startVisibleIndex) {
1831      var numberOfSlidesShowing = getNumberSlidesShowing();
1832      // only apply attributes if the setting is enabled and not in ticker mode
1833      if (slider.settings.ariaHidden && !slider.settings.ticker) {
1834        // add aria-hidden=true to all elements
1835        slider.children.attr('aria-hidden', 'true');
1836        // get the visible elements and change to aria-hidden=false
1837        slider.children.slice(startVisibleIndex, startVisibleIndex + numberOfSlidesShowing).attr('aria-hidden', 'false');
1838      }
1839    };
1840
1841    /**
1842     * Returns index according to present page range
1843     *
1844     * @param slideOndex (int)
1845     *  - the desired slide index
1846     */
1847    var setSlideIndex = function(slideIndex) {
1848      if (slideIndex < 0) {
1849        if (slider.settings.infiniteLoop) {
1850          return getPagerQty() - 1;
1851        }else {
1852          //we don't go to undefined slides
1853          return slider.active.index;
1854        }
1855      // if slideIndex is greater than children length, set active index to 0 (this happens during infinite loop)
1856      } else if (slideIndex >= getPagerQty()) {
1857        if (slider.settings.infiniteLoop) {
1858          return 0;
1859        } else {
1860          //we don't move to undefined pages
1861          return slider.active.index;
1862        }
1863      // set active index to requested slide
1864      } else {
1865        return slideIndex;
1866      }
1867    };
1868
1869    /**
1870     * ===================================================================================
1871     * = PUBLIC FUNCTIONS
1872     * ===================================================================================
1873     */
1874
1875    /**
1876     * Performs slide transition to the specified slide
1877     *
1878     * @param slideIndex (int)
1879     *  - the destination slide's index (zero-based)
1880     *
1881     * @param direction (string)
1882     *  - INTERNAL USE ONLY - the direction of travel ("prev" / "next")
1883     */
1884    el.goToSlide = function(slideIndex, direction) {
1885      // onSlideBefore, onSlideNext, onSlidePrev callbacks
1886      // Allow transition canceling based on returned value
1887      var performTransition = true,
1888      moveBy = 0,
1889      position = {left: 0, top: 0},
1890      lastChild = null,
1891      lastShowingIndex, eq, value, requestEl;
1892      // store the old index
1893      slider.oldIndex = slider.active.index;
1894      //set new index
1895      slider.active.index = setSlideIndex(slideIndex);
1896
1897      // if plugin is currently in motion, ignore request
1898      if (slider.working || slider.active.index === slider.oldIndex) { return; }
1899      // declare that plugin is in motion
1900      slider.working = true;
1901
1902      performTransition = slider.settings.onSlideBefore.call(el, slider.children.eq(slider.active.index), slider.oldIndex, slider.active.index);
1903
1904      // If transitions canceled, reset and return
1905      if (typeof (performTransition) !== 'undefined' && !performTransition) {
1906        slider.active.index = slider.oldIndex; // restore old index
1907        slider.working = false; // is not in motion
1908        return;
1909      }
1910
1911      if (direction === 'next') {
1912        // Prevent canceling in future functions or lack there-of from negating previous commands to cancel
1913        if (!slider.settings.onSlideNext.call(el, slider.children.eq(slider.active.index), slider.oldIndex, slider.active.index)) {
1914          performTransition = false;
1915        }
1916      } else if (direction === 'prev') {
1917        // Prevent canceling in future functions or lack there-of from negating previous commands to cancel
1918        if (!slider.settings.onSlidePrev.call(el, slider.children.eq(slider.active.index), slider.oldIndex, slider.active.index)) {
1919          performTransition = false;
1920        }
1921      }
1922
1923      // check if last slide
1924      slider.active.last = slider.active.index >= getPagerQty() - 1;
1925      // update the pager with active class
1926      if (slider.settings.pager || slider.settings.pagerCustom) { updatePagerActive(slider.active.index); }
1927      // // check for direction control update
1928      if (slider.settings.controls) { updateDirectionControls(); }
1929      // if slider is set to mode: "fade"
1930      if (slider.settings.mode === 'fade') {
1931        // if adaptiveHeight is true and next height is different from current height, animate to the new height
1932        if (slider.settings.adaptiveHeight && slider.viewport.height() !== getViewportHeight()) {
1933          slider.viewport.animate({height: getViewportHeight()}, slider.settings.adaptiveHeightSpeed);
1934        }
1935        // fade out the visible child and reset its z-index value
1936        slider.children.filter(':visible').fadeOut(slider.settings.speed).css({zIndex: 0});
1937        // fade in the newly requested slide
1938        slider.children.eq(slider.active.index).css('zIndex', slider.settings.slideZIndex + 1).fadeIn(slider.settings.speed, function() {
1939          $(this).css('zIndex', slider.settings.slideZIndex);
1940          updateAfterSlideTransition();
1941        });
1942      // slider mode is not "fade"
1943      } else {
1944        // if adaptiveHeight is true and next height is different from current height, animate to the new height
1945        if (slider.settings.adaptiveHeight && slider.viewport.height() !== getViewportHeight()) {
1946          slider.viewport.animate({height: getViewportHeight()}, slider.settings.adaptiveHeightSpeed);
1947        }
1948        // if carousel and not infinite loop
1949        if (!slider.settings.infiniteLoop && slider.carousel && slider.active.last) {
1950          if (slider.settings.mode === 'horizontal') {
1951            // get the last child position
1952            lastChild = slider.children.eq(slider.children.length - 1);
1953            position = lastChild.position();
1954            // calculate the position of the last slide
1955            moveBy = slider.viewport.width() - lastChild.outerWidth();
1956          } else {
1957            // get last showing index position
1958            lastShowingIndex = slider.children.length - slider.settings.minSlides;
1959            position = slider.children.eq(lastShowingIndex).position();
1960          }
1961          // horizontal carousel, going previous while on first slide (infiniteLoop mode)
1962        } else if (slider.carousel && slider.active.last && direction === 'prev') {
1963          // get the last child position
1964          eq = slider.settings.moveSlides === 1 ? slider.settings.maxSlides - getMoveBy() : ((getPagerQty() - 1) * getMoveBy()) - (slider.children.length - slider.settings.maxSlides);
1965          lastChild = el.children('.bx-clone').eq(eq);
1966          position = lastChild.position();
1967        // if infinite loop and "Next" is clicked on the last slide
1968        } else if (direction === 'next' && slider.active.index === 0) {
1969          // get the last clone position
1970          position = el.find('> .bx-clone').eq(slider.settings.maxSlides).position();
1971          slider.active.last = false;
1972        // normal non-zero requests
1973        } else if (slideIndex >= 0) {
1974          //parseInt is applied to allow floats for slides/page
1975          requestEl = slideIndex * parseInt(getMoveBy());
1976          position = slider.children.eq(requestEl).position();
1977        }
1978
1979        /* If the position doesn't exist
1980         * (e.g. if you destroy the slider on a next click),
1981         * it doesn't throw an error.
1982         */
1983        if (typeof (position) !== 'undefined') {
1984          value = slider.settings.mode === 'horizontal' ? -(position.left - moveBy) : -position.top;
1985          // plugin values to be animated
1986          setPositionProperty(value, 'slide', slider.settings.speed);
1987        }
1987 else {
1988          slider.working = false;
1989        }
1990      }
1991      if (slider.settings.ariaHidden) { applyAriaHiddenAttributes(slider.active.index * getMoveBy()); }
1992    };
1993
1994    /**
1995     * Transitions to the next slide in the show
1996     */
1997    el.goToNextSlide = function() {
1998      // if infiniteLoop is false and last page is showing, disregard call
1999      if (!slider.settings.infiniteLoop && slider.active.last) { return; }
2000      var pagerIndex = parseInt(slider.active.index) + 1;
2001      el.goToSlide(pagerIndex, 'next');
2002    };
2003
2004    /**
2005     * Transitions to the prev slide in the show
2006     */
2007    el.goToPrevSlide = function() {
2008      // if infiniteLoop is false and last page is showing, disregard call
2009      if (!slider.settings.infiniteLoop && slider.active.index === 0) { return; }
2010      var pagerIndex = parseInt(slider.active.index) - 1;
2011      el.goToSlide(pagerIndex, 'prev');
2012    };
2013
2014    /**
2015     * Starts the auto show
2016     *
2017     * @param preventControlUpdate (boolean)
2018     *  - if true, auto controls state will not be updated
2019     */
2020    el.startAuto = function(preventControlUpdate) {
2021      // if an interval already exists, disregard call
2022      if (slider.interval) { return; }
2023      // create an interval
2024      slider.interval = setInterval(function() {
2025        if (slider.settings.autoDirection === 'next') {
2026          el.goToNextSlide();
2027        } else {
2028          el.goToPrevSlide();
2029        }
2030      }, slider.settings.pause);
2031      // if auto controls are displayed and preventControlUpdate is not true
2032      if (slider.settings.autoControls && preventControlUpdate !== true) { updateAutoControls('stop'); }
2033    };
2034
2035    /**
2036     * Stops the auto show
2037     *
2038     * @param preventControlUpdate (boolean)
2039     *  - if true, auto controls state will not be updated
2040     */
2041    el.stopAuto = function(preventControlUpdate) {
2042      // if no interval exists, disregard call
2043      if (!slider.interval) { return; }
2044      // clear the interval
2045      clearInterval(slider.interval);
2046      slider.interval = null;
2047      // if auto controls are displayed and preventControlUpdate is not true
2048      if (slider.settings.autoControls && preventControlUpdate !== true) { updateAutoControls('start'); }
2049    };
2050
2051    /**
2052     * Returns current slide index (zero-based)
2053     */
2054    el.getCurrentSlide = function() {
2055      return slider.active.index;
2056    };
2057
2058    /**
2059     * Returns current slide element
2060     */
2061    el.getCurrentSlideElement = function() {
2062      return slider.children.eq(slider.active.index);
2063    };
2064
2065    /**
2066     * Returns a slide element
2067     * @param index (int)
2068     *  - The index (zero-based) of the element you want returned.
2069     */
2070    el.getSlideElement = function(index) {
2071      return slider.children.eq(index);
2072    };
2073
2074    /**
2075     * Returns number of slides in show
2076     */
2077    el.getSlideCount = function() {
2078      return slider.children.length;
2079    };
2080
2081    /**
2082     * Return slider.working variable
2083     */
2084    el.isWorking = function() {
2085      return slider.working;
2086    };
2087
2088    /**
2089     * Update all dynamic slider elements
2090     */
2091    el.redrawSlider = function() {
2092      // resize all children in ratio to new screen size
2093      slider.children.add(el.find('.bx-clone')).outerWidth(getSlideWidth());
2094      // adjust the height
vendor: 3,187 bytes, lines 2095-2180
2095      slider.viewport.css('height', getViewportHeight());
2096      // update the slide position
2097      if (!slider.settings.ticker) { setSlidePosition(); }
2098      // if active.last was true before the screen resize, we want
2099      // to keep it last no matter what screen size we end on
2100      if (slider.active.last) { slider.active.index = getPagerQty() - 1; }
2101      // if the active index (page) no longer exists due to the resize, simply set the index as last
2102      if (slider.active.index >= getPagerQty()) { slider.active.last = true; }
2103      // if a pager is being displayed and a custom pager is not being used, update it
2104      if (slider.settings.pager && !slider.settings.pagerCustom) {
2105        populatePager();
2106        updatePagerActive(slider.active.index);
2107      }
2108      if (slider.settings.ariaHidden) { applyAriaHiddenAttributes(slider.active.index * getMoveBy()); }
2109    };
2110
2111    /**
2112     * Destroy the current instance of the slider (revert everything back to original state)
2113     */
2114    el.destroySlider = function() {
2115      // don't do anything if slider has already been destroyed
2116      if (!slider.initialized) { return; }
2117      slider.initialized = false;
2118      $('.bx-clone', this).remove();
2119      slider.children.each(function() {
2120        if ($(this).data('origStyle') !== undefined) {
2121          $(this).attr('style', $(this).data('origStyle'));
2122        } else {
2123          $(this).removeAttr('style');
2124        }
2125      });
2126      if ($(this).data('origStyle') !== undefined) {
2127        this.attr('style', $(this).data('origStyle'));
2128      } else {
2129        $(this).removeAttr('style');
2130      }
2131      $(this).unwrap().unwrap();
2132      if (slider.controls.el) { slider.controls.el.remove(); }
2133      if (slider.controls.next) { slider.controls.next.remove(); }
2134      if (slider.controls.prev) { slider.controls.prev.remove(); }
2135      if (slider.pagerEl && slider.settings.controls && !slider.settings.pagerCustom) { slider.pagerEl.remove(); }
2136      $('.bx-caption', this).remove();
2137      if (slider.controls.autoEl) { slider.controls.autoEl.remove(); }
2138      clearInterval(slider.interval);
2139      if (slider.settings.responsive) { $(window).unbind('resize', resizeWindow); }
2140      if (slider.settings.keyboardEnabled) { $(document).unbind('keydown', keyPress); }
2141      //remove self reference in data
2142      $(this).removeData('bxSlider');
2143    };
2144
2145    /**
2146     * Reload the slider (revert all DOM changes, and re-initialize)
2147     */
2148    el.reloadSlider = function(settings) {
2149      if (settings !== undefined) { options = settings; }
2150      el.destroySlider();
2151      init();
2152      //store reference to self in order to access public functions later
2153      $(el).data('bxSlider', this);
2154    };
2155
2156    init();
2157
2158    $(el).data('bxSlider', this);
2159
2160    // returns the current jQuery object
2161    return this;
2162  };
2163
2164})(jQuery);
2165})(jQuery1_11_0);
2166/*
2167 *	jQuery carouFredSel 6.2.1
2168 *	Demo's and documentation:
2169 *	caroufredsel.dev7studios.com
2170 *
2171 *	Copyright (c) 2013 Fred Heusschen
2172 *	www.frebsite.nl
2173 *
2174 *	Dual licensed under the MIT and GPL licenses.
2175 *	http://en.wikipedia.org/wiki/MIT_License
2176 *	http://en.wikipedia.org/wiki/GNU_General_Public_License
2177 */
2178
2179(function ($) {
2180    var jQuery = $;
vendor: 54,468 bytes, lines 2180-2182
2180
2181(function($){function sc_setScroll(a,b,c){return"transition"==c.transition&&"swing"==b&&(b="ease"),{anims:[],duration:a,orgDuration:a,easing:b,startTime:getTime()}}function sc_startScroll(a,b){for(var c=0,d=a.anims.length;d>c;c++){var e=a.anims[c];e&&e[0][b.transition](e[1],a.duration,a.easing,e[2])}}function sc_stopScroll(a,b){is_boolean(b)||(b=!0),is_object(a.pre)&&sc_stopScroll(a.pre,b);for(var c=0,d=a.anims.length;d>c;c++){var e=a.anims[c];e[0].stop(!0),b&&(e[0].css(e[1]),is_function(e[2])&&e[2]())}is_object(a.post)&&sc_stopScroll(a.post,b)}function sc_afterScroll(a,b,c){switch(b&&b.remove(),c.fx){case"fade":case"crossfade":case"cover-fade":case"uncover-fade":a.css("opacity",1),a.css("filter","")}}function sc_fireCallbacks(a,b,c,d,e){if(b[c]&&b[c].call(a,d),e[c].length)for(var f=0,g=e[c].length;g>f;f++)e[c][f].call(a,d);return[]}function sc_fireQueue(a,b,c){return b.length&&(a.trigger(cf_e(b[0][0],c),b[0][1]),b.shift()),b}function sc_hideHiddenItems(a){a.each(function(){var a=$(this);a.data("_cfs_isHidden",a.is(":hidden")).hide()})}function sc_showHiddenItems(a){a&&a.each(function(){var a=$(this);a.data("_cfs_isHidden")||a.show()})}function sc_clearTimers(a){return a.auto&&clearTimeout(a.auto),a.progress&&clearInterval(a.progress),a}function sc_mapCallbackArguments(a,b,c,d,e,f,g){return{width:g.width,height:g.height,items:{old:a,skipped:b,visible:c},scroll:{items:d,direction:e,duration:f}}}function sc_getDuration(a,b,c,d){var e=a.duration;return"none"==a.fx?0:("auto"==e?e=b.scroll.duration/b.scroll.items*c:10>e&&(e=d/e),1>e?0:("fade"==a.fx&&(e/=2),Math.round(e)))}function nv_showNavi(a,b,c){var d=is_number(a.items.minimum)?a.items.minimum:a.items.visible+1;if("show"==b||"hide"==b)var e=b;else if(d>b){debug(c,"Not enough items ("+b+" total, "+d+" needed): Hiding navigation.");var e="hide"}else var e="show";var f="show"==e?"removeClass":"addClass",g=cf_c("hidden",c);a.auto.button&&a.auto.button[e]()[f](g),a.prev.button&&a.prev.button[e]()[f](g),a.next.button&&a.next.button[e]()[f](g),a.pagination.container&&a.pagination.container[e]()[f](g)}function nv_enableNavi(a,b,c){if(!a.circular&&!a.infinite){var d="removeClass"==b||"addClass"==b?b:!1,e=cf_c("disabled",c);if(a.auto.button&&d&&a.auto.button[d](e),a.prev.button){var f=d||0==b?"addClass":"removeClass";a.prev.button[f](e)}if(a.next.button){var f=d||b==a.items.visible?"addClass":"removeClass";a.next.button[f](e)}}}function go_getObject(a,b){return is_function(b)?b=b.call(a):is_undefined(b)&&(b={}),b}function go_getItemsObject(a,b){return b=go_getObject(a,b),is_number(b)?b={visible:b}:"variable"==b?b={visible:b,width:b,height:b}:is_object(b)||(b={}),b}function go_getScrollObject(a,b){return b=go_getObject(a,b),is_number(b)?b=50>=b?{items:b}:{duration:b}:is_string(b)?b={easing:b}:is_object(b)||(b={}),b}function go_getNaviObject(a,b){if(b=go_getObject(a,b),is_string(b)){var c=cf_getKeyCode(b);b=-1==c?$(b):c}return b}function go_getAutoObject(a,b){return b=go_getNaviObject(a,b),is_jquery(b)?b={button:b}:is_boolean(b)?b={play:b}:is_number(b)&&(b={timeoutDuration:b}),b.progress&&(is_string(b.progress)||is_jquery(b.progress))&&(b.progress={bar:b.progress}),b}function go_complementAutoObject(a,b){return is_function(b.button)&&(b.button=b.button.call(a)),is_string(b.button)&&(b.button=$(b.button)),is_boolean(b.play)||(b.play=!0),is_number(b.delay)||(b.delay=0),is_undefined(b.pauseOnEvent)&&(b.pauseOnEvent=!0),is_boolean(b.pauseOnResize)||(b.pauseOnResize=!0),is_number(b.timeoutDuration)||(b.timeoutDuration=10>b.duration?2500:5*b.duration),b.progress&&(is_function(b.progress.bar)&&(b.progress.bar=b.progress.bar.call(a)),is_string(b.progress.bar)&&(b.progress.bar=$(b.progress.bar)),b.progress.bar?(is_function(b.progress.updater)||(b.progress.updater=$.fn.carouFredSel.progressbarUpdater),is_number(b.progress.interval)||(b.progress.interval=50)):b.progress=!1),b}function go_getPrevNextObject(a,b){return b=go_getNaviObject(a,b),is_jquery(b)?b={button:b}:is_number(b)&&(b={key:b}),b}function go_complementPrevNextObject(a,b){return is_function(b.button)&&(b.button=b.button.call(a)),is_string(b.button)&&(b.button=$(b.button)),is_string(b.key)&&(b.key=cf_getKeyCode(b.key)),b}function go_getPaginationObject(a,b){return b=go_getNaviObject(a,b),is_jquery(b)?b={container:b}:is_boolean(b)&&(b={keys:b}),b}function go_complementPaginationObject(a,b){return is_function(b.container)&&(b.container=b.container.call(a)),is_string(b.container)&&(b.container=$(b.container)),is_number(b.items)||(b.items=!1),is_boolean(b.keys)||(b.keys=!1),is_function(b.anchorBuilder)||is_false(b.anchorBuilder)||(b.anchorBuilder=$.fn.carouFredSel.pageAnchorBuilder),is_number(b.deviation)||(b.deviation=0),b}function go_getSwipeObject(a,b){return is_function(b)&&(b=b.call(a)),is_undefined(b)&&(b={onTouch:!1}),is_true(b)?b={onTouch:b}:is_number(b)&&(b={items:b}),b}function go_complementSwipeObject(a,b){return is_boolean(b.onTouch)||(b.onTouch=!0),is_boolean(b.onMouse)||(b.onMouse=!1),is_object(b.options)||(b.options={}),is_boolean(b.options.triggerOnTouchEnd)||(b.options.triggerOnTouchEnd=!1),b}function go_getMousewheelObject(a,b){return is_function(b)&&(b=b.call(a)),is_true(b)?b={}:is_number(b)?b={items:b}:is_undefined(b)&&(b=!1),b}function go_complementMousewheelObject(a,b){return b}function gn_getItemIndex(a,b,c,d,e){if(is_string(a)&&(a=$(a,e)),is_object(a)&&(a=$(a,e)),is_jquery(a)?(a=e.children().index(a),is_boolean(c)||(c=!1)):is_boolean(c)||(c=!0),is_number(a)||(a=0),is_number(b)||(b=0),c&&(a+=d.first),a+=b,d.total>0){for(;a>=d.total;)a-=d.total;for(;0>a;)a+=d.total}return a}function gn_getVisibleItemsPrev(a,b,c){for(var d=0,e=0,f=c;f>=0;f--){var g=a.eq(f);if(d+=g.is(":visible")?g[b.d.outerWidth](!0):0,d>b.maxDimension)return e;0==f&&(f=a.length),e++}}function gn_getVisibleItemsPrevFilter(a,b,c){return gn_getItemsPrevFilter(a,b.items.filter,b.items.visibleConf.org,c)}function gn_getScrollItemsPrevFilter(a,b,c,d){return gn_getItemsPrevFilter(a,b.items.filter,d,c)}function gn_getItemsPrevFilter(a,b,c,d){for(var e=0,f=0,g=d,h=a.length;g>=0;g--){if(f++,f==h)return f;var i=a.eq(g);if(i.is(b)&&(e++,e==c))return f;0==g&&(g=h)}}function gn_getVisibleOrg(a,b){return b.items.visibleConf.org||a.children().slice(0,b.items.visible).filter(b.items.filter).length}function gn_getVisibleItemsNext(a,b,c){for(var d=0,e=0,f=c,g=a.length-1;g>=f;f++){var h=a.eq(f);if(d+=h.is(":visible")?h[b.d.outerWidth](!0):0,d>b.maxDimension)return e;if(e++,e==g+1)return e;f==g&&(f=-1)}}function gn_getVisibleItemsNextTestCircular(a,b,c,d){var e=gn_getVisibleItemsNext(a,b,c);return b.circular||c+e>d&&(e=d-c),e}function gn_getVisibleItemsNextFilter(a,b,c){return gn_getItemsNextFilter(a,b.items.filter,b.items.visibleConf.org,c,b.circular)}function gn_getScrollItemsNextFilter(a,b,c,d){return gn_getItemsNextFilter(a,b.items.filter,d+1,c,b.circular)-1}function gn_getItemsNextFilter(a,b,c,d){for(var f=0,g=0,h=d,i=a.length-1;i>=h;h++){if(g++,g>=i)return g;var j=a.eq(h);if(j.is(b)&&(f++,f==c))return g;h==i&&(h=-1)}}function gi_getCurrentItems(a,b){return a.slice(0,b.items.visible)}function gi_getOldItemsPrev(a,b,c){return a.slice(c,b.items.visibleConf.old+c)}function gi_getNewItemsPrev(a,b){return a.slice(0,b.items.visible)}function gi_getOldItemsNext(a,b){return a.slice(0,b.items.visibleConf.old)}function gi_getNewItemsNext(a,b,c){return a.slice(c,b.items.visible+c)}function sz_storeMargin(a,b,c){b.usePadding&&(is_string(c)||(c="_cfs_origCssMargin"),a.each(function(){var a=$(this),d=parseInt(a.css(b.d.marginRight),10);is_number(d)||(d=0),a.data(c,d)}))}function sz_resetMargin(a,b,c){if(b.usePadding){var d=is_boolean(c)?c:!1;is_number(c)||(c=0),sz_storeMargin(a,b,"_cfs_tempCssMargin"),a.each(function(){var a=$(this);a.css(b.d.marginRight,d?a.data("_cfs_tempCssMargin"):c+a.data("_cfs_origCssMargin"))})}}function sz_storeOrigCss(a){a.each(function(){var a=$(this);a.data("_cfs_origCss",a.attr("style")||"")})}function sz_restoreOrigCss(a){a.each(function(){var a=$(this);a.attr("style",a.data("_cfs_origCss")||"")})}function sz_setResponsiveSizes(a,b){var d=(a.items.visible,a.items[a.d.width]),e=a[a.d.height],f=is_percentage(e);b.each(function(){var b=$(this),c=d-ms_getPaddingBorderMargin(b,a,"Width");b[a.d.width](c),f&&b[a.d.height](ms_getPercentage(c,e))})}function sz_setSizes(a,b){var c=a.parent(),d=a.children(),e=gi_getCurrentItems(d,b),f=cf_mapWrapperSizes(ms_getSizes(e,b,!0),b,!1);if(c.css(f),b.usePadding){var g=b.padding,h=g[b.d[1]];b.align&&0>h&&(h=0);var i=e.last();i.css(b.d.marginRight,i.data("_cfs_origCssMargin")+h),a.css(b.d.top,g[b.d[0]]),a.css(b.d.left,g[b.d[3]])}return a.css(b.d.width,f[b.d.width]+2*ms_getTotalSize(d,b,"width")),a.css(b.d.height,ms_getLargestSize(d,b,"height")),f}function ms_getSizes(a,b,c){return[ms_getTotalSize(a,b,"width",c),ms_getLargestSize(a,b,"height",c)]}function ms_getLargestSize(a,b,c,d){return is_boolean(d)||(d=!1),is_number(b[b.d[c]])&&d?b[b.d[c]]:is_number(b.items[b.d[c]])?b.items[b.d[c]]:(c=c.toLowerCase().indexOf("width")>-1?"outerWidth":"outerHeight",ms_getTrueLargestSize(a,b,c))}function ms_getTrueLargestSize(a,b,c){for(var d=0,e=0,f=a.length;f>e;e++){var g=a.eq(e),h=g.is(":visible")?g[b.d[c]](!0):0;h>d&&(d=h)}return d}function ms_getTotalSize(a,b,c,d){if(is_boolean(d)||(d=!1),is_number(b[b.d[c]])&&d)return b[b.d[c]];if(is_number(b.items[b.d[c]]))return b.items[b.d[c]]*a.length;for(var e=c.toLowerCase().indexOf("width")>-1?"outerWidth":"outerHeight",f=0,g=0,h=a.length;h>g;g++){var i=a.eq(g);f+=i.is(":visible")?i[b.d[e]](!0):0}return f}function ms_getParentSize(a,b,c){var d=a.is(":visible");d&&a.hide();var e=a.parent()[b.d[c]]();return d&&a.show(),e}function ms_getMaxDimension(a,b){return is_number(a[a.d.width])?a[a.d.width]:b}function ms_hasVariableSizes(a,b,c){for(var d=!1,e=!1,f=0,g=a.length;g>f;f++){var h=a.eq(f),i=h.is(":visible")?h[b.d[c]](!0):0;d===!1?d=i:d!=i&&(e=!0),0==d&&(e=!0)}return e}function ms_getPaddingBorderMargin(a,b,c){return a[b.d["outer"+c]](!0)-a[b.d[c.toLowerCase()]]()}function ms_getPercentage(a,b){if(is_percentage(b)){if(b=parseInt(b.slice(0,-1),10),!is_number(b))return a;a*=b/100}return a}function cf_e(a,b,c,d,e){return is_boolean(c)||(c=!0),is_boolean(d)||(d=!0),is_boolean(e)||(e=!1),c&&(a=b.events.prefix+a),d&&(a=a+"."+b.events.namespace),d&&e&&(a+=b.serialNumber),a}function cf_c(a,b){return is_string(b.classnames[a])?b.classnames[a]:a}function cf_mapWrapperSizes(a,b,c){is_boolean(c)||(c=!0);var d=b.usePadding&&c?b.padding:[0,0,0,0],e={};return e[b.d.width]=a[0]+d[1]+d[3],e[b.d.height]=a[1]+d[0]+d[2],e}function cf_sortParams(a,b){for(var c=[],d=0,e=a.length;e>d;d++)for(var f=0,g=b.length;g>f;f++)if(b[f].indexOf(typeof a[d])>-1&&is_undefined(c[f])){c[f]=a[d];break}return c}function cf_getPadding(a){if(is_undefined(a))return[0,0,0,0];if(is_number(a))return[a,a,a,a];if(is_string(a)&&(a=a.split("px").join("").split("em").join("").split(" ")),!is_array(a))return[0,0,0,0];for(var b=0;4>b;b++)a[b]=parseInt(a[b],10);switch(a.length){case 0:return[0,0,0,0];case 1:return[a[0],a[0],a[0],a[0]];case 2:return[a[0],a[1],a[0],a[1]];case 3:return[a[0],a[1],a[2],a[1]];default:return[a[0],a[1],a[2],a[3]]}}function cf_getAlignPadding(a,b){var c=is_number(b[b.d.width])?Math.ceil(b[b.d.width]-ms_getTotalSize(a,b,"width")):0;switch(b.align){case"left":return[0,c];case"right":return[c,0];case"center":default:return[Math.ceil(c/2),Math.floor(c/2)]}}function cf_getDimensions(a){for(var b=[["width","innerWidth","outerWidth","height","innerHeight","outerHeight","left","top","marginRight",0,1,2,3],["height","innerHeight","outerHeight","width","innerWidth","outerWidth","top","left","marginBottom",3,2,1,0]],c=b[0].length,d="right"==a.direction||"left"==a.direction?0:1,e={},f=0;c>f;f++)e[b[0][f]]=b[d][f];return e}function cf_getAdjust(a,b,c,d){var e=a;if(is_function(c))e=c.call(d,e);else if(is_string(c)){var f=c.split("+"),g=c.split("-");if(g.length>f.length)var h=!0,i=g[0],j=g[1];else var h=!1,i=f[0],j=f[1];switch(i){case"even":e=1==a%2?a-1:a;break;case"odd":e=0==a%2?a-1:a;break;default:e=a}j=parseInt(j,10),is_number(j)&&(h&&(j=-j),e+=j)}return(!is_number(e)||1>e)&&(e=1),e}function cf_getItemsAdjust(a,b,c,d){return cf_getItemAdjustMinMax(cf_getAdjust(a,b,c,d),b.items.visibleConf)}function cf_getItemAdjustMinMax(a,b){return is_number(b.min)&&b.min>a&&(a=b.min),is_number(b.max)&&a>b.max&&(a=b.max),1>a&&(a=1),a}function cf_getSynchArr(a){is_array(a)||(a=[[a]]),is_array(a[0])||(a=[a]);for(var b=0,c=a.length;c>b;b++)is_string(a[b][0])&&(a[b][0]=$(a[b][0])),is_boolean(a[b][1])||(a[b][1]=!0),is_boolean(a[b][2])||(a[b][2]=!0),is_number(a[b][3])||(a[b][3]=0);return a}function cf_getKeyCode(a){return"right"==a?39:"left"==a?37:"up"==a?38:"down"==a?40:-1}function cf_setCookie(a,b,c){if(a){var d=b.triggerHandler(cf_e("currentPosition",c));$.fn.carouFredSel.cookie.set(a,d)}}function cf_getCookie(a){var b=$.fn.carouFredSel.cookie.get(a);return""==b?0:b}function in_mapCss(a,b){for(var c={},d=0,e=b.length;e>d;d++)c[b[d]]=a.css(b[d]);return c}function in_complementItems(a,b,c,d){return is_object(a.visibleConf)||(a.visibleConf={}),is_object(a.sizesConf)||(a.sizesConf={}),0==a.start&&is_number(d)&&(a.start=d),is_object(a.visible)?(a.visibleConf.min=a.visible.min,a.visibleConf.max=a.visible.max,a.visible=!1):is_string(a.visible)?("variable"==a.visible?a.visibleConf.variable=!0:a.visibleConf.adjust=a.visible,a.visible=!1):is_function(a.visible)&&(a.visibleConf.adjust=a.visible,a.visible=!1),is_string(a.filter)||(a.filter=c.filter(":hidden").length>0?":visible":"*"),a[b.d.width]||(b.responsive?(debug(!0,"Set a "+b.d.width+" for the items!"),a[b.d.width]=ms_getTrueLargestSize(c,b,"outerWidth")):a[b.d.width]=ms_hasVariableSizes(c,b,"outerWidth")?"variable":c[b.d.outerWidth](!0)),a[b.d.height]||(a[b.d.height]=ms_hasVariableSizes(c,b,"outerHeight")?"variable":c[b.d.outerHeight](!0)),a.sizesConf.width=a.width,a.sizesConf.height=a.height,a}function in_complementVisibleItems(a,b){return"variable"==a.items[a.d.width]&&(a.items.visibleConf.variable=!0),a.items.visibleConf.variable||(is_number(a[a.d.width])?a.items.visible=Math.floor(a[a.d.width]/a.items[a.d.width]):(a.items.visible=Math.floor(b/a.items[a.d.width]),a[a.d.width]=a.items.visible*a.items[a.d.width],a.items.visibleConf.adjust||(a.align=!1)),("Infinity"==a.items.visible||1>a.items.visible)&&(debug(!0,'Not a valid number of visible items: Set to "variable".'),a.items.visibleConf.variable=!0)),a}function in_complementPrimarySize(a,b,c){return"auto"==a&&(a=ms_getTrueLargestSize(c,b,"outerWidth")),a}function in_complementSecondarySize(a,b,c){return"auto"==a&&(a=ms_getTrueLargestSize(c,b,"outerHeight")),a||(a=b.items[b.d.height]),a}function in_getAlignPadding(a,b){var c=cf_getAlignPadding(gi_getCurrentItems(b,a),a);return a.padding[a.d[1]]=c[1],a.padding[a.d[3]]=c[0],a}function in_getResponsiveValues(a,b){var d=cf_getItemAdjustMinMax(Math.ceil(a[a.d.width]/a.items[a.d.width]),a.items.visibleConf);d>b.length&&(d=b.length);var e=Math.floor(a[a.d.width]/d);return a.items.visible=d,a.items[a.d.width]=e,a[a.d.width]=d*e,a}function bt_pauseOnHoverConfig(a){if(is_string(a))var b=a.indexOf("immediate")>-1?!0:!1,c=a.indexOf("resume")>-1?!0:!1;else var b=c=!1;return[b,c]}function bt_mousesheelNumber(a){return is_number(a)?a:null}function is_null(a){return null===a}function is_undefined(a){return is_null(a)||a===void 0||""===a||"undefined"===a}function is_array(a){return a instanceof Array}function is_jquery(a){return a instanceof jQuery}function is_object(a){return(a instanceof Object||"object"==typeof a)&&!is_null(a)&&!is_jquery(a)&&!is_array(a)&&!is_function(a)}function is_number(a){return(a instanceof Number||"number"==typeof a)&&!isNaN(a)}function is_string(a){return(a instanceof String||"string"==typeof a)&&!is_undefined(a)&&!is_true(a)&&!is_false(a)}function is_function(a){return a instanceof Function||"function"==typeof a}function is_boolean(a){return a instanceof Boolean||"boolean"==typeof a||is_true(a)||is_false(a)}function is_true(a){return a===!0||"true"===a}function is_false(a){return a===!1||"false"===a}function is_percentage(a){return is_string(a)&&"%"==a.slice(-1)}function getTime(){return(new Date).getTime()}function deprecated(a,b){debug(!0,a+" is DEPRECATED, support for it will be removed. Use "+b+" instead.")}function debug(a,b){if(!is_undefined(window.console)&&!is_undefined(window.console.log)){if(is_object(a)){var c=" ("+a.selector+")";a=a.debug}else var c="";if(!a)return!1;b=is_string(b)?"carouFredSel"+c+": "+b:["carouFredSel"+c+":",b],window.console.log(b)}return!1}$.fn.carouFredSel||($.fn.caroufredsel=$.fn.carouFredSel=function(options,configs){if(0==this.length)return debug(!0,'No element found for "'+this.selector+'".'),this;if(this.length>1)return this.each(function(){$(this).carouFredSel(options,configs)});var $cfs=this,$tt0=this[0],starting_position=!1;$cfs.data("_cfs_isCarousel")&&(starting_position=$cfs.triggerHandler("_cfs_triggerEvent","currentPosition"),$cfs.trigger("_cfs_triggerEvent",["destroy",!0]));var FN={};FN._init=function(a,b,c){a=go_getObject($tt0,a),a.items=go_getItemsObject($tt0,a.items),a.scroll=go_getScrollObject($tt0,a.scroll),a.auto=go_getAutoObject($tt0,a.auto),a.prev=go_getPrevNextObject($tt0,a.prev),a.next=go_getPrevNextObject($tt0,a.next),a.pagination=go_getPaginationObject($tt0,a.pagination),a.swipe=go_getSwipeObject($tt0,a.swipe),a.mousewheel=go_getMousewheelObject($tt0,a.mousewheel),b&&(opts_orig=$.extend(!0,{},$.fn.carouFredSel.defaults,a)),opts=$.extend(!0,{},$.fn.carouFredSel.defaults,a),opts.d=cf_getDimensions(opts),crsl.direction="up"==opts.direction||"left"==opts.direction?"next":"prev";var d=$cfs.children(),e=ms_getParentSize($wrp,opts,"width");if(is_true(opts.cookie)&&(opts.cookie="caroufredsel_cookie_"+conf.serialNumber),opts.maxDimension=ms_getMaxDimension(opts,e),opts.items=in_complementItems(opts.items,opts,d,c),opts[opts.d.width]=in_complementPrimarySize(opts[opts.d.width],opts,d),opts[opts.d.height]=in_complementSecondarySize(opts[opts.d.height],opts,d),opts.responsive&&(is_percentage(opts[opts.d.width])||(opts[opts.d.width]="100%")),is_percentage(opts[opts.d.width])&&(crsl.upDateOnWindowResize=!0,crsl.primarySizePercentage=opts[opts.d.width],opts[opts.d.width]=ms_getPercentage(e,crsl.primarySizePercentage),opts.items.visible||(opts.items.visibleConf.variable=!0)),opts.responsive?(opts.usePadding=!1,opts.padding=[0,0,0,0],opts.align=!1,opts.items.visibleConf.variable=!1):(opts.items.visible||(opts=in_complementVisibleItems(opts,e)),opts[opts.d.width]||(!opts.items.visibleConf.variable&&is_number(opts.items[opts.d.width])&&"*"==opts.items.filter?(opts[opts.d.width]=opts.items.visible*opts.items[opts.d.width],opts.align=!1):opts[opts.d.width]="variable"),is_undefined(opts.align)&&(opts.align=is_number(opts[opts.d.width])?"center":!1),opts.items.visibleConf.variable&&(opts.items.visible=gn_getVisibleItemsNext(d,opts,0))),"*"==opts.items.filter||opts.items.visibleConf.variable||(opts.items.visibleConf.org=opts.items.visible,opts.items.visible=gn_getVisibleItemsNextFilter(d,opts,0)),opts.items.visible=cf_getItemsAdjust(opts.items.visible,opts,opts.items.visibleConf.adjust,$tt0),opts.items.visibleConf.old=opts.items.visible,opts.responsive)opts.items.visibleConf.min||(opts.items.visibleConf.min=opts.items.visible),opts.items.visibleConf.max||(opts.items.visibleConf.max=opts.items.visible),opts=in_getResponsiveValues(opts,d,e);else switch(opts.padding=cf_getPadding(opts.padding),"top"==opts.align?opts.align="left":"bottom"==opts.align&&(opts.align="right"),opts.align){case"center":case"left":case"right":"variable"!=opts[opts.d.width]&&(opts=in_getAlignPadding(opts,d),opts.usePadding=!0);break;default:opts.align=!1,opts.usePadding=0==opts.padding[0]&&0==opts.padding[1]&&0==opts.padding[2]&&0==opts.padding[3]?!1:!0}is_number(opts.scroll.duration)||(opts.scroll.duration=500),is_undefined(opts.scroll.items)&&(opts.scroll.items=opts.responsive||opts.items.visibleConf.variable||"*"!=opts.items.filter?"visible":opts.items.visible),opts.auto=$.extend(!0,{},opts.scroll,opts.auto),opts.prev=$.extend(!0,{},opts.scroll,opts.prev),opts.next=$.extend(!0,{},opts.scroll,opts.next),opts.pagination=$.extend(!0,{},opts.scroll,opts.pagination),opts.auto=go_complementAutoObject($tt0,opts.auto),opts.prev=go_complementPrevNextObject($tt0,opts.prev),opts.next=go_complementPrevNextObject($tt0,opts.next),opts.pagination=go_complementPaginationObject($tt0,opts.pagination),opts.swipe=go_complementSwipeObject($tt0,opts.swipe),opts.mousewheel=go_complementMousewheelObject($tt0,opts.mousewheel),opts.synchronise&&(opts.synchronise=cf_getSynchArr(opts.synchronise)),opts.auto.onPauseStart&&(opts.auto.onTimeoutStart=opts.auto.onPauseStart,deprecated("auto.onPauseStart","auto.onTimeoutStart")),opts.auto.onPausePause&&(opts.auto.onTimeoutPause=opts.auto.onPausePause,deprecated("auto.onPausePause","auto.onTimeoutPause")),opts.auto.onPauseEnd&&(opts.auto.onTimeoutEnd=opts.auto.onPauseEnd,deprecated("auto.onPauseEnd","auto.onTimeoutEnd")),opts.auto.pauseDuration&&(opts.auto.timeoutDuration=opts.auto.pauseDuration,deprecated("auto.pauseDuration","auto.timeoutDuration"))},FN._build=function(){$cfs.data("_cfs_isCarousel",!0);var a=$cfs.children(),b=in_mapCss($cfs,["textAlign","float","position","top","right","bottom","left","zIndex","width","height","marginTop","marginRight","marginBottom","marginLeft"]),c="relative";switch(b.position){case"absolute":case"fixed":c=b.position}"parent"==conf.wrapper?sz_storeOrigCss($wrp):$wrp.css(b),$wrp.css({overflow:"hidden",position:c}),sz_storeOrigCss($cfs),$cfs.data("_cfs_origCssZindex",b.zIndex),$cfs.css({textAlign:"left","float":"none",position:"absolute",top:0,right:"auto",bottom:"auto",left:0,marginTop:0,marginRight:0,marginBottom:0,marginLeft:0}),sz_storeMargin(a,opts),sz_storeOrigCss(a),opts.responsive&&sz_setResponsiveSizes(opts,a)},FN._bind_events=function(){FN._unbind_events(),$cfs.bind(cf_e("stop",conf),function(a,b){return a.stopPropagation(),crsl.isStopped||opts.auto.button&&opts.auto.button.addClass(cf_c("stopped",conf)),crsl.isStopped=!0,opts.auto.play&&(opts.auto.play=!1,$cfs.trigger(cf_e("pause",conf),b)),!0}),$cfs.bind(cf_e("finish",conf),function(a){return a.stopPropagation(),crsl.isScrolling&&sc_stopScroll(scrl),!0}),$cfs.bind(cf_e("pause",conf),function(a,b,c){if(a.stopPropagation(),tmrs=sc_clearTimers(tmrs),b&&crsl.isScrolling){scrl.isStopped=!0;var d=getTime()-scrl.startTime;scrl.duration-=d,scrl.pre&&(scrl.pre.duration-=d),scrl.post&&(scrl.post.duration-=d),sc_stopScroll(scrl,!1)}if(crsl.isPaused||crsl.isScrolling||c&&(tmrs.timePassed+=getTime()-tmrs.startTime),crsl.isPaused||opts.auto.button&&opts.auto.button.addClass(cf_c("paused",conf)),crsl.isPaused=!0,opts.auto.onTimeoutPause){var e=opts.auto.timeoutDuration-tmrs.timePassed,f=100-Math.ceil(100*e/opts.auto.timeoutDuration);opts.auto.onTimeoutPause.call($tt0,f,e)}return!0}),$cfs.bind(cf_e("play",conf),function(a,b,c,d){a.stopPropagation(),tmrs=sc_clearTimers(tmrs);var e=[b,c,d],f=["string","number","boolean"],g=cf_sortParams(e,f);if(b=g[0],c=g[1],d=g[2],"prev"!=b&&"next"!=b&&(b=crsl.direction),is_number(c)||(c=0),is_boolean(d)||(d=!1),d&&(crsl.isStopped=!1,opts.auto.play=!0),!opts.auto.play)return a.stopImmediatePropagation(),debug(conf,"Carousel stopped: Not scrolling.");crsl.isPaused&&opts.auto.button&&(opts.auto.button.removeClass(cf_c("stopped",conf)),opts.auto.button.removeClass(cf_c("paused",conf))),crsl.isPaused=!1,tmrs.startTime=getTime();var h=opts.auto.timeoutDuration+c;return dur2=h-tmrs.timePassed,perc=100-Math.ceil(100*dur2/h),opts.auto.progress&&(tmrs.progress=setInterval(function(){var a=getTime()-tmrs.startTime+tmrs.timePassed,b=Math.ceil(100*a/h);opts.auto.progress.updater.call(opts.auto.progress.bar[0],b)},opts.auto.progress.interval)),tmrs.auto=setTimeout(function(){opts.auto.progress&&opts.auto.progress.updater.call(opts.auto.progress.bar[0],100),opts.auto.onTimeoutEnd&&opts.auto.onTimeoutEnd.call($tt0,perc,dur2),crsl.isScrolling?$cfs.trigger(cf_e("play",conf),b):$cfs.trigger(cf_e(b,conf),opts.auto)},dur2),opts.auto.onTimeoutStart&&opts.auto.onTimeoutStart.call($tt0,perc,dur2),!0}),$cfs.bind(cf_e("resume",conf),function(a){return a.stopPropagation(),scrl.isStopped?(scrl.isStopped=!1,crsl.isPaused=!1,crsl.isScrolling=!0,scrl.startTime=getTime(),sc_startScroll(scrl,conf)):$cfs.trigger(cf_e("play",conf)),!0}),$cfs.bind(cf_e("prev",conf)+" "+cf_e("next",conf),function(a,b,c,d,e){if(a.stopPropagation(),crsl.isStopped||$cfs.is(":hidden"))return a.stopImmediatePropagation(),debug(conf,"Carousel stopped or hidden: Not scrolling.");var f=is_number(opts.items.minimum)?opts.items.minimum:opts.items.visible+1;if(f>itms.total)return a.stopImmediatePropagation(),debug(conf,"Not enough items ("+itms.total+" total, "+f+" needed): Not scrolling.");var g=[b,c,d,e],h=["object","number/string","function","boolean"],i=cf_sortParams(g,h);b=i[0],c=i[1],d=i[2],e=i[3];var j=a.type.slice(conf.events.prefix.length);if(is_object(b)||(b={}),is_function(d)&&(b.onAfter=d),is_boolean(e)&&(b.queue=e),b=$.extend(!0,{},opts[j],b),b.conditions&&!b.conditions.call($tt0,j))return a.stopImmediatePropagation(),debug(conf,'Callback "conditions" returned false.');if(!is_number(c)){if("*"!=opts.items.filter)c="visible";else for(var k=[c,b.items,opts[j].items],i=0,l=k.length;l>i;i++)if(is_number(k[i])||"page"==k[i]||"visible"==k[i]){c=k[i];break}switch(c){case"page":return a.stopImmediatePropagation(),$cfs.triggerHandler(cf_e(j+"Page",conf),[b,d]);case"visible":opts.items.visibleConf.variable||"*"!=opts.items.filter||(c=opts.items.visible)}}if(scrl.isStopped)return $cfs.trigger(cf_e("resume",conf)),$cfs.trigger(cf_e("queue",conf),[j,[b,c,d]]),a.stopImmediatePropagation(),debug(conf,"Carousel resumed scrolling.");if(b.duration>0&&crsl.isScrolling)return b.queue&&("last"==b.queue&&(queu=[]),("first"!=b.queue||0==queu.length)&&$cfs.trigger(cf_e("queue",conf),[j,[b,c,d]])),a.stopImmediatePropagation(),debug(conf,"Carousel currently scrolling.");if(tmrs.timePassed=0,$cfs.trigger(cf_e("slide_"+j,conf),[b,c]),opts.synchronise)for(var m=opts.synchronise,n=[b,c],o=0,l=m.length;l>o;o++){var p=j;m[o][2]||(p="prev"==p?"next":"prev"),m[o][1]||(n[0]=m[o][0].triggerHandler("_cfs_triggerEvent",["configuration",p])),n[1]=c+m[o][3],m[o][0].trigger("_cfs_triggerEvent",["slide_"+p,n])}return!0}),$cfs.bind(cf_e("slide_prev",conf),function(a,b,c){a.stopPropagation();var d=$cfs.children();if(!opts.circular&&0==itms.first)return opts.infinite&&$cfs.trigger(cf_e("next",conf),itms.total-1),a.stopImmediatePropagation();if(sz_resetMargin(d,opts),!is_number(c)){if(opts.items.visibleConf.variable)c=gn_getVisibleItemsPrev(d,opts,itms.total-1);else if("*"!=opts.items.filter){var e=is_number(b.items)?b.items:gn_getVisibleOrg($cfs,opts);c=gn_getScrollItemsPrevFilter(d,opts,itms.total-1,e)}else c=opts.items.visible;c=cf_getAdjust(c,opts,b.items,$tt0)}if(opts.circular||itms.total-c<itms.first&&(c=itms.total-itms.first),opts.items.visibleConf.old=opts.items.visible,opts.items.visibleConf.variable){var f=cf_getItemsAdjust(gn_getVisibleItemsNext(d,opts,itms.total-c),opts,opts.items.visibleConf.adjust,$tt0);f>=opts.items.visible+c&&itms.total>c&&(c++,f=cf_getItemsAdjust(gn_getVisibleItemsNext(d,opts,itms.total-c),opts,opts.items.visibleConf.adjust,$tt0)),opts.items.visible=f}else if("*"!=opts.items.filter){var f=gn_getVisibleItemsNextFilter(d,opts,itms.total-c);opts.items.visible=cf_getItemsAdjust(f,opts,opts.items.visibleConf.adjust,$tt0)}if(sz_resetMargin(d,opts,!0),0==c)return a.stopImmediatePropagation(),debug(conf,"0 items to scroll: Not scrolling.");for(debug(conf,"Scrolling "+c+" items backward."),itms.first+=c;itms.first>=itms.total;)itms.first-=itms.total;opts.circular||(0==itms.first&&b.onEnd&&b.onEnd.call($tt0,"prev"),opts.infinite||nv_enableNavi(opts,itms.first,conf)),$cfs.children().slice(itms.total-c,itms.total).prependTo($cfs),itms.total<opts.items.visible+c&&$cfs.children().slice(0,opts.items.visible+c-itms.total).clone(!0).appendTo($cfs);var d=$cfs.children(),g=gi_getOldItemsPrev(d,opts,c),h=gi_getNewItemsPrev(d,opts),i=d.eq(c-1),j=g.last(),k=h.last();sz_resetMargin(d,opts);var l=0,m=0;if(opts.align){var n=cf_getAlignPadding(h,opts);l=n[0],m=n[1]}var o=0>l?opts.padding[opts.d[3]]:0,p=!1,q=$();if(c>opts.items.visible&&(q=d.slice(opts.items.visibleConf.old,c),"directscroll"==b.fx)){var r=opts.items[opts.d.width];p=q,i=k,sc_hideHiddenItems(p),opts.items[opts.d.width]="variable"}var s=!1,t=ms_getTotalSize(d.slice(0,c),opts,"width"),u=cf_mapWrapperSizes(ms_getSizes(h,opts,!0),opts,!opts.usePadding),v=0,w={},x={},y={},z={},A={},B={},C={},D=sc_getDuration(b,opts,c,t);switch(b.fx){case"cover":case"cover-fade":v=ms_getTotalSize(d.slice(0,opts.items.visible),opts,"width")}p&&(opts.items[opts.d.width]=r),sz_resetMargin(d,opts,!0),m>=0&&sz_resetMargin(j,opts,opts.padding[opts.d[1]]),l>=0&&sz_resetMargin(i,opts,opts.padding[opts.d[3]]),opts.align&&(opts.padding[opts.d[1]]=m,opts.padding[opts.d[3]]=l),B[opts.d.left]=-(t-o),C[opts.d.left]=-(v-o),x[opts.d.left]=u[opts.d.width];var E=function(){},F=function(){},G=function(){},H=function(){},I=function(){},J=function(){},K=function(){},L=function(){},M=function(){},N=function(){},O=function(){};switch(b.fx){case"crossfade":case"cover":case"cover-fade":case"uncover":case"uncover-fade":s=$cfs.clone(!0).appendTo($wrp)}switch(b.fx){case"crossfade":case"uncover":case"uncover-fade":s.children().slice(0,c).remove(),s.children().slice(opts.items.visibleConf.old).remove();break;case"cover":case"cover-fade":s.children().slice(opts.items.visible).remove(),s.css(C)}if($cfs.css(B),scrl=sc_setScroll(D,b.easing,conf),w[opts.d.left]=opts.usePadding?opts.padding[opts.d[3]]:0,("variable"==opts[opts.d.width]||"variable"==opts[opts.d.height])&&(E=function(){$wrp.css(u)},F=function(){scrl.anims.push([$wrp,u])}),opts.usePadding){switch(k.not(i).length&&(y[opts.d.marginRight]=i.data("_cfs_origCssMargin"),0>l?i.css(y):(K=function(){i.css(y)},L=function(){scrl.anims.push([i,y])})),b.fx){case"cover":case"cover-fade":s.children().eq(c-1).css(y)}k.not(j).length&&(z[opts.d.marginRight]=j.data("_cfs_origCssMargin"),G=function(){j.css(z)},H=function(){scrl.anims.push([j,z])}),m>=0&&(A[opts.d.marginRight]=k.data("_cfs_origCssMargin")+opts.padding[opts.d[1]],I=function(){k.css(A)},J=function(){scrl.anims.push([k,A])})}O=function(){$cfs.css(w)};var P=opts.items.visible+c-itms.total;N=function(){if(P>0&&($cfs.children().slice(itms.total).remove(),g=$($cfs.children().slice(itms.total-(opts.items.visible-P)).get().concat($cfs.children().slice(0,P).get()))),sc_showHiddenItems(p),opts.usePadding){var a=$cfs.children().eq(opts.items.visible+c-1);a.css(opts.d.marginRight,a.data("_cfs_origCssMargin"))}};var Q=sc_mapCallbackArguments(g,q,h,c,"prev",D,u);switch(M=function(){sc_afterScroll($cfs,s,b),crsl.isScrolling=!1,clbk.onAfter=sc_fireCallbacks($tt0,b,"onAfter",Q,clbk),queu=sc_fireQueue($cfs,queu,conf),crsl.isPaused||$cfs.trigger(cf_e("play",conf))},crsl.isScrolling=!0,tmrs=sc_clearTimers(tmrs),clbk.onBefore=sc_fireCallbacks($tt0,b,"onBefore",Q,clbk),b.fx){case"none":$cfs.css(w),E(),G(),I(),K(),O(),N(),M();break;case"fade":scrl.anims.push([$cfs,{opacity:0},function(){E(),G(),I(),K(),O(),N(),scrl=sc_setScroll(D,b.easing,conf),scrl.anims.push([$cfs,{opacity:1},M]),sc_startScroll(scrl,conf)}]);break;case"crossfade":$cfs.css({opacity:0}),scrl.anims.push([s,{opacity:0}]),scrl.anims.push([$cfs,{opacity:1},M]),F(),G(),I(),K(),O(),N();break;case"cover":scrl.anims.push([s,w,function(){G(),I(),K(),O(),N(),M()}]),F();break;case"cover-fade":scrl.anims.push([$cfs,{opacity:0}]),scrl.anims.push([s,w,function(){G(),I(),K(),O(),N(),M()}]),F();break;case"uncover":scrl.anims.push([s,x,M]),F(),G(),I(),K(),O(),N();break;case"uncover-fade":$cfs.css({opacity:0}),scrl.anims.push([$cfs,{opacity:1}]),scrl.anims.push([s,x,M]),F(),G(),I(),K(),O(),N();break;default:scrl.anims.push([$cfs,w,function(){N(),M()}]),F(),H(),J(),L()}return sc_startScroll(scrl,conf),cf_setCookie(opts.cookie,$cfs,conf),$cfs.trigger(cf_e("updatePageStatus",conf),[!1,u]),!0
2182}),$cfs.bind(cf_e("slide_next",conf),function(a,b,c){a.stopPropagation();var d=$cfs.children();if(!opts.circular&&itms.first==opts.items.visible)return opts.infinite&&$cfs.trigger(cf_e("prev",conf),itms.total-1),a.stopImmediatePropagation();if(sz_resetMargin(d,opts),!is_number(c)){if("*"!=opts.items.filter){var e=is_number(b.items)?b.items:gn_getVisibleOrg($cfs,opts);c=gn_getScrollItemsNextFilter(d,opts,0,e)}else c=opts.items.visible;c=cf_getAdjust(c,opts,b.items,$tt0)}var f=0==itms.first?itms.total:itms.first;if(!opts.circular){if(opts.items.visibleConf.variable)var g=gn_getVisibleItemsNext(d,opts,c),e=gn_getVisibleItemsPrev(d,opts,f-1);else var g=opts.items.visible,e=opts.items.visible;c+g>f&&(c=f-e)}if(opts.items.visibleConf.old=opts.items.visible,opts.items.visibleConf.variable){for(var g=cf_getItemsAdjust(gn_getVisibleItemsNextTestCircular(d,opts,c,f),opts,opts.items.visibleConf.adjust,$tt0);opts.items.visible-c>=g&&itms.total>c;)c++,g=cf_getItemsAdjust(gn_getVisibleItemsNextTestCircular(d,opts,c,f),opts,opts.items.visibleConf.adjust,$tt0);opts.items.visible=g}else if("*"!=opts.items.filter){var g=gn_getVisibleItemsNextFilter(d,opts,c);opts.items.visible=cf_getItemsAdjust(g,opts,opts.items.visibleConf.adjust,$tt0)}if(sz_resetMargin(d,opts,!0),0==c)return a.stopImmediatePropagation(),debug(conf,"0 items to scroll: Not scrolling.");for(debug(conf,"Scrolling "+c+" items forward."),itms.first-=c;0>itms.first;)itms.first+=itms.total;opts.circular||(itms.first==opts.items.visible&&b.onEnd&&b.onEnd.call($tt0,"next"),opts.infinite||nv_enableNavi(opts,itms.first,conf)),itms.total<opts.items.visible+c&&$cfs.children().slice(0,opts.items.visible+c-itms.total).clone(!0).appendTo($cfs);var d=$cfs.children(),h=gi_getOldItemsNext(d,opts),i=gi_getNewItemsNext(d,opts,c),j=d.eq(c-1),k=h.last(),l=i.last();sz_resetMargin(d,opts);var m=0,n=0;if(opts.align){var o=cf_getAlignPadding(i,opts);m=o[0],n=o[1]}var p=!1,q=$();if(c>opts.items.visibleConf.old&&(q=d.slice(opts.items.visibleConf.old,c),"directscroll"==b.fx)){var r=opts.items[opts.d.width];p=q,j=k,sc_hideHiddenItems(p),opts.items[opts.d.width]="variable"}var s=!1,t=ms_getTotalSize(d.slice(0,c),opts,"width"),u=cf_mapWrapperSizes(ms_getSizes(i,opts,!0),opts,!opts.usePadding),v=0,w={},x={},y={},z={},A={},B=sc_getDuration(b,opts,c,t);switch(b.fx){case"uncover":case"uncover-fade":v=ms_getTotalSize(d.slice(0,opts.items.visibleConf.old),opts,"width")}p&&(opts.items[opts.d.width]=r),opts.align&&0>opts.padding[opts.d[1]]&&(opts.padding[opts.d[1]]=0),sz_resetMargin(d,opts,!0),sz_resetMargin(k,opts,opts.padding[opts.d[1]]),opts.align&&(opts.padding[opts.d[1]]=n,opts.padding[opts.d[3]]=m),A[opts.d.left]=opts.usePadding?opts.padding[opts.d[3]]:0;var C=function(){},D=function(){},E=function(){},F=function(){},G=function(){},H=function(){},I=function(){},J=function(){},K=function(){};switch(b.fx){case"crossfade":case"cover":case"cover-fade":case"uncover":case"uncover-fade":s=$cfs.clone(!0).appendTo($wrp),s.children().slice(opts.items.visibleConf.old).remove()}switch(b.fx){case"crossfade":case"cover":case"cover-fade":$cfs.css("zIndex",1),s.css("zIndex",0)}if(scrl=sc_setScroll(B,b.easing,conf),w[opts.d.left]=-t,x[opts.d.left]=-v,0>m&&(w[opts.d.left]+=m),("variable"==opts[opts.d.width]||"variable"==opts[opts.d.height])&&(C=function(){$wrp.css(u)},D=function(){scrl.anims.push([$wrp,u])}),opts.usePadding){var L=l.data("_cfs_origCssMargin");n>=0&&(L+=opts.padding[opts.d[1]]),l.css(opts.d.marginRight,L),j.not(k).length&&(z[opts.d.marginRight]=k.data("_cfs_origCssMargin")),E=function(){k.css(z)},F=function(){scrl.anims.push([k,z])};var M=j.data("_cfs_origCssMargin");m>0&&(M+=opts.padding[opts.d[3]]),y[opts.d.marginRight]=M,G=function(){j.css(y)},H=function(){scrl.anims.push([j,y])}}K=function(){$cfs.css(A)};var N=opts.items.visible+c-itms.total;J=function(){N>0&&$cfs.children().slice(itms.total).remove();var a=$cfs.children().slice(0,c).appendTo($cfs).last();if(N>0&&(i=gi_getCurrentItems(d,opts)),sc_showHiddenItems(p),opts.usePadding){if(itms.total<opts.items.visible+c){var b=$cfs.children().eq(opts.items.visible-1);b.css(opts.d.marginRight,b.data("_cfs_origCssMargin")+opts.padding[opts.d[1]])}a.css(opts.d.marginRight,a.data("_cfs_origCssMargin"))}};var O=sc_mapCallbackArguments(h,q,i,c,"next",B,u);switch(I=function(){$cfs.css("zIndex",$cfs.data("_cfs_origCssZindex")),sc_afterScroll($cfs,s,b),crsl.isScrolling=!1,clbk.onAfter=sc_fireCallbacks($tt0,b,"onAfter",O,clbk),queu=sc_fireQueue($cfs,queu,conf),crsl.isPaused||$cfs.trigger(cf_e("play",conf))},crsl.isScrolling=!0,tmrs=sc_clearTimers(tmrs),clbk.onBefore=sc_fireCallbacks($tt0,b,"onBefore",O,clbk),b.fx){case"none":$cfs.css(w),C(),E(),G(),K(),J(),I();break;case"fade":scrl.anims.push([$cfs,{opacity:0},function(){C(),E(),G(),K(),J(),scrl=sc_setScroll(B,b.easing,conf),scrl.anims.push([$cfs,{opacity:1},I]),sc_startScroll(scrl,conf)}]);break;case"crossfade":$cfs.css({opacity:0}),scrl.anims.push([s,{opacity:0}]),scrl.anims.push([$cfs,{opacity:1},I]),D(),E(),G(),K(),J();break;case"cover":$cfs.css(opts.d.left,$wrp[opts.d.width]()),scrl.anims.push([$cfs,A,I]),D(),E(),G(),J();break;case"cover-fade":$cfs.css(opts.d.left,$wrp[opts.d.width]()),scrl.anims.push([s,{opacity:0}]),scrl.anims.push([$cfs,A,I]),D(),E(),G(),J();break;case"uncover":scrl.anims.push([s,x,I]),D(),E(),G(),K(),J();break;case"uncover-fade":$cfs.css({opacity:0}),scrl.anims.push([$cfs,{opacity:1}]),scrl.anims.push([s,x,I]),D(),E(),G(),K(),J();break;default:scrl.anims.push([$cfs,w,function(){K(),J(),I()}]),D(),F(),H()}return sc_startScroll(scrl,conf),cf_setCookie(opts.cookie,$cfs,conf),$cfs.trigger(cf_e("updatePageStatus",conf),[!1,u]),!0}),$cfs.bind(cf_e("slideTo",conf),function(a,b,c,d,e,f,g){a.stopPropagation();var h=[b,c,d,e,f,g],i=["string/number/object","number","boolean","object","string","function"],j=cf_sortParams(h,i);return e=j[3],f=j[4],g=j[5],b=gn_getItemIndex(j[0],j[1],j[2],itms,$cfs),0==b?!1:(is_object(e)||(e=!1),"prev"!=f&&"next"!=f&&(f=opts.circular?itms.total/2>=b?"next":"prev":0==itms.first||itms.first>b?"next":"prev"),"prev"==f&&(b=itms.total-b),$cfs.trigger(cf_e(f,conf),[e,b,g]),!0)}),$cfs.bind(cf_e("prevPage",conf),function(a,b,c){a.stopPropagation();var d=$cfs.triggerHandler(cf_e("currentPage",conf));return $cfs.triggerHandler(cf_e("slideToPage",conf),[d-1,b,"prev",c])}),$cfs.bind(cf_e("nextPage",conf),function(a,b,c){a.stopPropagation();var d=$cfs.triggerHandler(cf_e("currentPage",conf));return $cfs.triggerHandler(cf_e("slideToPage",conf),[d+1,b,"next",c])}),$cfs.bind(cf_e("slideToPage",conf),function(a,b,c,d,e){a.stopPropagation(),is_number(b)||(b=$cfs.triggerHandler(cf_e("currentPage",conf)));var f=opts.pagination.items||opts.items.visible,g=Math.ceil(itms.total/f)-1;return 0>b&&(b=g),b>g&&(b=0),$cfs.triggerHandler(cf_e("slideTo",conf),[b*f,0,!0,c,d,e])}),$cfs.bind(cf_e("jumpToStart",conf),function(a,b){if(a.stopPropagation(),b=b?gn_getItemIndex(b,0,!0,itms,$cfs):0,b+=itms.first,0!=b){if(itms.total>0)for(;b>itms.total;)b-=itms.total;$cfs.prepend($cfs.children().slice(b,itms.total))}return!0}),$cfs.bind(cf_e("synchronise",conf),function(a,b){if(a.stopPropagation(),b)b=cf_getSynchArr(b);else{if(!opts.synchronise)return debug(conf,"No carousel to synchronise.");b=opts.synchronise}for(var c=$cfs.triggerHandler(cf_e("currentPosition",conf)),d=!0,e=0,f=b.length;f>e;e++)b[e][0].triggerHandler(cf_e("slideTo",conf),[c,b[e][3],!0])||(d=!1);return d}),$cfs.bind(cf_e("queue",conf),function(a,b,c){return a.stopPropagation(),is_function(b)?b.call($tt0,queu):is_array(b)?queu=b:is_undefined(b)||queu.push([b,c]),queu}),$cfs.bind(cf_e("insertItem",conf),function(a,b,c,d,e){a.stopPropagation();var f=[b,c,d,e],g=["string/object","string/number/object","boolean","number"],h=cf_sortParams(f,g);if(b=h[0],c=h[1],d=h[2],e=h[3],is_object(b)&&!is_jquery(b)?b=$(b):is_string(b)&&(b=$(b)),!is_jquery(b)||0==b.length)return debug(conf,"Not a valid object.");is_undefined(c)&&(c="end"),sz_storeMargin(b,opts),sz_storeOrigCss(b);var i=c,j="before";"end"==c?d?(0==itms.first?(c=itms.total-1,j="after"):(c=itms.first,itms.first+=b.length),0>c&&(c=0)):(c=itms.total-1,j="after"):c=gn_getItemIndex(c,e,d,itms,$cfs);var k=$cfs.children().eq(c);return k.length?k[j](b):(debug(conf,"Correct insert-position not found! Appending item to the end."),$cfs.append(b)),"end"==i||d||itms.first>c&&(itms.first+=b.length),itms.total=$cfs.children().length,itms.first>=itms.total&&(itms.first-=itms.total),$cfs.trigger(cf_e("updateSizes",conf)),$cfs.trigger(cf_e("linkAnchors",conf)),!0}),$cfs.bind(cf_e("removeItem",conf),function(a,b,c,d){a.stopPropagation();var e=[b,c,d],f=["string/number/object","boolean","number"],g=cf_sortParams(e,f);if(b=g[0],c=g[1],d=g[2],b instanceof $&&b.length>1)return i=$(),b.each(function(){var e=$cfs.trigger(cf_e("removeItem",conf),[$(this),c,d]);e&&(i=i.add(e))}),i;if(is_undefined(b)||"end"==b)i=$cfs.children().last();else{b=gn_getItemIndex(b,d,c,itms,$cfs);var i=$cfs.children().eq(b);i.length&&itms.first>b&&(itms.first-=i.length)}return i&&i.length&&(i.detach(),itms.total=$cfs.children().length,$cfs.trigger(cf_e("updateSizes",conf))),i}),$cfs.bind(cf_e("onBefore",conf)+" "+cf_e("onAfter",conf),function(a,b){a.stopPropagation();var c=a.type.slice(conf.events.prefix.length);return is_array(b)&&(clbk[c]=b),is_function(b)&&clbk[c].push(b),clbk[c]}),$cfs.bind(cf_e("currentPosition",conf),function(a,b){if(a.stopPropagation(),0==itms.first)var c=0;else var c=itms.total-itms.first;return is_function(b)&&b.call($tt0,c),c}),$cfs.bind(cf_e("currentPage",conf),function(a,b){a.stopPropagation();var e,c=opts.pagination.items||opts.items.visible,d=Math.ceil(itms.total/c-1);return e=0==itms.first?0:itms.first<itms.total%c?0:itms.first!=c||opts.circular?Math.round((itms.total-itms.first)/c):d,0>e&&(e=0),e>d&&(e=d),is_function(b)&&b.call($tt0,e),e}),$cfs.bind(cf_e("currentVisible",conf),function(a,b){a.stopPropagation();var c=gi_getCurrentItems($cfs.children(),opts);return is_function(b)&&b.call($tt0,c),c}),$cfs.bind(cf_e("slice",conf),function(a,b,c,d){if(a.stopPropagation(),0==itms.total)return!1;var e=[b,c,d],f=["number","number","function"],g=cf_sortParams(e,f);if(b=is_number(g[0])?g[0]:0,c=is_number(g[1])?g[1]:itms.total,d=g[2],b+=itms.first,c+=itms.first,items.total>0){for(;b>itms.total;)b-=itms.total;for(;c>itms.total;)c-=itms.total;for(;0>b;)b+=itms.total;for(;0>c;)c+=itms.total}var i,h=$cfs.children();return i=c>b?h.slice(b,c):$(h.slice(b,itms.total).get().concat(h.slice(0,c).get())),is_function(d)&&d.call($tt0,i),i}),$cfs.bind(cf_e("isPaused",conf)+" "+cf_e("isStopped",conf)+" "+cf_e("isScrolling",conf),function(a,b){a.stopPropagation();var c=a.type.slice(conf.events.prefix.length),d=crsl[c];return is_function(b)&&b.call($tt0,d),d}),$cfs.bind(cf_e("configuration",conf),function(e,a,b,c){e.stopPropagation();var reInit=!1;if(is_function(a))a.call($tt0,opts);else if(is_object(a))opts_orig=$.extend(!0,{},opts_orig,a),b!==!1?reInit=!0:opts=$.extend(!0,{},opts,a);else if(!is_undefined(a))if(is_function(b)){var val=eval("opts."+a);is_undefined(val)&&(val=""),b.call($tt0,val)}else{if(is_undefined(b))return eval("opts."+a);"boolean"!=typeof c&&(c=!0),eval("opts_orig."+a+" = b"),c!==!1?reInit=!0:eval("opts."+a+" = b")}if(reInit){sz_resetMargin($cfs.children(),opts),FN._init(opts_orig),FN._bind_buttons();var sz=sz_setSizes($cfs,opts);$cfs.trigger(cf_e("updatePageStatus",conf),[!0,sz])}return opts}),$cfs.bind(cf_e("linkAnchors",conf),function(a,b,c){return a.stopPropagation(),is_undefined(b)?b=$("body"):is_string(b)&&(b=$(b)),is_jquery(b)&&0!=b.length?(is_string(c)||(c="a.caroufredsel"),b.find(c).each(function(){var a=this.hash||"";a.length>0&&-1!=$cfs.children().index($(a))&&$(this).unbind("click").click(function(b){b.preventDefault(),$cfs.trigger(cf_e("slideTo",conf),a)})}),!0):debug(conf,"Not a valid object.")}),$cfs.bind(cf_e("updatePageStatus",conf),function(a,b){if(a.stopPropagation(),opts.pagination.container){var d=opts.pagination.items||opts.items.visible,e=Math.ceil(itms.total/d);b&&(opts.pagination.anchorBuilder&&(opts.pagination.container.children().remove(),opts.pagination.container.each(function(){for(var a=0;e>a;a++){var b=$cfs.children().eq(gn_getItemIndex(a*d,0,!0,itms,$cfs));$(this).append(opts.pagination.anchorBuilder.call(b[0],a+1))}})),opts.pagination.container.each(function(){$(this).children().unbind(opts.pagination.event).each(function(a){$(this).bind(opts.pagination.event,function(b){b.preventDefault(),$cfs.trigger(cf_e("slideTo",conf),[a*d,-opts.pagination.deviation,!0,opts.pagination])})})}));var f=$cfs.triggerHandler(cf_e("currentPage",conf))+opts.pagination.deviation;return f>=e&&(f=0),0>f&&(f=e-1),opts.pagination.container.each(function(){$(this).children().removeClass(cf_c("selected",conf)).eq(f).addClass(cf_c("selected",conf))}),!0}}),$cfs.bind(cf_e("updateSizes",conf),function(){var b=opts.items.visible,c=$cfs.children(),d=ms_getParentSize($wrp,opts,"width");if(itms.total=c.length,crsl.primarySizePercentage?(opts.maxDimension=d,opts[opts.d.width]=ms_getPercentage(d,crsl.primarySizePercentage)):opts.maxDimension=ms_getMaxDimension(opts,d),opts.responsive?(opts.items.width=opts.items.sizesConf.width,opts.items.height=opts.items.sizesConf.height,opts=in_getResponsiveValues(opts,c,d),b=opts.items.visible,sz_setResponsiveSizes(opts,c)):opts.items.visibleConf.variable?b=gn_getVisibleItemsNext(c,opts,0):"*"!=opts.items.filter&&(b=gn_getVisibleItemsNextFilter(c,opts,0)),!opts.circular&&0!=itms.first&&b>itms.first){if(opts.items.visibleConf.variable)var e=gn_getVisibleItemsPrev(c,opts,itms.first)-itms.first;else if("*"!=opts.items.filter)var e=gn_getVisibleItemsPrevFilter(c,opts,itms.first)-itms.first;else var e=opts.items.visible-itms.first;debug(conf,"Preventing non-circular: sliding "+e+" items backward."),$cfs.trigger(cf_e("prev",conf),e)}opts.items.visible=cf_getItemsAdjust(b,opts,opts.items.visibleConf.adjust,$tt0),opts.items.visibleConf.old=opts.items.visible,opts=in_getAlignPadding(opts,c);var f=sz_setSizes($cfs,opts);return $cfs.trigger(cf_e("updatePageStatus",conf),[!0,f]),nv_showNavi(opts,itms.total,conf),nv_enableNavi(opts,itms.first,conf),f}),$cfs.bind(cf_e("destroy",conf),function(a,b){return a.stopPropagation(),tmrs=sc_clearTimers(tmrs),$cfs.data("_cfs_isCarousel",!1),$cfs.trigger(cf_e("finish",conf)),b&&$cfs.trigger(cf_e("jumpToStart",conf)),sz_restoreOrigCss($cfs.children()),sz_restoreOrigCss($cfs),FN._unbind_events(),FN._unbind_buttons(),"parent"==conf.wrapper?sz_restoreOrigCss($wrp):$wrp.replaceWith($cfs),!0}),$cfs.bind(cf_e("debug",conf),function(){return debug(conf,"Carousel width: "+opts.width),debug(conf,"Carousel height: "+opts.height),debug(conf,"Item widths: "+opts.items.width),debug(conf,"Item heights: "+opts.items.height),debug(conf,"Number of items visible: "+opts.items.visible),opts.auto.play&&debug(conf,"Number of items scrolled automatically: "+opts.auto.items),opts.prev.button&&debug(conf,"Number of items scrolled backward: "+opts.prev.items),opts.next.button&&debug(conf,"Number of items scrolled forward: "+opts.next.items),conf.debug}),$cfs.bind("_cfs_triggerEvent",function(a,b,c){return a.stopPropagation(),$cfs.triggerHandler(cf_e(b,conf),c)})},FN._unbind_events=function(){$cfs.unbind(cf_e("",conf)),$cfs.unbind(cf_e("",conf,!1)),$cfs.unbind("_cfs_triggerEvent")},FN._bind_buttons=function(){if(FN._unbind_buttons(),nv_showNavi(opts,itms.total,conf),nv_enableNavi(opts,itms.first,conf),opts.auto.pauseOnHover){var a=bt_pauseOnHoverConfig(opts.auto.pauseOnHover);$wrp.bind(cf_e("mouseenter",conf,!1),function(){$cfs.trigger(cf_e("pause",conf),a)}).bind(cf_e("mouseleave",conf,!1),function(){$cfs.trigger(cf_e("resume",conf))})}if(opts.auto.button&&opts.auto.button.bind(cf_e(opts.auto.event,conf,!1),function(a){a.preventDefault();var b=!1,c=null;crsl.isPaused?b="play":opts.auto.pauseOnEvent&&(b="pause",c=bt_pauseOnHoverConfig(opts.auto.pauseOnEvent)),b&&$cfs.trigger(cf_e(b,conf),c)}),opts.prev.button&&(opts.prev.button.bind(cf_e(opts.prev.event,conf,!1),function(a){a.preventDefault(),$cfs.trigger(cf_e("prev",conf))}),opts.prev.pauseOnHover)){var a=bt_pauseOnHoverConfig(opts.prev.pauseOnHover);opts.prev.button.bind(cf_e("mouseenter",conf,!1),function(){$cfs.trigger(cf_e("pause",conf),a)}).bind(cf_e("mouseleave",conf,!1),function(){$cfs.trigger(cf_e("resume",conf))})}if(opts.next.button&&(opts.next.button.bind(cf_e(opts.next.event,conf,!1),function(a){a.preventDefault(),$cfs.trigger(cf_e("next",conf))}),opts.next.pauseOnHover)){var a=bt_pauseOnHoverConfig(opts.next.pauseOnHover);opts.next.button.bind(cf_e("mouseenter",conf,!1),function(){$cfs.trigger(cf_e("pause",conf),a)}).bind(cf_e("mouseleave",conf,!1),function(){$cfs.trigger(cf_e("resume",conf))})}if(opts.pagination.container&&opts.pagination.pauseOnHover){var a=bt_pauseOnHoverConfig(opts.pagination.pauseOnHover);opts.pagination.container.bind(cf_e("mouseenter",conf,!1),function(){$cfs.trigger(cf_e("pause",conf),a)}).bind(cf_e("mouseleave",conf,!1),function(){$cfs.trigger(cf_e("resume",conf))})}if((opts.prev.key||opts.next.key)&&$(document).bind(cf_e("keyup",conf,!1,!0,!0),function(a){var b=a.keyCode;b==opts.next.key&&(a.preventDefault(),$cfs.trigger(cf_e("next",conf))),b==opts.prev.key&&(a.preventDefault(),$cfs.trigger(cf_e("prev",conf)))}),opts.pagination.keys&&$(document).bind(cf_e("keyup",conf,!1,!0,!0),function(a){var b=a.keyCode;b>=49&&58>b&&(b=(b-49)*opts.items.visible,itms.total>=b&&(a.preventDefault(),$cfs.trigger(cf_e("slideTo",conf),[b,0,!0,opts.pagination])))}),$.fn.swipe){var b="ontouchstart"in window;if(b&&opts.swipe.onTouch||!b&&opts.swipe.onMouse){var c=$.extend(!0,{},opts.prev,opts.swipe),d=$.extend(!0,{},opts.next,opts.swipe),e=function(){$cfs.trigger(cf_e("prev",conf),[c])},f=function(){$cfs.trigger(cf_e("next",conf),[d])};switch(opts.direction){case"up":case"down":opts.swipe.options.swipeUp=f,opts.swipe.options.swipeDown=e;break;default:opts.swipe.options.swipeLeft=f,opts.swipe.options.swipeRight=e}crsl.swipe&&$cfs.swipe("destroy"),$wrp.swipe(opts.swipe.options),$wrp.css("cursor","move"),crsl.swipe=!0}}if($.fn.mousewheel&&opts.mousewheel){var g=$.extend(!0,{},opts.prev,opts.mousewheel),h=$.extend(!0,{},opts.next,opts.mousewheel);crsl.mousewheel&&$wrp.unbind(cf_e("mousewheel",conf,!1)),$wrp.bind(cf_e("mousewheel",conf,!1),function(a,b){a.preventDefault(),b>0?$cfs.trigger(cf_e("prev",conf),[g]):$cfs.trigger(cf_e("next",conf),[h])}),crsl.mousewheel=!0}if(opts.auto.play&&$cfs.trigger(cf_e("play",conf),opts.auto.delay),crsl.upDateOnWindowResize){var i=function(){$cfs.trigger(cf_e("finish",conf)),opts.auto.pauseOnResize&&!crsl.isPaused&&$cfs.trigger(cf_e("play",conf)),sz_resetMargin($cfs.children(),opts),$cfs.trigger(cf_e("updateSizes",conf))},j=$(window),k=null;if($.debounce&&"debounce"==conf.onWindowResize)k=$.debounce(200,i);else if($.throttle&&"throttle"==conf.onWindowResize)k=$.throttle(300,i);else{var l=0,m=0;k=function(){var a=j.width(),b=j.height();(a!=l||b!=m)&&(i(),l=a,m=b)}}j.bind(cf_e("resize",conf,!1,!0,!0),k)}},FN._unbind_buttons=function(){var b=(cf_e("",conf),cf_e("",conf,!1));ns3=cf_e("",conf,!1,!0,!0),$(document).unbind(ns3),$(window).unbind(ns3),$wrp.unbind(b),opts.auto.button&&opts.auto.button.unbind(b),opts.prev.button&&opts.prev.button.unbind(b),opts.next.button&&opts.next.button.unbind(b),opts.pagination.container&&(opts.pagination.container.unbind(b),opts.pagination.anchorBuilder&&opts.pagination.container.children().remove()),crsl.swipe&&($cfs.swipe("destroy"),$wrp.css("cursor","default"),crsl.swipe=!1),crsl.mousewheel&&(crsl.mousewheel=!1),nv_showNavi(opts,"hide",conf),nv_enableNavi(opts,"removeClass",conf)},is_boolean(configs)&&(configs={debug:configs});var crsl={direction:"next",isPaused:!0,isScrolling:!1,isStopped:!1,mousewheel:!1,swipe:!1},itms={total:$cfs.children().length,first:0},tmrs={auto:null,progress:null,startTime:getTime(),timePassed:0},scrl={isStopped:!1,duration:0,startTime:0,easing:"",anims:[]},clbk={onBefore:[],onAfter:[]},queu=[],conf=$.extend(!0,{},$.fn.carouFredSel.configs,configs),opts={},opts_orig=$.extend(!0,{},options),$wrp="parent"==conf.wrapper?$cfs.parent():$cfs.wrap("<"+conf.wrapper.element+' class="'+conf.wrapper.classname+'" />').parent();if(conf.selector=$cfs.selector,conf.serialNumber=$.fn.carouFredSel.serialNumber++,conf.transition=conf.transition&&$.fn.transition?"transition":"animate",FN._init(opts_orig,!0,starting_position),FN._build(),FN._bind_events(),FN._bind_buttons(),is_array(opts.items.start))var start_arr=opts.items.start;else{var start_arr=[];0!=opts.items.start&&start_arr.push(opts.items.start)}if(opts.cookie&&start_arr.unshift(parseInt(cf_getCookie(opts.cookie),10)),start_arr.length>0)for(var a=0,l=start_arr.length;l>a;a++){var s=start_arr[a];if(0!=s){if(s===!0){if(s=window.location.hash,1>s.length)continue}else"random"===s&&(s=Math.floor(Math.random()*itms.total));if($cfs.triggerHandler(cf_e("slideTo",conf),[s,0,!0,{fx:"none"}]))break}}var siz=sz_setSizes($cfs,opts),itm=gi_getCurrentItems($cfs.children(),opts);return opts.onCreate&&opts.onCreate.call($tt0,{width:siz.width,height:siz.height,items:itm}),$cfs.trigger(cf_e("updatePageStatus",conf),[!0,siz]),$cfs.trigger(cf_e("linkAnchors",conf)),conf.debug&&$cfs.trigger(cf_e("debug",conf)),$cfs},$.fn.carouFredSel.serialNumber=1,$.fn.carouFredSel.defaults={synchronise:!1,infinite:!0,circular:!0,responsive:!1,direction:"left",items:{start:0},scroll:{easing:"swing",duration:500,pauseOnHover:!1,event:"click",queue:!1}},$.fn.carouFredSel.configs={debug:!1,transition:!1,onWindowResize:"throttle",events:{prefix:"",namespace:"cfs"},wrapper:{element:"div",classname:"caroufredsel_wrapper"},classnames:{}},$.fn.carouFredSel.pageAnchorBuilder=function(a){return'<a href="#"><span>'+a+"</span></a>"},$.fn.carouFredSel.progressbarUpdater=function(a){$(this).css("width",a+"%")},$.fn.carouFredSel.cookie={get:function(a){a+="=";for(var b=document.cookie.split(";"),c=0,d=b.length;d>c;c++){for(var e=b[c];" "==e.charAt(0);)e=e.slice(1);if(0==e.indexOf(a))return e.slice(a.length)}return 0},set:function(a,b,c){var d="";if(c){var e=new Date;e.setTime(e.getTime()+1e3*60*60*24*c),d="; expires="+e.toGMTString()}document.cookie=a+"="+b+d+"; path=/"},remove:function(a){$.fn.carouFredSel.cookie.set(a,"",-1)}},$.extend($.easing,{quadratic:function(a){var b=a*a;return a*(-b*a+4*b-6*a+4)},cubic:function(a){return a*(4*a*a-9*a+6)},elastic:function(a){var b=a*a;return a*(33*b*b-106*b*a+126*b-67*a+15)}}))})(jQuery);
2182
2183
2184})(jQuery1_11_0);
2185/*!
2186 * Javascript Cookie v1.5.1
2187 * https://github.com/js-cookie/js-cookie
2188 *
2189 * Copyright 2006, 2014 Klaus Hartl
2190 * Released under the MIT license
2191 */
2192(function (factory) {
2193	var jQuery;
2194	if (typeof define === 'function' && define.amd) {
2195		// AMD (Register as an anonymous module)
2196		define(['jquery'], factory);
2197	} else if (typeof exports === 'object') {
2198		// Node/CommonJS
2199		try {
2200			jQuery = require('jquery');
2201		} catch(e) {}
2202		module.exports = factory(jQuery);
2203	} else {
2204		// Browser globals
2205		var _OldCookies = window.Cookies;
2206		var api = window.Cookies = factory(window.jQuery);
2207		api.noConflict = function() {
2208			window.Cookies = _OldCookies;
2209			return api;
2210		};
2211	}
2212}(function ($) {
2213
2214	var pluses = /\+/g;
2215
2216	function encode(s) {
2217		return api.raw ? s : encodeURIComponent(s);
2218	}
2219
2220	function decode(s) {
2221		return api.raw ? s : decodeURIComponent(s);
2222	}
2223
2224	function stringifyCookieValue(value) {
2225		return encode(api.json ? JSON.stringify(value) : String(value));
2226	}
2227
2228	function parseCookieValue(s) {
2229		if (s.indexOf('"') === 0) {
2230			// This is a quoted cookie as according to RFC2068, unescape...
2231			s = s.slice(1, -1).replace(/\\"/g, '"').replace(/\\\\/g, '\\');
2232		}
2233
2234		try {
2235			// Replace server-side written pluses with spaces.
2236			// If we can't decode the cookie, ignore it, it's unusable.
2237			// If we can't parse the cookie, ignore it, it's unusable.
2238			s = decodeURIComponent(s.replace(pluses, ' '));
2239			return api.json ? JSON.parse(s) : s;
2240		} catch(e) {}
2241	}
2242
2243	function read(s, converter) {
2244		var value = api.raw ? s : parseCookieValue(s);
2245		return isFunction(converter) ? converter(value) : value;
2246	}
2247
2248	function extend() {
2249		var key, options;
2250		var i = 0;
2251		var result = {};
2252		for (; i < arguments.length; i++) {
2253			options = arguments[ i ];
2254			for (key in options) {
2255				result[key] = options[key];
2256			}
2257		}
2258		return result;
2259	}
2260
2261	function isFunction(obj) {
2262		return Object.prototype.toString.call(obj) === '[object Function]';
2263	}
2264
2265	var api = function (key, value, options) {
2266
2267		// Write
2268
2269		if (arguments.length > 1 && !isFunction(value)) {
2270			options = extend(api.defaults, options);
2271
2272			if (typeof options.expires === 'number') {
2273				var days = options.expires, t = options.expires = new Date();
2274				t.setMilliseconds(t.getMilliseconds() + days * 864e+5);
2275			}
2276
2277			return (document.cookie = [
2278				encode(key), '=', stringifyCookieValue(value),
2279				options.expires ? '; expires=' + options.expires.toUTCString() : '', // use expires attribute, max-age is not supported by IE
2280				options.path    ? '; path=' + options.path : '',
2281				options.domain  ? '; domain=' + options.domain : '',
2282				options.secure  ? '; secure' : ''
2283			].join(''));
2284		}
2285
2286		// Read
2287
2288		var result = key ? undefined : {},
2289			// To prevent the for loop in the first place assign an empty array
2290			// in case there are no cookies at all. Also prevents odd result when
2291			// calling "get()".
2292			cookies = document.cookie ? document.cookie.split('; ') : [],
2293			i = 0,
2294			l = cookies.length;
2295
2296		for (; i < l; i++) {
2297			var parts = cookies[i].split('='),
2298				name = decode(parts.shift()),
2299				cookie = parts.join('=');
2300
2301			if (key === name) {
2302				// If second argument (value) is a function it's a converter...
2303				result = read(cookie, value);
2304				break;
2305			}
2306
2307			// Prevent storing a cookie that we couldn't decode.
2308			if (!key && (cookie = read(cookie)) !== undefined) {
2309				result[name] = cookie;
2310			}
2311		}
2312
2313		return result;
2314	};
2315
2316	api.get = api.set = api;
2317	api.defaults = {};
2318
2319	api.remove = function (key, options) {
2320		// Must not alter options, thus extending a fresh object...
2321		api(key, '', extend(options, { expires: -1 }));
2322		return !api(key);
2323	};
2324
2325	if ( $ ) {
2326		$.cookie = api;
2327		$.removeCookie = api.remove;
2328	}
2329
2330	return api;
2331}));
2332
2333/*
2334     _ _      _       _
2335 ___| (_) ___| | __  (_)___
2336/ __| | |/ __| |/ /  | / __|
2337\__ \ | | (__|   < _ | \__ \
2338|___/_|_|\___|_|\_(_)/ |___/
2339                   |__/
2340
2341 Version: 1.9.0
2342  Author: Ken Wheeler
2343 Website: http://kenwheeler.github.io
2344    Docs: http://kenwheeler.github.io/slick
2345    Repo: http://github.com/kenwheeler/slick
2346  Issues: http://github.com/kenwheeler/slick/issues
2347
2348 */
2349/* global window, document, define, jQuery, setInterval, clearInterval */
2350(function ($) {
2351    var jQuery = $;
2352
2353;(function(factory) {
2354    'use strict';
2355    if (typeof define === 'function' && define.amd) {
2356        define(['jquery'], factory);
2357    } else if (typeof exports !== 'undefined') {
2358        module.exports = factory(require('jquery'));
2359    } else {
2360        factory(jQuery);
2361    }
2362
2363}(function($) {
2364    'use strict';
vendor: 29,656 bytes, lines 2364-3352
2364
2365    var Slick = window.Slick || {};
2366
2367    Slick = (function() {
2368
2369        var instanceUid = 0;
2370
2371        function Slick(element, settings) {
2372
2373            var _ = this, dataSettings;
2374
2375            _.defaults = {
2376                accessibility: true,
2377                adaptiveHeight: false,
2378                appendArrows: $(element),
2379                appendDots: $(element),
2380                arrows: true,
2381                asNavFor: null,
2382                prevArrow: '<button class="slick-prev" aria-label="Previous" type="button">Previous</button>',
2383                nextArrow: '<button class="slick-next" aria-label="Next" type="button">Next</button>',
2384                autoplay: false,
2385                autoplaySpeed: 3000,
2386                centerMode: false,
2387                centerPadding: '50px',
2388                cssEase: 'ease',
2389                customPaging: function(slider, i) {
2390                    return $('<button type="button" />').text(i + 1);
2391                },
2392                dots: false,
2393                dotsClass: 'slick-dots',
2394                draggable: true,
2395                easing: 'linear',
2396                edgeFriction: 0.35,
2397                fade: false,
2398                focusOnSelect: false,
2399                focusOnChange: false,
2400                infinite: true,
2401                initialSlide: 0,
2402                lazyLoad: 'ondemand',
2403                mobileFirst: false,
2404                pauseOnHover: true,
2405                pauseOnFocus: true,
2406                pauseOnDotsHover: false,
2407                respondTo: 'window',
2408                responsive: null,
2409                rows: 1,
2410                rtl: false,
2411                slide: '',
2412                slidesPerRow: 1,
2413                slidesToShow: 1,
2414                slidesToScroll: 1,
2415                speed: 500,
2416                swipe: true,
2417                swipeToSlide: false,
2418                touchMove: true,
2419                touchThreshold: 5,
2420                useCSS: true,
2421                useTransform: true,
2422                variableWidth: false,
2423                vertical: false,
2424                verticalSwiping: false,
2425                waitForAnimate: true,
2426                zIndex: 1000
2427            };
2428
2429            _.initials = {
2430                animating: false,
2431                dragging: false,
2432                autoPlayTimer: null,
2433                currentDirection: 0,
2434                currentLeft: null,
2435                currentSlide: 0,
2436                direction: 1,
2437                $dots: null,
2438                listWidth: null,
2439                listHeight: null,
2440                loadIndex: 0,
2441                $nextArrow: null,
2442                $prevArrow: null,
2443                scrolling: false,
2444                slideCount: null,
2445                slideWidth: null,
2446                $slideTrack: null,
2447                $slides: null,
2448                sliding: false,
2449                slideOffset: 0,
2450                swipeLeft: null,
2451                swiping: false,
2452                $list: null,
2453                touchObject: {},
2454                transformsEnabled: false,
2455                unslicked: false
2456            };
2457
2458            $.extend(_, _.initials);
2459
2460            _.activeBreakpoint = null;
2461            _.animType = null;
2462            _.animProp = null;
2463            _.breakpoints = [];
2464            _.breakpointSettings = [];
2465            _.cssTransitions = false;
2466            _.focussed = false;
2467            _.interrupted = false;
2468            _.hidden = 'hidden';
2469            _.paused = true;
2470            _.positionProp = null;
2471            _.respondTo = null;
2472            _.rowCount = 1;
2473            _.shouldClick = true;
2474            _.$slider = $(element);
2475            _.$slidesCache = null;
2476            _.transformType = null;
2477            _.transitionType = null;
2478            _.visibilityChange = 'visibilitychange';
2479            _.windowWidth = 0;
2480            _.windowTimer = null;
2481
2482            dataSettings = $(element).data('slick') || {};
2483
2484            _.options = $.extend({}, _.defaults, settings, dataSettings);
2485
2486            _.currentSlide = _.options.initialSlide;
2487
2488            _.originalSettings = _.options;
2489
2490            if (typeof document.mozHidden !== 'undefined') {
2491                _.hidden = 'mozHidden';
2492                _.visibilityChange = 'mozvisibilitychange';
2493            } else if (typeof document.webkitHidden !== 'undefined') {
2494                _.hidden = 'webkitHidden';
2495                _.visibilityChange = 'webkitvisibilitychange';
2496            }
2497
2498            _.autoPlay = $.proxy(_.autoPlay, _);
2499            _.autoPlayClear = $.proxy(_.autoPlayClear, _);
2500            _.autoPlayIterator = $.proxy(_.autoPlayIterator, _);
2501            _.changeSlide = $.proxy(_.changeSlide, _);
2502            _.clickHandler = $.proxy(_.clickHandler, _);
2503            _.selectHandler = $.proxy(_.selectHandler, _);
2504            _.setPosition = $.proxy(_.setPosition, _);
2505            _.swipeHandler = $.proxy(_.swipeHandler, _);
2506            _.dragHandler = $.proxy(_.dragHandler, _);
2507            _.keyHandler = $.proxy(_.keyHandler, _);
2508
2509            _.instanceUid = instanceUid++;
2510
2511            // A simple way to check for HTML strings
2512            // Strict HTML recognition (must start with <)
2513            // Extracted from jQuery v1.11 source
2514            _.htmlExpr = /^(?:\s*(<[\w\W]+>)[^>]*)$/;
2515
2516
2517            _.registerBreakpoints();
2518            _.init(true);
2519
2520        }
2521
2522        return Slick;
2523
2524    }());
2525
2526    Slick.prototype.activateADA = function() {
2527        var _ = this;
2528
2529        _.$slideTrack.find('.slick-active').attr({
2530            'aria-hidden': 'false'
2531        }).find('a, input, button, select').attr({
2532            'tabindex': '0'
2533        });
2534
2535    };
2536
2537    Slick.prototype.addSlide = Slick.prototype.slickAdd = function(markup, index, addBefore) {
2538
2539        var _ = this;
2540
2541        if (typeof(index) === 'boolean') {
2542            addBefore = index;
2543            index = null;
2544        } else if (index < 0 || (index >= _.slideCount)) {
2545            return false;
2546        }
2547
2548        _.unload();
2549
2550        if (typeof(index) === 'number') {
2551            if (index === 0 && _.$slides.length === 0) {
2552                $(markup).appendTo(_.$slideTrack);
2553            } else if (addBefore) {
2554                $(markup).insertBefore(_.$slides.eq(index));
2555            } else {
2556                $(markup).insertAfter(_.$slides.eq(index));
2557            }
2558        } else {
2559            if (addBefore === true) {
2560                $(markup).prependTo(_.$slideTrack);
2561            } else {
2562                $(markup).appendTo(_.$slideTrack);
2563            }
2564        }
2565
2566        _.$slides = _.$slideTrack.children(this.options.slide);
2567
2568        _.$slideTrack.children(this.options.slide).detach();
2569
2570        _.$slideTrack.append(_.$slides);
2571
2572        _.$slides.each(function(index, element) {
2573            $(element).attr('data-slick-index', index);
2574        });
2575
2576        _.$slidesCache = _.$slides;
2577
2578        _.reinit();
2579
2580    };
2581
2582    Slick.prototype.animateHeight = function() {
2583        var _ = this;
2584        if (_.options.slidesToShow === 1 && _.options.adaptiveHeight === true && _.options.vertical === false) {
2585            var targetHeight = _.$slides.eq(_.currentSlide).outerHeight(true);
2586            _.$list.animate({
2587                height: targetHeight
2588            }, _.options.speed);
2589        }
2590    };
2591
2592    Slick.prototype.animateSlide = function(targetLeft, callback) {
2593
2594        var animProps = {},
2595            _ = this;
2596
2597        _.animateHeight();
2598
2599        if (_.options.rtl === true && _.options.vertical === false) {
2600            targetLeft = -targetLeft;
2601        }
2602        if (_.transformsEnabled === false) {
2603            if (_.options.vertical === false) {
2604                _.$slideTrack.animate({
2605                    left: targetLeft
2606                }, _.options.speed, _.options.easing, callback);
2607            } else {
2608                _.$slideTrack.animate({
2609                    top: targetLeft
2610                }, _.options.speed, _.options.easing, callback);
2611            }
2612
2613        } else {
2614
2615            if (_.cssTransitions === false) {
2616                if (_.options.rtl === true) {
2617                    _.currentLeft = -(_.currentLeft);
2618                }
2619                $({
2620                    animStart: _.currentLeft
2621                }).animate({
2622                    animStart: targetLeft
2623                }, {
2624                    duration: _.options.speed,
2625                    easing: _.options.easing,
2626                    step: function(now) {
2627                        now = Math.ceil(now);
2628                        if (_.options.vertical === false) {
2629                            animProps[_.animType] = 'translate(' +
2630                                now + 'px, 0px)';
2631                            _.$slideTrack.css(animProps);
2632                        } else {
2633                            animProps[_.animType] = 'translate(0px,' +
2634                                now + 'px)';
2635                            _.$slideTrack.css(animProps);
2636                        }
2637                    },
2638                    complete: function() {
2639                        if (callback) {
2640                            callback.call();
2641                        }
2642                    }
2643                });
2644
2645            } else {
2646
2647                _.applyTransition();
2648                targetLeft = Math.ceil(targetLeft);
2649
2650                if (_.options.vertical === false) {
2651                    animProps[_.animType] = 'translate3d(' + targetLeft + 'px, 0px, 0px)';
2652                } else {
2653                    animProps[_.animType] = 'translate3d(0px,' + targetLeft + 'px, 0px)';
2654                }
2655                _.$slideTrack.css(animProps);
2656
2657                if (callback) {
2658                    setTimeout(function() {
2659
2660                        _.disableTransition();
2661
2662                        callback.call();
2663                    }, _.options.speed);
2664                }
2665
2666            }
2667
2668        }
2669
2670    };
2671
2672    Slick.prototype.getNavTarget = function() {
2673
2674        var _ = this,
2675            asNavFor = _.options.asNavFor;
2676
2677        if ( asNavFor && asNavFor !== null ) {
2678            asNavFor = $(asNavFor).not(_.$slider);
2679        }
2680
2681        return asNavFor;
2682
2683    };
2684
2685    Slick.prototype.asNavFor = function(index) {
2686
2687        var _ = this,
2688            asNavFor = _.getNavTarget();
2689
2690        if ( asNavFor !== null && typeof asNavFor === 'object' ) {
2691            asNavFor.each(function() {
2692                var target = $(this).slick('getSlick');
2693                if(!target.unslicked) {
2694                    target.slideHandler(index, true);
2695                }
2696            });
2697        }
2698
2699    };
2700
2701    Slick.prototype.applyTransition = function(slide) {
2702
2703        var _ = this,
2704            transition = {};
2705
2706        if (_.options.fade === false) {
2707            transition[_.transitionType] = _.transformType + ' ' + _.options.speed + 'ms ' + _.options.cssEase;
2708        } else {
2709            transition[_.transitionType] = 'opacity ' + _.options.speed + 'ms ' + _.options.cssEase;
2710        }
2711
2712        if (_.options.fade === false) {
2713            _.$slideTrack.css(transition);
2714        } else {
2715            _.$slides.eq(slide).css(transition);
2716        }
2717
2718    };
2719
2720    Slick.prototype.autoPlay = function() {
2721
2722        var _ = this;
2723
2724        _.autoPlayClear();
2725
2726        if ( _.slideCount > _.options.slidesToShow ) {
2727            _.autoPlayTimer = setInterval( _.autoPlayIterator, _.options.autoplaySpeed );
2728        }
2729
2730    };
2731
2732    Slick.prototype.autoPlayClear = function() {
2733
2734        var _ = this;
2735
2736        if (_.autoPlayTimer) {
2737            clearInterval(_.autoPlayTimer);
2738        }
2739
2740    };
2741
2742    Slick.prototype.autoPlayIterator = function() {
2743
2744        var _ = this,
2745            slideTo = _.currentSlide + _.options.slidesToScroll;
2746
2747        if ( !_.paused && !_.interrupted && !_.focussed ) {
2748
2749            if ( _.options.infinite === false ) {
2750
2751                if ( _.direction === 1 && ( _.currentSlide + 1 ) === ( _.slideCount - 1 )) {
2752                    _.direction = 0;
2753                }
2754
2755                else if ( _.direction === 0 ) {
2756
2757                    slideTo = _.currentSlide - _.options.slidesToScroll;
2758
2759                    if ( _.currentSlide - 1 === 0 ) {
2760                        _.direction = 1;
2761                    }
2762
2763                }
2764
2765            }
2766
2767            _.slideHandler( slideTo );
2768
2769        }
2770
2771    };
2772
2773    Slick.prototype.buildArrows = function() {
2774
2775        var _ = this;
2776
2777        if (_.options.arrows === true ) {
2778
2779            _.$prevArrow = $(_.options.prevArrow).addClass('slick-arrow');
2780            _.$nextArrow = $(_.options.nextArrow).addClass('slick-arrow');
2781
2782            if( _.slideCount > _.options.slidesToShow ) {
2783
2784                _.$prevArrow.removeClass('slick-hidden').removeAttr('aria-hidden tabindex');
2785                _.$nextArrow.removeClass('slick-hidden').removeAttr('aria-hidden tabindex');
2786
2787                if (_.htmlExpr.test(_.options.prevArrow)) {
2788                    _.$prevArrow.prependTo(_.options.appendArrows);
2789                }
2790
2791                if (_.htmlExpr.test(_.options.nextArrow)) {
2792                    _.$nextArrow.appendTo(_.options.appendArrows);
2793                }
2794
2795                if (_.options.infinite !== true) {
2796                    _.$prevArrow
2797                        .addClass('slick-disabled')
2798                        .attr('aria-disabled', 'true');
2799                }
2800
2801            } else {
2802
2803                _.$prevArrow.add( _.$nextArrow )
2804
2805                    .addClass('slick-hidden')
2806                    .attr({
2807                        'aria-disabled': 'true',
2808                        'tabindex': '-1'
2809                    });
2810
2811            }
2812
2813        }
2814
2815    };
2816
2817    Slick.prototype.buildDots = function() {
2818
2819        var _ = this,
2820            i, dot;
2821
2822        if (_.options.dots === true && _.slideCount > _.options.slidesToShow) {
2823
2824            _.$slider.addClass('slick-dotted');
2825
2826            dot = $('<ul />').addClass(_.options.dotsClass);
2827
2828            for (i = 0; i <= _.getDotCount(); i += 1) {
2829                dot.append($('<li />').append(_.options.customPaging.call(this, _, i)));
2830            }
2831
2832            _.$dots = dot.appendTo(_.options.appendDots);
2833
2834            _.$dots.find('li').first().addClass('slick-active');
2835
2836        }
2837
2838    };
2839
2840    Slick.prototype.buildOut = function() {
2841
2842        var _ = this;
2843
2844        _.$slides =
2845            _.$slider
2846                .children( _.options.slide + ':not(.slick-cloned)')
2847                .addClass('slick-slide');
2848
2849        _.slideCount = _.$slides.length;
2850
2851        _.$slides.each(function(index, element) {
2852            $(element)
2853                .attr('data-slick-index', index)
2854                .data('originalStyling', $(element).attr('style') || '');
2855        });
2856
2857        _.$slider.addClass('slick-slider');
2858
2859        _.$slideTrack = (_.slideCount === 0) ?
2860            $('<div class="slick-track"/>').appendTo(_.$slider) :
2861            _.$slides.wrapAll('<div class="slick-track"/>').parent();
2862
2863        _.$list = _.$slideTrack.wrap(
2864            '<div class="slick-list"/>').parent();
2865        _.$slideTrack.css('opacity', 0);
2866
2867        if (_.options.centerMode === true || _.options.swipeToSlide === true) {
2868            _.options.slidesToScroll = 1;
2869        }
2870
2871        $('img[data-lazy]', _.$slider).not('[src]').addClass('slick-loading');
2872
2873        _.setupInfinite();
2874
2875        _.buildArrows();
2876
2877        _.buildDots();
2878
2879        _.updateDots();
2880
2881
2882        _.setSlideClasses(typeof _.currentSlide === 'number' ? _.currentSlide : 0);
2883
2884        if (_.options.draggable === true) {
2885            _.$list.addClass('draggable');
2886        }
2887
2888    };
2889
2890    Slick.prototype.buildRows = function() {
2891
2892        var _ = this, a, b, c, newSlides, numOfSlides, originalSlides,slidesPerSection;
2893
2894        newSlides = document.createDocumentFragment();
2895        originalSlides = _.$slider.children();
2896
2897        if(_.options.rows > 0) {
2898
2899            slidesPerSection = _.options.slidesPerRow * _.options.rows;
2900            numOfSlides = Math.ceil(
2901                originalSlides.length / slidesPerSection
2902            );
2903
2904            for(a = 0; a < numOfSlides; a++){
2905                var slide = document.createElement('div');
2906                for(b = 0; b < _.options.rows; b++) {
2907                    var row = document.createElement('div');
2908                    for(c = 0; c < _.options.slidesPerRow; c++) {
2909                        var target = (a * slidesPerSection + ((b * _.options.slidesPerRow) + c));
2910                        if (originalSlides.get(target)) {
2911                            row.appendChild(originalSlides.get(target));
2912                        }
2913                    }
2914                    slide.appendChild(row);
2915                }
2916                newSlides.appendChild(slide);
2917            }
2918
2919            _.$slider.empty().append(newSlides);
2920            _.$slider.children().children().children()
2921                .css({
2922                    'width':(100 / _.options.slidesPerRow) + '%',
2923                    'display': 'inline-block'
2924                });
2925
2926        }
2927
2928    };
2929
2930    Slick.prototype.checkResponsive = function(initial, forceUpdate) {
2931
2932        var _ = this,
2933            breakpoint, targetBreakpoint, respondToWidth, triggerBreakpoint = false;
2934        var sliderWidth = _.$slider.width();
2935        var windowWidth = window.innerWidth || $(window).width();
2936
2937        if (_.respondTo === 'window') {
2938            respondToWidth = windowWidth;
2939        } else if (_.respondTo === 'slider') {
2940            respondToWidth = sliderWidth;
2941        } else if (_.respondTo === 'min') {
2942            respondToWidth = Math.min(windowWidth, sliderWidth);
2943        }
2944
2945        if ( _.options.responsive &&
2946            _.options.responsive.length &&
2947            _.options.responsive !== null) {
2948
2949            targetBreakpoint = null;
2950
2951            for (breakpoint in _.breakpoints) {
2952                if (_.breakpoints.hasOwnProperty(breakpoint)) {
2953                    if (_.originalSettings.mobileFirst === false) {
2954                        if (respondToWidth < _.breakpoints[breakpoint]) {
2955                            targetBreakpoint = _.breakpoints[breakpoint];
2956                        }
2957                    } else {
2958                        if (respondToWidth > _.breakpoints[breakpoint]) {
2959                            targetBreakpoint = _.breakpoints[breakpoint];
2960                        }
2961                    }
2962                }
2963            }
2964
2965            if (targetBreakpoint !== null) {
2966                if (_.activeBreakpoint !== null) {
2967                    if (targetBreakpoint !== _.activeBreakpoint || forceUpdate) {
2968                        _.activeBreakpoint =
2969                            targetBreakpoint;
2970                        if (_.breakpointSettings[targetBreakpoint] === 'unslick') {
2971                            _.unslick(targetBreakpoint);
2972                        } else {
2973                            _.options = $.extend({}, _.originalSettings,
2974                                _.breakpointSettings[
2975                                    targetBreakpoint]);
2976                            if (initial === true) {
2977                                _.currentSlide = _.options.initialSlide;
2978                            }
2979                            _.refresh(initial);
2980                        }
2981                        triggerBreakpoint = targetBreakpoint;
2982                    }
2983                } else {
2984                    _.activeBreakpoint = targetBreakpoint;
2985                    if (_.breakpointSettings[targetBreakpoint] === 'unslick') {
2986                        _.unslick(targetBreakpoint);
2987                    } else {
2988                        _.options = $.extend({}, _.originalSettings,
2989                            _.breakpointSettings[
2990                                targetBreakpoint]);
2991                        if (initial === true) {
2992                            _.currentSlide = _.options.initialSlide;
2993                        }
2994                        _.refresh(initial);
2995                    }
2996                    triggerBreakpoint = targetBreakpoint;
2997                }
2998            } else {
2999                if (_.activeBreakpoint !== null) {
3000                    _.activeBreakpoint = null;
3001                    _.options = _.originalSettings;
3002                    if (initial === true) {
3003                        _.currentSlide = _.options.initialSlide;
3004                    }
3005                    _.refresh(initial);
3006                    triggerBreakpoint = targetBreakpoint;
3007                }
3008            }
3009
3010            // only trigger breakpoints during an actual break. not on initialize.
3011            if( !initial && triggerBreakpoint !== false ) {
3012                _.$slider.trigger('breakpoint', [_, triggerBreakpoint]);
3013            }
3014        }
3015
3016    };
3017
3018    Slick.prototype.changeSlide = function(event, dontAnimate) {
3019
3020        var _ = this,
3021            $target = $(event.currentTarget),
3022            indexOffset, slideOffset, unevenOffset;
3023
3024        // If target is a link, prevent default action.
3025        if($target.is('a')) {
3026            event.preventDefault();
3027        }
3028
3029        // If target is not the <li> element (ie: a child), find the <li>.
3030        if(!$target.is('li')) {
3031            $target = $target.closest('li');
3032        }
3033
3034        unevenOffset = (_.slideCount % _.options.slidesToScroll !== 0);
3035        indexOffset = unevenOffset ? 0 : (_.slideCount - _.currentSlide) % _.options.slidesToScroll;
3036
3037        switch (event.data.message) {
3038
3039            case 'previous':
3040                slideOffset = indexOffset === 0 ? _.options.slidesToScroll : _.options.slidesToShow - indexOffset;
3041                if (_.slideCount > _.options.slidesToShow) {
3042                    _.slideHandler(_.currentSlide - slideOffset, false, dontAnimate);
3043                }
3044                break;
3045
3046            case 'next':
3047                slideOffset = indexOffset === 0 ? _.options.slidesToScroll : indexOffset;
3048                if (_.slideCount > _.options.slidesToShow) {
3049                    _.slideHandler(_.currentSlide + slideOffset, false, dontAnimate);
3050                }
3051                break;
3052
3053            case 'index':
3054                var index = event.data.index === 0 ? 0 :
3055                    event.data.index || $target.index() * _.options.slidesToScroll;
3056
3057                _.slideHandler(_.checkNavigable(index), false, dontAnimate);
3058                $target.children().trigger('focus');
3059                break;
3060
3061            default:
3062                return;
3063        }
3064
3065    };
3066
3067    Slick.prototype.checkNavigable = function(index) {
3068
3069        var _ = this,
3070            navigables, prevNavigable;
3071
3072        navigables = _.getNavigableIndexes();
3073        prevNavigable = 0;
3074        if (index > navigables[navigables.length - 1]) {
3075            index = navigables[navigables.length - 1];
3076        } else {
3077            for (var n in navigables) {
3078                if (index < navigables[n]) {
3079                    index = prevNavigable;
3080                    break;
3081                }
3082                prevNavigable = navigables[n];
3083            }
3084        }
3085
3086        return index;
3087    };
3088
3089    Slick.prototype.cleanUpEvents = function() {
3090
3091        var _ = this;
3092
3093        if (_.options.dots && _.$dots !== null) {
3094
3095            $('li', _.$dots)
3096                .off('click.slick', _.changeSlide)
3097                .off('mouseenter.slick', $.proxy(_.interrupt, _, true))
3098                .off('mouseleave.slick', $.proxy(_.interrupt, _, false));
3099
3100            if (_.options.accessibility === true) {
3101                _.$dots.off('keydown.slick', _.keyHandler);
3102            }
3103        }
3104
3105        _.$slider.off('focus.slick blur.slick');
3106
3107        if (_.options.arrows === true && _.slideCount > _.options.slidesToShow) {
3108            _.$prevArrow && _.$prevArrow.off('click.slick', _.changeSlide);
3109            _.$nextArrow && _.$nextArrow.off('click.slick', _.changeSlide);
3110
3111            if (_.options.accessibility === true) {
3112                _.$prevArrow && _.$prevArrow.off('keydown.slick', _.keyHandler);
3113                _.$nextArrow && _.$nextArrow.off('keydown.slick', _.keyHandler);
3114            }
3115        }
3116
3117        _.$list.off('touchstart.slick mousedown.slick', _.swipeHandler);
3118        _.$list.off('touchmove.slick mousemove.slick', _.swipeHandler);
3119        _.$list.off('touchend.slick mouseup.slick', _.swipeHandler);
3120        _.$list.off('touchcancel.slick mouseleave.slick', _.swipeHandler);
3121
3122        _.$list.off('click.slick', _.clickHandler);
3123
3124        $(document).off(_.visibilityChange, _.visibility);
3125
3126        _.cleanUpSlideEvents();
3127
3128        if (_.options.accessibility === true) {
3129            _.$list.off('keydown.slick', _.keyHandler);
3130        }
3131
3132        if (_.options.focusOnSelect === true) {
3133            $(_.$slideTrack).children().off('click.slick', _.selectHandler);
3134        }
3135
3136        $(window).off('orientationchange.slick.slick-' + _.instanceUid, _.orientationChange);
3137
3138        $(window).off('resize.slick.slick-' + _.instanceUid, _.resize);
3139
3140        $('[draggable!=true]', _.$slideTrack).off('dragstart', _.preventDefault);
3141
3142        $(window).off('load.slick.slick-' + _.instanceUid, _.setPosition);
3143
3144    };
3145
3146    Slick.prototype.cleanUpSlideEvents = function() {
3147
3148        var _ = this;
3149
3150        _.$list.off('mouseenter.slick', $.proxy(_.interrupt, _, true));
3151        _.$list.off('mouseleave.slick', $.proxy(_.interrupt, _, false));
3152
3153    };
3154
3155    Slick.prototype.cleanUpRows = function() {
3156
3157        var _ = this, originalSlides;
3158
3159        if(_.options.rows > 0) {
3160            originalSlides = _.$slides.children().children();
3161            originalSlides.removeAttr('style');
3162            _.$slider.empty().append(originalSlides);
3163        }
3164
3165    };
3166
3167    Slick.prototype.clickHandler = function(event) {
3168
3169        var _ = this;
3170
3171        if (_.shouldClick === false) {
3172            event.stopImmediatePropagation();
3173            event.stopPropagation();
3174            event.preventDefault();
3175        }
3176
3177    };
3178
3179    Slick.prototype.destroy = function(refresh) {
3180
3181        var _ = this;
3182
3183        _.autoPlayClear();
3184
3185        _.touchObject = {};
3186
3187        _.cleanUpEvents();
3188
3189        $('.slick-cloned', _.$slider).detach();
3190
3191        if (_.$dots) {
3192            _.$dots.remove();
3193        }
3194
3195        if ( _.$prevArrow && _.$prevArrow.length ) {
3196
3197            _.$prevArrow
3198                .removeClass('slick-disabled slick-arrow slick-hidden')
3199                .removeAttr('aria-hidden aria-disabled tabindex')
3200                .css('display','');
3201
3202            if ( _.htmlExpr.test( _.options.prevArrow )) {
3203                _.$prevArrow.remove();
3204            }
3205        }
3206
3207        if ( _.$nextArrow && _.$nextArrow.length ) {
3208
3209            _.$nextArrow
3210                .removeClass('slick-disabled slick-arrow slick-hidden')
3211                .removeAttr('aria-hidden aria-disabled tabindex')
3212                .css('display','');
3213
3214            if ( _.htmlExpr.test( _.options.nextArrow )) {
3215                _.$nextArrow.remove();
3216            }
3217        }
3218
3219
3220        if (_.$slides) {
3221
3222            _.$slides
3223                .removeClass('slick-slide slick-active slick-center slick-visible slick-current')
3224                .removeAttr('aria-hidden')
3225                .removeAttr('data-slick-index')
3226                .each(function(){
3227                    $(this).attr('style', $(this).data('originalStyling'));
3228                });
3229
3230            _.$slideTrack.children(this.options.slide).detach();
3231
3232            _.$slideTrack.detach();
3233
3234            _.$list.detach();
3235
3236            _.$slider.append(_.$slides);
3237        }
3238
3239        _.cleanUpRows();
3240
3241        _.$slider.removeClass('slick-slider');
3242        _.$slider.removeClass('slick-initialized');
3243        _.$slider.removeClass('slick-dotted');
3244
3245        _.unslicked = true;
3246
3247        if(!refresh) {
3248            _.$slider.trigger('destroy', [_]);
3249        }
3250
3251    };
3252
3253    Slick.prototype.disableTransition = function(slide) {
3254
3255        var _ = this,
3256            transition = {};
3257
3258        transition[_.transitionType] = '';
3259
3260        if (_.options.fade === false) {
3261            _.$slideTrack.css(transition);
3262        } else {
3263            _.$slides.eq(slide).css(transition);
3264        }
3265
3266    };
3267
3268    Slick.prototype.fadeSlide = function(slideIndex, callback) {
3269
3270        var _ = this;
3271
3272        if (_.cssTransitions === false) {
3273
3274            _.$slides.eq(slideIndex).css({
3275                zIndex: _.options.zIndex
3276            });
3277
3278            _.$slides.eq(slideIndex).animate({
3279                opacity: 1
3280            }, _.options.speed, _.options.easing, callback);
3281
3282        } else {
3283
3284            _.applyTransition(slideIndex);
3285
3286            _.$slides.eq(slideIndex).css({
3287                opacity: 1,
3288                zIndex: _.options.zIndex
3289            });
3290
3291            if (callback) {
3292                setTimeout(function() {
3293
3294                    _.disableTransition(slideIndex);
3295
3296                    callback.call();
3297                }, _.options.speed);
3298            }
3299
3300        }
3301
3302    };
3303
3304    Slick.prototype.fadeSlideOut = function(slideIndex) {
3305
3306        var _ = this;
3307
3308        if (_.cssTransitions === false) {
3309
3310            _.$slides.eq(slideIndex).animate({
3311                opacity: 0,
3312                zIndex: _.options.zIndex - 2
3313            }, _.options.speed, _.options.easing);
3314
3315        } else {
3316
3317            _.applyTransition(slideIndex);
3318
3319            _.$slides.eq(slideIndex).css({
3320                opacity: 0,
3321                zIndex: _.options.zIndex - 2
3322            });
3323
3324        }
3325
3326    };
3327
3328    Slick.prototype.filterSlides = Slick.prototype.slickFilter = function(filter) {
3329
3330        var _ = this;
3331
3332        if (filter !== null) {
3333
3334            _.$slidesCache = _.$slides;
3335
3336            _.unload();
3337
3338            _.$slideTrack.children(this.options.slide).detach();
3339
3340            _.$slidesCache.filter(filter).appendTo(_.$slideTrack);
3341
3342            _.reinit();
3343
3344        }
3345
3346    };
3347
3348    Slick.prototype.focusHandler = function() {
3349
3350        var _ = this;
3351
3352        
3352// If any child element receives focus within the slider we need to pause the autoplay
3353        _.$slider
3354            .off('focus.slick blur.slick')
3355            .on(
3356                'focus.slick',
3357                '*',
3358                function(event) {
3359                    var $sf = $(this);
3360
3361                    setTimeout(function() {
3362                        if( _.options.pauseOnFocus ) {
3363                            if ($sf.is(':focus')) {
3364                                _.focussed = true;
3365                                _.autoPlay();
3366                            }
3367                        }
3368                    }, 0);
3369                }
3370            ).on(
3371                'blur.slick',
3372                '*',
3373                function(event) {
3374                    var $sf = $(this);
3375
3376                    // When a blur occurs on any elements within the slider we become unfocused
3377                    if( _.options.pauseOnFocus ) {
3378                        _.focussed = false;
3379                        _.autoPlay();
3380                    }
3381                }
3382            );
3383    };
3384
3385    Slick.prototype.getCurrent = Slick.prototype.slickCurrentSlide = function() {
3386
3387        var _ = this;
3388        return _.currentSlide;
3389
3390    };
3391
3392    Slick.prototype.getDotCount = function() {
3393
3394        var _ = this;
3395
3396        var breakPoint = 0;
3397        var counter = 0;
3398        var pagerQty = 0;
3399
3400        if (_.options.infinite === true) {
3401            if (_.slideCount <= _.options.slidesToShow) {
3402                 ++pagerQty;
3403            } else {
3404                while (breakPoint < _.slideCount) {
3405                    ++pagerQty;
3406                    breakPoint = counter + _.options.slidesToScroll;
3407                    counter += _.options.slidesToScroll <= _.options.slidesToShow ? _.options.slidesToScroll : _.options.slidesToShow;
3408                }
3409            }
3410        } else if (_.options.centerMode === true) {
3411            pagerQty = _.slideCount;
3412        } else if(!_.options.asNavFor) {
3413            pagerQty = 1 + Math.ceil((_.slideCount - _.options.slidesToShow) / _.options.slidesToScroll);
3414        }else {
3415            while (breakPoint < _.slideCount) {
3416                ++pagerQty;
3417                breakPoint = counter + _.options.slidesToScroll;
3418                counter += _.options.slidesToScroll <= _.options.slidesToShow ? _.options.slidesToScroll : _.options.slidesToShow;
3419            }
3420        }
3421
3422        return pagerQty - 1;
3423
3424    };
3425
3426    Slick.prototype.getLeft = function(slideIndex) {
3427
3428        var _ = this,
3429            targetLeft,
3430            verticalHeight,
3431            verticalOffset = 0,
3432            targetSlide,
3433            coef;
3434
3435        _.slideOffset = 0;
3436        verticalHeight = _.$slides.first().outerHeight(true);
3437
3438        if (_.options.infinite === true) {
3439            if (_.slideCount > _.options.slidesToShow) {
3440                _.slideOffset = (_.slideWidth * _.options.slidesToShow) * -1;
3441                coef = -1
3442
3443                if (_.options.vertical === true && _.options.centerMode === true) {
3444                    if (_.options.slidesToShow === 2) {
3445                        coef = -1.5;
3446                    } else if (_.options.slidesToShow === 1) {
3447                        coef = -2
vendor: 4,950 bytes, lines 3447-3576
3447
3448                    }
3449                }
3450                verticalOffset = (verticalHeight * _.options.slidesToShow) * coef;
3451            }
3452            if (_.slideCount % _.options.slidesToScroll !== 0) {
3453                if (slideIndex + _.options.slidesToScroll > _.slideCount && _.slideCount > _.options.slidesToShow) {
3454                    if (slideIndex > _.slideCount) {
3455                        _.slideOffset = ((_.options.slidesToShow - (slideIndex - _.slideCount)) * _.slideWidth) * -1;
3456                        verticalOffset = ((_.options.slidesToShow - (slideIndex - _.slideCount)) * verticalHeight) * -1;
3457                    } else {
3458                        _.slideOffset = ((_.slideCount % _.options.slidesToScroll) * _.slideWidth) * -1;
3459                        verticalOffset = ((_.slideCount % _.options.slidesToScroll) * verticalHeight) * -1;
3460                    }
3461                }
3462            }
3463        } else {
3464            if (slideIndex + _.options.slidesToShow > _.slideCount) {
3465                _.slideOffset = ((slideIndex + _.options.slidesToShow) - _.slideCount) * _.slideWidth;
3466                verticalOffset = ((slideIndex + _.options.slidesToShow) - _.slideCount) * verticalHeight;
3467            }
3468        }
3469
3470        if (_.slideCount <= _.options.slidesToShow) {
3471            _.slideOffset = 0;
3472            verticalOffset = 0;
3473        }
3474
3475        if (_.options.centerMode === true && _.slideCount <= _.options.slidesToShow) {
3476            _.slideOffset = ((_.slideWidth * Math.floor(_.options.slidesToShow)) / 2) - ((_.slideWidth * _.slideCount) / 2);
3477        } else if (_.options.centerMode === true && _.options.infinite === true) {
3478            _.slideOffset += _.slideWidth * Math.floor(_.options.slidesToShow / 2) - _.slideWidth;
3479        } else if (_.options.centerMode === true) {
3480            _.slideOffset = 0;
3481            _.slideOffset += _.slideWidth * Math.floor(_.options.slidesToShow / 2);
3482        }
3483
3484        if (_.options.vertical === false) {
3485            targetLeft = ((slideIndex * _.slideWidth) * -1) + _.slideOffset;
3486        } else {
3487            targetLeft = ((slideIndex * verticalHeight) * -1) + verticalOffset;
3488        }
3489
3490        if (_.options.variableWidth === true) {
3491
3492            if (_.slideCount <= _.options.slidesToShow || _.options.infinite === false) {
3493                targetSlide = _.$slideTrack.children('.slick-slide').eq(slideIndex);
3494            } else {
3495                targetSlide = _.$slideTrack.children('.slick-slide').eq(slideIndex + _.options.slidesToShow);
3496            }
3497
3498            if (_.options.rtl === true) {
3499                if (targetSlide[0]) {
3500                    targetLeft = (_.$slideTrack.width() - targetSlide[0].offsetLeft - targetSlide.width()) * -1;
3501                } else {
3502                    targetLeft =  0;
3503                }
3504            } else {
3505                targetLeft = targetSlide[0] ? targetSlide[0].offsetLeft * -1 : 0;
3506            }
3507
3508            if (_.options.centerMode === true) {
3509                if (_.slideCount <= _.options.slidesToShow || _.options.infinite === false) {
3510                    targetSlide = _.$slideTrack.children('.slick-slide').eq(slideIndex);
3511                } else {
3512                    targetSlide = _.$slideTrack.children('.slick-slide').eq(slideIndex + _.options.slidesToShow + 1);
3513                }
3514
3515                if (_.options.rtl === true) {
3516                    if (targetSlide[0]) {
3517                        targetLeft = (_.$slideTrack.width() - targetSlide[0].offsetLeft - targetSlide.width()) * -1;
3518                    } else {
3519                        targetLeft =  0;
3520                    }
3521                } else {
3522                    targetLeft = targetSlide[0] ? targetSlide[0].offsetLeft * -1 : 0;
3523                }
3524
3525                targetLeft += (_.$list.width() - targetSlide.outerWidth()) / 2;
3526            }
3527        }
3528
3529        return targetLeft;
3530
3531    };
3532
3533    Slick.prototype.getOption = Slick.prototype.slickGetOption = function(option) {
3534
3535        var _ = this;
3536
3537        return _.options[option];
3538
3539    };
3540
3541    Slick.prototype.getNavigableIndexes = function() {
3542
3543        var _ = this,
3544            breakPoint = 0,
3545            counter = 0,
3546            indexes = [],
3547            max;
3548
3549        if (_.options.infinite === false) {
3550            max = _.slideCount;
3551        } else {
3552            breakPoint = _.options.slidesToScroll * -1;
3553            counter = _.options.slidesToScroll * -1;
3554            max = _.slideCount * 2;
3555        }
3556
3557        while (breakPoint < max) {
3558            indexes.push(breakPoint);
3559            breakPoint = counter + _.options.slidesToScroll;
3560            counter += _.options.slidesToScroll <= _.options.slidesToShow ? _.options.slidesToScroll : _.options.slidesToShow;
3561        }
3562
3563        return indexes;
3564
3565    };
3566
3567    Slick.prototype.getSlick = function() {
3568
3569        return this;
3570
3571    };
3572
3573    Slick.prototype.getSlideCount = function() {
3574
3575        var _ = this,
3576            slidesTraversed, swipedSlide, 
3576swipeTarget, centerOffset;
3577
3578        centerOffset = _.options.centerMode === true ? Math.floor(_.$list.width() / 2) : 0;
3579        swipeTarget = (_.swipeLeft * -1) + centerOffset;
3580
3581        if (_.options.swipeToSlide === true) {
3582
3583            _.$slideTrack.find('.slick-slide').each(function(index, slide) {
3584
3585                var slideOuterWidth, slideOffset, slideRightBoundary;
3586                slideOuterWidth = $(slide).outerWidth();
3587                slideOffset = slide.offsetLeft;
3588                if (_.options.centerMode !== true) {
3589                    slideOffset += (slideOuterWidth / 2);
3590                }
3591
3592                slideRightBoundary = slideOffset + (slideOuterWidth);
3593
3594                if (swipeTarget < slideRightBoundary) {
3595                    swipedSlide = slide;
3596                    return false;
3597                }
3598            });
3599
3600            slidesTraversed = Math.abs($(swipedSlide).attr('data-slick-index') - _.currentSlide) || 1;
3601
3602            return slidesTraversed;
3603
3604        } else {
3605            return _.options.slidesToScroll;
3606        }
3607
3608    };
3609
3610    Slick.prototype.goTo = Slick.prototype.slickGoTo = function(slide, dontAnimate) {
3611
3612        var _ = this;
3613
3614        _.changeSlide({
3615            data: {
3616                message: 'index',
3617                index: parseInt(slide)
3618            }
3619        }, dontAnimate);
3620
3621    };
3622
3623    Slick.prototype.init = function(creation) {
3624
3625        var _ = this;
3626
3627        if (!$(_.$slider).hasClass('slick-initialized')) {
3628
3629            $(_.$slider).addClass('slick-initialized');
3630
3631            _.buildRows();
3632            _.buildOut();
3633            _.setProps();
3634            _.startLoad();
3635            _.loadSlider();
3636            _.initializeEvents();
3637            _.updateArrows();
3638            _.updateDots();
3639            _.checkResponsive(true);
3640            _.focusHandler();
3641
3642        }
3643
3644        if (creation) {
3645            _.$slider.trigger('init', [_]);
3646        }
3647
3648        if (_.options.accessibility === true) {
3649            _.initADA();
3650        }
3651
3652        if ( _.options.autoplay ) {
3653
3654            _.paused = false;
vendor: 1,103 bytes, lines 3655-3686
3655            _.autoPlay();
3656
3657        }
3658
3659    };
3660
3661    Slick.prototype.initADA = function() {
3662        var _ = this,
3663                numDotGroups = Math.ceil(_.slideCount / _.options.slidesToShow),
3664                tabControlIndexes = _.getNavigableIndexes().filter(function(val) {
3665                    return (val >= 0) && (val < _.slideCount);
3666                });
3667
3668        _.$slides.add(_.$slideTrack.find('.slick-cloned')).attr({
3669            'aria-hidden': 'true',
3670            'tabindex': '-1'
3671        }).find('a, input, button, select').attr({
3672            'tabindex': '-1'
3673        });
3674
3675        if (_.$dots !== null) {
3676            _.$slides.not(_.$slideTrack.find('.slick-cloned')).each(function(i) {
3677                var slideControlIndex = tabControlIndexes.indexOf(i);
3678
3679                $(this).attr({
3680                    'role': 'tabpanel',
3681                    'id': 'slick-slide' + _.instanceUid + i,
3682                    'tabindex': -1
3683                });
3684
3685                if (slideControlIndex !== -1) {
3686                   var ariaButtonControl = 'slick-slide-control' + _.instanceUid + slideControlIndex
vendor: 39,773 bytes, lines 3686-5062
3686
3687                   if ($('#' + ariaButtonControl).length) {
3688                     $(this).attr({
3689                         'aria-describedby': ariaButtonControl
3690                     });
3691                   }
3692                }
3693            });
3694
3695            _.$dots.attr('role', 'tablist').find('li').each(function(i) {
3696                var mappedSlideIndex = tabControlIndexes[i];
3697
3698                $(this).attr({
3699                    'role': 'presentation'
3700                });
3701
3702                $(this).find('button').first().attr({
3703                    'role': 'tab',
3704                    'id': 'slick-slide-control' + _.instanceUid + i,
3705                    'aria-controls': 'slick-slide' + _.instanceUid + mappedSlideIndex,
3706                    'aria-label': (i + 1) + ' of ' + numDotGroups,
3707                    'aria-selected': null,
3708                    'tabindex': '-1'
3709                });
3710
3711            }).eq(_.currentSlide).find('button').attr({
3712                'aria-selected': 'true',
3713                'tabindex': '0'
3714            }).end();
3715        }
3716
3717        for (var i=_.currentSlide, max=i+_.options.slidesToShow; i < max; i++) {
3718          if (_.options.focusOnChange) {
3719            _.$slides.eq(i).attr({'tabindex': '0'});
3720          } else {
3721            _.$slides.eq(i).removeAttr('tabindex');
3722          }
3723        }
3724
3725        _.activateADA();
3726
3727    };
3728
3729    Slick.prototype.initArrowEvents = function() {
3730
3731        var _ = this;
3732
3733        if (_.options.arrows === true && _.slideCount > _.options.slidesToShow) {
3734            _.$prevArrow
3735               .off('click.slick')
3736               .on('click.slick', {
3737                    message: 'previous'
3738               }, _.changeSlide);
3739            _.$nextArrow
3740               .off('click.slick')
3741               .on('click.slick', {
3742                    message: 'next'
3743               }, _.changeSlide);
3744
3745            if (_.options.accessibility === true) {
3746                _.$prevArrow.on('keydown.slick', _.keyHandler);
3747                _.$nextArrow.on('keydown.slick', _.keyHandler);
3748            }
3749        }
3750
3751    };
3752
3753    Slick.prototype.initDotEvents = function() {
3754
3755        var _ = this;
3756
3757        if (_.options.dots === true && _.slideCount > _.options.slidesToShow) {
3758            $('li', _.$dots).on('click.slick', {
3759                message: 'index'
3760            }, _.changeSlide);
3761
3762            if (_.options.accessibility === true) {
3763                _.$dots.on('keydown.slick', _.keyHandler);
3764            }
3765        }
3766
3767        if (_.options.dots === true && _.options.pauseOnDotsHover === true && _.slideCount > _.options.slidesToShow) {
3768
3769            $('li', _.$dots)
3770                .on('mouseenter.slick', $.proxy(_.interrupt, _, true))
3771                .on('mouseleave.slick', $.proxy(_.interrupt, _, false));
3772
3773        }
3774
3775    };
3776
3777    Slick.prototype.initSlideEvents = function() {
3778
3779        var _ = this;
3780
3781        if ( _.options.pauseOnHover ) {
3782
3783            _.$list.on('mouseenter.slick', $.proxy(_.interrupt, _, true));
3784            _.$list.on('mouseleave.slick', $.proxy(_.interrupt, _, false));
3785
3786        }
3787
3788    };
3789
3790    Slick.prototype.initializeEvents = function() {
3791
3792        var _ = this;
3793
3794        _.initArrowEvents();
3795
3796        _.initDotEvents();
3797        _.initSlideEvents();
3798
3799        _.$list.on('touchstart.slick mousedown.slick', {
3800            action: 'start'
3801        }, _.swipeHandler);
3802        _.$list.on('touchmove.slick mousemove.slick', {
3803            action: 'move'
3804        }, _.swipeHandler);
3805        _.$list.on('touchend.slick mouseup.slick', {
3806            action: 'end'
3807        }, _.swipeHandler);
3808        _.$list.on('touchcancel.slick mouseleave.slick', {
3809            action: 'end'
3810        }, _.swipeHandler);
3811
3812        _.$list.on('click.slick', _.clickHandler);
3813
3814        $(document).on(_.visibilityChange, $.proxy(_.visibility, _));
3815
3816        if (_.options.accessibility === true) {
3817            _.$list.on('keydown.slick', _.keyHandler);
3818        }
3819
3820        if (_.options.focusOnSelect === true) {
3821            $(_.$slideTrack).children().on('click.slick', _.selectHandler);
3822        }
3823
3824        $(window).on('orientationchange.slick.slick-' + _.instanceUid, $.proxy(_.orientationChange, _));
3825
3826        $(window).on('resize.slick.slick-' + _.instanceUid, $.proxy(_.resize, _));
3827
3828        $('[draggable!=true]', _.$slideTrack).on('dragstart', _.preventDefault);
3829
3830        $(window).on('load.slick.slick-' + _.instanceUid, _.setPosition);
3831        $(_.setPosition);
3832
3833    };
3834
3835    Slick.prototype.initUI = function() {
3836
3837        var _ = this;
3838
3839        if (_.options.arrows === true && _.slideCount > _.options.slidesToShow) {
3840
3841            _.$prevArrow.show();
3842            _.$nextArrow.show();
3843
3844        }
3845
3846        if (_.options.dots === true && _.slideCount > _.options.slidesToShow) {
3847
3848            _.$dots.show();
3849
3850        }
3851
3852    };
3853
3854    Slick.prototype.keyHandler = function(event) {
3855
3856        var _ = this;
3857         //Dont slide if the cursor is inside the form fields and arrow keys are pressed
3858        if(!event.target.tagName.match('TEXTAREA|INPUT|SELECT')) {
3859            if (event.keyCode === 37 && _.options.accessibility === true) {
3860                _.changeSlide({
3861                    data: {
3862                        message: _.options.rtl === true ? 'next' :  'previous'
3863                    }
3864                });
3865            } else if (event.keyCode === 39 && _.options.accessibility === true) {
3866                _.changeSlide({
3867                    data: {
3868                        message: _.options.rtl === true ? 'previous' : 'next'
3869                    }
3870                });
3871            }
3872        }
3873
3874    };
3875
3876    Slick.prototype.lazyLoad = function() {
3877
3878        var _ = this,
3879            loadRange, cloneRange, rangeStart, rangeEnd;
3880
3881        function loadImages(imagesScope) {
3882
3883            $('img[data-lazy]', imagesScope).each(function() {
3884
3885                var image = $(this),
3886                    imageSource = $(this).attr('data-lazy'),
3887                    imageSrcSet = $(this).attr('data-srcset'),
3888                    imageSizes  = $(this).attr('data-sizes') || _.$slider.attr('data-sizes'),
3889                    imageToLoad = document.createElement('img');
3890
3891                imageToLoad.onload = function() {
3892
3893                    image
3894                        .animate({ opacity: 0 }, 100, function() {
3895
3896                            if (imageSrcSet) {
3897                                image
3898                                    .attr('srcset', imageSrcSet );
3899
3900                                if (imageSizes) {
3901                                    image
3902                                        .attr('sizes', imageSizes );
3903                                }
3904                            }
3905
3906                            image
3907                                .attr('src', imageSource)
3908                                .animate({ opacity: 1 }, 200, function() {
3909                                    image
3910                                        .removeAttr('data-lazy data-srcset data-sizes')
3911                                        .removeClass('slick-loading');
3912                                });
3913                            _.$slider.trigger('lazyLoaded', [_, image, imageSource]);
3914                        });
3915
3916                };
3917
3918                imageToLoad.onerror = function() {
3919
3920                    image
3921                        .removeAttr( 'data-lazy' )
3922                        .removeClass( 'slick-loading' )
3923                        .addClass( 'slick-lazyload-error' );
3924
3925                    _.$slider.trigger('lazyLoadError', [ _, image, imageSource ]);
3926
3927                };
3928
3929                imageToLoad.src = imageSource;
3930
3931            });
3932
3933        }
3934
3935        if (_.options.centerMode === true) {
3936            if (_.options.infinite === true) {
3937                rangeStart = _.currentSlide + (_.options.slidesToShow / 2 + 1);
3938                rangeEnd = rangeStart + _.options.slidesToShow + 2;
3939            } else {
3940                rangeStart = Math.max(0, _.currentSlide - (_.options.slidesToShow / 2 + 1));
3941                rangeEnd = 2 + (_.options.slidesToShow / 2 + 1) + _.currentSlide;
3942            }
3943        } else {
3944            rangeStart = _.options.infinite ? _.options.slidesToShow + _.currentSlide : _.currentSlide;
3945            rangeEnd = Math.ceil(rangeStart + _.options.slidesToShow);
3946            if (_.options.fade === true) {
3947                if (rangeStart > 0) rangeStart--;
3948                if (rangeEnd <= _.slideCount) rangeEnd++;
3949            }
3950        }
3951
3952        loadRange = _.$slider.find('.slick-slide').slice(rangeStart, rangeEnd);
3953
3954        if (_.options.lazyLoad === 'anticipated') {
3955            var prevSlide = rangeStart - 1,
3956                nextSlide = rangeEnd,
3957                $slides = _.$slider.find('.slick-slide');
3958
3959            for (var i = 0; i < _.options.slidesToScroll; i++) {
3960                if (prevSlide < 0) prevSlide = _.slideCount - 1;
3961                loadRange = loadRange.add($slides.eq(prevSlide));
3962                loadRange = loadRange.add($slides.eq(nextSlide));
3963                prevSlide--;
3964                nextSlide++;
3965            }
3966        }
3967
3968        loadImages(loadRange);
3969
3970        if (_.slideCount <= _.options.slidesToShow) {
3971            cloneRange = _.$slider.find('.slick-slide');
3972            loadImages(cloneRange);
3973        } else
3974        if (_.currentSlide >= _.slideCount - _.options.slidesToShow) {
3975            cloneRange = _.$slider.find('.slick-cloned').slice(0, _.options.slidesToShow);
3976            loadImages(cloneRange);
3977        } else if (_.currentSlide === 0) {
3978            cloneRange = _.$slider.find('.slick-cloned').slice(_.options.slidesToShow * -1);
3979            loadImages(cloneRange);
3980        }
3981
3982    };
3983
3984    Slick.prototype.loadSlider = function() {
3985
3986        var _ = this;
3987
3988        _.setPosition();
3989
3990        _.$slideTrack.css({
3991            opacity: 1
3992        });
3993
3994        _.$slider.removeClass('slick-loading');
3995
3996        _.initUI();
3997
3998        if (_.options.lazyLoad === 'progressive') {
3999            _.progressiveLazyLoad();
4000        }
4001
4002    };
4003
4004    Slick.prototype.next = Slick.prototype.slickNext = function() {
4005
4006        var _ = this;
4007
4008        _.changeSlide({
4009            data: {
4010                message: 'next'
4011            }
4012        });
4013
4014    };
4015
4016    Slick.prototype.orientationChange = function() {
4017
4018        var _ = this;
4019
4020        _.checkResponsive();
4021        _.setPosition();
4022
4023    };
4024
4025    Slick.prototype.pause = Slick.prototype.slickPause = function() {
4026
4027        var _ = this;
4028
4029        _.autoPlayClear();
4030        _.paused = true;
4031
4032    };
4033
4034    Slick.prototype.play = Slick.prototype.slickPlay = function() {
4035
4036        var _ = this;
4037
4038        _.autoPlay();
4039        _.options.autoplay = true;
4040        _.paused = false;
4041        _.focussed = false;
4042        _.interrupted = false;
4043
4044    };
4045
4046    Slick.prototype.postSlide = function(index) {
4047
4048        var _ = this;
4049
4050        if( !_.unslicked ) {
4051
4052            _.$slider.trigger('afterChange', [_, index]);
4053
4054            _.animating = false;
4055
4056            if (_.slideCount > _.options.slidesToShow) {
4057                _.setPosition();
4058            }
4059
4060            _.swipeLeft = null;
4061
4062            if ( _.options.autoplay ) {
4063                _.autoPlay();
4064            }
4065
4066            if (_.options.accessibility === true) {
4067                _.initADA();
4068
4069                if (_.options.focusOnChange) {
4070                    var $currentSlide = $(_.$slides.get(_.currentSlide));
4071                    $currentSlide.attr('tabindex', 0).focus();
4072                }
4073            }
4074
4075        }
4076
4077    };
4078
4079    Slick.prototype.prev = Slick.prototype.slickPrev = function() {
4080
4081        var _ = this;
4082
4083        _.changeSlide({
4084            data: {
4085                message: 'previous'
4086            }
4087        });
4088
4089    };
4090
4091    Slick.prototype.preventDefault = function(event) {
4092
4093        event.preventDefault();
4094
4095    };
4096
4097    Slick.prototype.progressiveLazyLoad = function( tryCount ) {
4098
4099        tryCount = tryCount || 1;
4100
4101        var _ = this,
4102            $imgsToLoad = $( 'img[data-lazy]', _.$slider ),
4103            image,
4104            imageSource,
4105            imageSrcSet,
4106            imageSizes,
4107            imageToLoad;
4108
4109        if ( $imgsToLoad.length ) {
4110
4111            image = $imgsToLoad.first();
4112            imageSource = image.attr('data-lazy');
4113            imageSrcSet = image.attr('data-srcset');
4114            imageSizes  = image.attr('data-sizes') || _.$slider.attr('data-sizes');
4115            imageToLoad = document.createElement('img');
4116
4117            imageToLoad.onload = function() {
4118
4119                if (imageSrcSet) {
4120                    image
4121                        .attr('srcset', imageSrcSet );
4122
4123                    if (imageSizes) {
4124                        image
4125                            .attr('sizes', imageSizes );
4126                    }
4127                }
4128
4129                image
4130                    .attr( 'src', imageSource )
4131                    .removeAttr('data-lazy data-srcset data-sizes')
4132                    .removeClass('slick-loading');
4133
4134                if ( _.options.adaptiveHeight === true ) {
4135                    _.setPosition();
4136                }
4137
4138                _.$slider.trigger('lazyLoaded', [ _, image, imageSource ]);
4139                _.progressiveLazyLoad();
4140
4141            };
4142
4143            imageToLoad.onerror = function() {
4144
4145                if ( tryCount < 3 ) {
4146
4147                    /**
4148                     * try to load the image 3 times,
4149                     * leave a slight delay so we don't get
4150                     * servers blocking the request.
4151                     */
4152                    setTimeout( function() {
4153                        _.progressiveLazyLoad( tryCount + 1 );
4154                    }, 500 );
4155
4156                } else {
4157
4158                    image
4159                        .removeAttr( 'data-lazy' )
4160                        .removeClass( 'slick-loading' )
4161                        .addClass( 'slick-lazyload-error' );
4162
4163                    _.$slider.trigger('lazyLoadError', [ _, image, imageSource ]);
4164
4165                    _.progressiveLazyLoad();
4166
4167                }
4168
4169            };
4170
4171            imageToLoad.src = imageSource;
4172
4173        } else {
4174
4175            _.$slider.trigger('allImagesLoaded', [ _ ]);
4176
4177        }
4178
4179    };
4180
4181    Slick.prototype.refresh = function( initializing ) {
4182
4183        var _ = this, currentSlide, lastVisibleIndex;
4184
4185        lastVisibleIndex = _.slideCount - _.options.slidesToShow;
4186
4187        // in non-infinite sliders, we don't want to go past the
4188        // last visible index.
4189        if( !_.options.infinite && ( _.currentSlide > lastVisibleIndex )) {
4190            _.currentSlide = lastVisibleIndex;
4191        }
4192
4193        // if less slides than to show, go to start.
4194        if ( _.slideCount <= _.options.slidesToShow ) {
4195            _.currentSlide = 0;
4196
4197        }
4198
4199        currentSlide = _.currentSlide;
4200
4201        _.destroy(true);
4202
4203        $.extend(_, _.initials, { currentSlide: currentSlide });
4204
4205        _.init();
4206
4207        if( !initializing ) {
4208
4209            _.changeSlide({
4210                data: {
4211                    message: 'index',
4212                    index: currentSlide
4213                }
4214            }, false);
4215
4216        }
4217
4218    };
4219
4220    Slick.prototype.registerBreakpoints = function() {
4221
4222        var _ = this, breakpoint, currentBreakpoint, l,
4223            responsiveSettings = _.options.responsive || null;
4224
4225        if ( $.type(responsiveSettings) === 'array' && responsiveSettings.length ) {
4226
4227            _.respondTo = _.options.respondTo || 'window';
4228
4229            for ( breakpoint in responsiveSettings ) {
4230
4231                l = _.breakpoints.length-1;
4232
4233                if (responsiveSettings.hasOwnProperty(breakpoint)) {
4234                    currentBreakpoint = responsiveSettings[breakpoint].breakpoint;
4235
4236                    // loop through the breakpoints and cut out any existing
4237                    // ones with the same breakpoint number, we don't want dupes.
4238                    while( l >= 0 ) {
4239                        if( _.breakpoints[l] && _.breakpoints[l] === currentBreakpoint ) {
4240                            _.breakpoints.splice(l,1);
4241                        }
4242                        l--;
4243                    }
4244
4245                    _.breakpoints.push(currentBreakpoint);
4246                    _.breakpointSettings[currentBreakpoint] = responsiveSettings[breakpoint].settings;
4247
4248                }
4249
4250            }
4251
4252            _.breakpoints.sort(function(a, b) {
4253                return ( _.options.mobileFirst ) ? a-b : b-a;
4254            });
4255
4256        }
4257
4258    };
4259
4260    Slick.prototype.reinit = function() {
4261
4262        var _ = this;
4263
4264        _.$slides =
4265            _.$slideTrack
4266                .children(_.options.slide)
4267                .addClass('slick-slide');
4268
4269        _.slideCount = _.$slides.length;
4270
4271        if (_.currentSlide >= _.slideCount && _.currentSlide !== 0) {
4272            _.currentSlide = _.currentSlide - _.options.slidesToScroll;
4273        }
4274
4275        if (_.slideCount <= _.options.slidesToShow) {
4276            _.currentSlide = 0;
4277        }
4278
4279        _.registerBreakpoints();
4280
4281        _.setProps();
4282        _.setupInfinite();
4283        _.buildArrows();
4284        _.updateArrows();
4285        _.initArrowEvents();
4286        _.buildDots();
4287        _.updateDots();
4288        _.initDotEvents();
4289        _.cleanUpSlideEvents();
4290        _.initSlideEvents();
4291
4292        _.checkResponsive(false, true);
4293
4294        if (_.options.focusOnSelect === true) {
4295            $(_.$slideTrack).children().on('click.slick', _.selectHandler);
4296        }
4297
4298        _.setSlideClasses(typeof _.currentSlide === 'number' ? _.currentSlide : 0);
4299
4300        _.setPosition();
4301        _.focusHandler();
4302
4303        _.paused = !_.options.autoplay;
4304        _.autoPlay();
4305
4306        _.$slider.trigger('reInit', [_]);
4307
4308    };
4309
4310    Slick.prototype.resize = function() {
4311
4312        var _ = this;
4313
4314        if ($(window).width() !== _.windowWidth) {
4315            clearTimeout(_.windowDelay);
4316            _.windowDelay = window.setTimeout(function() {
4317                _.windowWidth = $(window).width();
4318                _.checkResponsive();
4319                if( !_.unslicked ) { _.setPosition(); }
4320            }, 50);
4321        }
4322    };
4323
4324    Slick.prototype.removeSlide = Slick.prototype.slickRemove = function(index, removeBefore, removeAll) {
4325
4326        var _ = this;
4327
4328        if (typeof(index) === 'boolean') {
4329            removeBefore = index;
4330            index = removeBefore === true ? 0 : _.slideCount - 1;
4331        } else {
4332            index = removeBefore === true ? --index : index;
4333        }
4334
4335        if (_.slideCount < 1 || index < 0 || index > _.slideCount - 1) {
4336            return false;
4337        }
4338
4339        _.unload();
4340
4341        if (removeAll === true) {
4342            _.$slideTrack.children().remove();
4343        } else {
4344            _.$slideTrack.children(this.options.slide).eq(index).remove();
4345        }
4346
4347        _.$slides = _.$slideTrack.children(this.options.slide);
4348
4349        _.$slideTrack.children(this.options.slide).detach();
4350
4351        _.$slideTrack.append(_.$slides);
4352
4353        _.$slidesCache = _.$slides;
4354
4355        _.reinit();
4356
4357    };
4358
4359    Slick.prototype.setCSS = function(position) {
4360
4361        var _ = this,
4362            positionProps = {},
4363            x, y;
4364
4365        if (_.options.rtl === true) {
4366            position = -position;
4367        }
4368        x = _.positionProp == 'left' ? Math.ceil(position) + 'px' : '0px';
4369        y = _.positionProp == 'top' ? Math.ceil(position) + 'px' : '0px';
4370
4371        positionProps[_.positionProp] = position;
4372
4373        if (_.transformsEnabled === false) {
4374            _.$slideTrack.css(positionProps);
4375        } else {
4376            positionProps = {};
4377            if (_.cssTransitions === false) {
4378                positionProps[_.animType] = 'translate(' + x + ', ' + y + ')';
4379                _.$slideTrack.css(positionProps);
4380            } else {
4381                positionProps[_.animType] = 'translate3d(' + x + ', ' + y + ', 0px)';
4382                _.$slideTrack.css(positionProps);
4383            }
4384        }
4385
4386    };
4387
4388    Slick.prototype.setDimensions = function() {
4389
4390        var _ = this;
4391
4392        if (_.options.vertical === false) {
4393            if (_.options.centerMode === true) {
4394                _.$list.css({
4395                    padding: ('0px ' + _.options.centerPadding)
4396                });
4397            }
4398        } else {
4399            _.$list.height(_.$slides.first().outerHeight(true) * _.options.slidesToShow);
4400            if (_.options.centerMode === true) {
4401                _.$list.css({
4402                    padding: (_.options.centerPadding + ' 0px')
4403                });
4404            }
4405        }
4406
4407        _.listWidth = _.$list.width();
4408        _.listHeight = _.$list.height();
4409
4410
4411        if (_.options.vertical === false && _.options.variableWidth === false) {
4412            _.slideWidth = Math.ceil(_.listWidth / _.options.slidesToShow);
4413            _.$slideTrack.width(Math.ceil((_.slideWidth * _.$slideTrack.children('.slick-slide').length)));
4414
4415        } else if (_.options.variableWidth === true) {
4416            _.$slideTrack.width(5000 * _.slideCount);
4417        } else {
4418            _.slideWidth = Math.ceil(_.listWidth);
4419            _.$slideTrack.height(Math.ceil((_.$slides.first().outerHeight(true) * _.$slideTrack.children('.slick-slide').length)));
4420        }
4421
4422        var offset = _.$slides.first().outerWidth(true) - _.$slides.first().width();
4423        if (_.options.variableWidth === false) _.$slideTrack.children('.slick-slide').width(_.slideWidth - offset);
4424
4425    };
4426
4427    Slick.prototype.setFade = function() {
4428
4429        var _ = this,
4430            targetLeft;
4431
4432        _.$slides.each(function(index, element) {
4433            targetLeft = (_.slideWidth * index) * -1;
4434            if (_.options.rtl === true) {
4435                $(element).css({
4436                    position: 'relative',
4437                    right: targetLeft,
4438                    top: 0,
4439                    zIndex: _.options.zIndex - 2,
4440                    opacity: 0
4441                });
4442            } else {
4443                $(element).css({
4444                    position: 'relative',
4445                    left: targetLeft,
4446                    top: 0,
4447                    zIndex: _.options.zIndex - 2,
4448                    opacity: 0
4449                });
4450            }
4451        });
4452
4453        _.$slides.eq(_.currentSlide).css({
4454            zIndex: _.options.zIndex - 1,
4455            opacity: 1
4456        });
4457
4458    };
4459
4460    Slick.prototype.setHeight = function() {
4461
4462        var _ = this;
4463
4464        if (_.options.slidesToShow === 1 && _.options.adaptiveHeight === true && _.options.vertical === false) {
4465            var targetHeight = _.$slides.eq(_.currentSlide).outerHeight(true);
4466            _.$list.css('height', targetHeight);
4467        }
4468
4469    };
4470
4471    Slick.prototype.setOption =
4472    Slick.prototype.slickSetOption = function() {
4473
4474        /**
4475         * accepts arguments in format of:
4476         *
4477         *  - for changing a single option's value:
4478         *     .slick("setOption", option, value, refresh )
4479         *
4480         *  - for changing a set of responsive options:
4481         *     .slick("setOption", 'responsive', [{}, ...], refresh )
4482         *
4483         *  - for updating multiple values at once (not responsive)
4484         *     .slick("setOption", { 'option': value, ... }, refresh )
4485         */
4486
4487        var _ = this, l, item, option, value, refresh = false, type;
4488
4489        if( $.type( arguments[0] ) === 'object' ) {
4490
4491            option =  arguments[0];
4492            refresh = arguments[1];
4493            type = 'multiple';
4494
4495        } else if ( $.type( arguments[0] ) === 'string' ) {
4496
4497            option =  arguments[0];
4498            value = arguments[1];
4499            refresh = arguments[2];
4500
4501            if ( arguments[0] === 'responsive' && $.type( arguments[1] ) === 'array' ) {
4502
4503                type = 'responsive';
4504
4505            } else if ( typeof arguments[1] !== 'undefined' ) {
4506
4507                type = 'single';
4508
4509            }
4510
4511        }
4512
4513        if ( type === 'single' ) {
4514
4515            _.options[option] = value;
4516
4517
4518        } else if ( type === 'multiple' ) {
4519
4520            $.each( option , function( opt, val ) {
4521
4522                _.options[opt] = val;
4523
4524            });
4525
4526
4527        } else if ( type === 'responsive' ) {
4528
4529            for ( item in value ) {
4530
4531                if( $.type( _.options.responsive ) !== 'array' ) {
4532
4533                    _.options.responsive = [ value[item] ];
4534
4535                } else {
4536
4537                    l = _.options.responsive.length-1;
4538
4539                    // loop through the responsive object and splice out duplicates.
4540                    while( l >= 0 ) {
4541
4542                        if( _.options.responsive[l].breakpoint === value[item].breakpoint ) {
4543
4544                            _.options.responsive.splice(l,1);
4545
4546                        }
4547
4548                        l--;
4549
4550                    }
4551
4552                    _.options.responsive.push( value[item] );
4553
4554                }
4555
4556            }
4557
4558        }
4559
4560        if ( refresh ) {
4561
4562            _.unload();
4563            _.reinit();
4564
4565        }
4566
4567    };
4568
4569    Slick.prototype.setPosition = function() {
4570
4571        var _ = this;
4572
4573        _.setDimensions();
4574
4575        _.setHeight();
4576
4577        if (_.options.fade === false) {
4578            _.setCSS(_.getLeft(_.currentSlide));
4579        } else {
4580            _.setFade();
4581        }
4582
4583        _.$slider.trigger('setPosition', [_]);
4584
4585    };
4586
4587    Slick.prototype.setProps = function() {
4588
4589        var _ = this,
4590            bodyStyle = document.body.style;
4591
4592        _.positionProp = _.options.vertical === true ? 'top' : 'left';
4593
4594        if (_.positionProp === 'top') {
4595            _.$slider.addClass('slick-vertical');
4596        } else {
4597            _.$slider.removeClass('slick-vertical');
4598        }
4599
4600        if (bodyStyle.WebkitTransition !== undefined ||
4601            bodyStyle.MozTransition !== undefined ||
4602            bodyStyle.msTransition !== undefined) {
4603            if (_.options.useCSS === true) {
4604                _.cssTransitions = true;
4605            }
4606        }
4607
4608        if ( _.options.fade ) {
4609            if ( typeof _.options.zIndex === 'number' ) {
4610                if( _.options.zIndex < 3 ) {
4611                    _.options.zIndex = 3;
4612                }
4613            } else {
4614                _.options.zIndex = _.defaults.zIndex;
4615            }
4616        }
4617
4618        if (bodyStyle.OTransform !== undefined) {
4619            _.animType = 'OTransform';
4620            _.transformType = '-o-transform';
4621            _.transitionType = 'OTransition';
4622            if (bodyStyle.perspectiveProperty === undefined && bodyStyle.webkitPerspective === undefined) _.animType = false;
4623        }
4624        if (bodyStyle.MozTransform !== undefined) {
4625            _.animType = 'MozTransform';
4626            _.transformType = '-moz-transform';
4627            _.transitionType = 'MozTransition';
4628            if (bodyStyle.perspectiveProperty === undefined && bodyStyle.MozPerspective === undefined) _.animType = false;
4629        }
4630        if (bodyStyle.webkitTransform !== undefined) {
4631            _.animType = 'webkitTransform';
4632            _.transformType = '-webkit-transform';
4633            _.transitionType = 'webkitTransition';
4634            if (bodyStyle.perspectiveProperty === undefined && bodyStyle.webkitPerspective === undefined) _.animType = false;
4635        }
4636        if (bodyStyle.msTransform !== undefined) {
4637            _.animType = 'msTransform';
4638            _.transformType = '-ms-transform';
4639            _.transitionType = 'msTransition';
4640            if (bodyStyle.msTransform === undefined) _.animType = false;
4641        }
4642        if (bodyStyle.transform !== undefined && _.animType !== false) {
4643            _.animType = 'transform';
4644            _.transformType = 'transform';
4645            _.transitionType = 'transition';
4646        }
4647        _.transformsEnabled = _.options.useTransform && (_.animType !== null && _.animType !== false);
4648    };
4649
4650
4651    Slick.prototype.setSlideClasses = function(index) {
4652
4653        var _ = this,
4654            centerOffset, allSlides, indexOffset, remainder;
4655
4656        allSlides = _.$slider
4657            .find('.slick-slide')
4658            .removeClass('slick-active slick-center slick-current')
4659            .attr('aria-hidden', 'true');
4660
4661        _.$slides
4662            .eq(index)
4663            .addClass('slick-current');
4664
4665        if (_.options.centerMode === true) {
4666
4667            var evenCoef = _.options.slidesToShow % 2 === 0 ? 1 : 0;
4668
4669            centerOffset = Math.floor(_.options.slidesToShow / 2);
4670
4671            if (_.options.infinite === true) {
4672
4673                if (index >= centerOffset && index <= (_.slideCount - 1) - centerOffset) {
4674                    _.$slides
4675                        .slice(index - centerOffset + evenCoef, index + centerOffset + 1)
4676                        .addClass('slick-active')
4677                        .attr('aria-hidden', 'false');
4678
4679                } else {
4680
4681                    indexOffset = _.options.slidesToShow + index;
4682                    allSlides
4683                        .slice(indexOffset - centerOffset + 1 + evenCoef, indexOffset + centerOffset + 2)
4684                        .addClass('slick-active')
4685                        .attr('aria-hidden', 'false');
4686
4687                }
4688
4689                if (index === 0) {
4690
4691                    allSlides
4692                        .eq(allSlides.length - 1 - _.options.slidesToShow)
4693                        .addClass('slick-center');
4694
4695                } else if (index === _.slideCount - 1) {
4696
4697                    allSlides
4698                        .eq(_.options.slidesToShow)
4699                        .addClass('slick-center');
4700
4701                }
4702
4703            }
4704
4705            _.$slides
4706                .eq(index)
4707                .addClass('slick-center');
4708
4709        } else {
4710
4711            if (index >= 0 && index <= (_.slideCount - _.options.slidesToShow)) {
4712
4713                _.$slides
4714                    .slice(index, index + _.options.slidesToShow)
4715                    .addClass('slick-active')
4716                    .attr('aria-hidden', 'false');
4717
4718            } else if (allSlides.length <= _.options.slidesToShow) {
4719
4720                allSlides
4721                    .addClass('slick-active')
4722                    .attr('aria-hidden', 'false');
4723
4724            } else {
4725
4726                remainder = _.slideCount % _.options.slidesToShow;
4727                indexOffset = _.options.infinite === true ? _.options.slidesToShow + index : index;
4728
4729                if (_.options.slidesToShow == _.options.slidesToScroll && (_.slideCount - index) < _.options.slidesToShow) {
4730
4731                    allSlides
4732                        .slice(indexOffset - (_.options.slidesToShow - remainder), indexOffset + remainder)
4733                        .addClass('slick-active')
4734                        .attr('aria-hidden', 'false');
4735
4736                } else {
4737
4738                    allSlides
4739                        .slice(indexOffset, indexOffset + _.options.slidesToShow)
4740                        .addClass('slick-active')
4741                        .attr('aria-hidden', 'false');
4742
4743                }
4744
4745            }
4746
4747        }
4748
4749        if (_.options.lazyLoad === 'ondemand' || _.options.lazyLoad === 'anticipated') {
4750            _.lazyLoad();
4751        }
4752    };
4753
4754    Slick.prototype.setupInfinite = function() {
4755
4756        var _ = this,
4757            i, slideIndex, infiniteCount;
4758
4759        if (_.options.fade === true) {
4760            _.options.centerMode = false;
4761        }
4762
4763        if (_.options.infinite === true && _.options.fade === false) {
4764
4765            slideIndex = null;
4766
4767            if (_.slideCount > _.options.slidesToShow) {
4768
4769                if (_.options.centerMode === true) {
4770                    infiniteCount = _.options.slidesToShow + 1;
4771                } else {
4772                    infiniteCount = _.options.slidesToShow;
4773                }
4774
4775                for (i = _.slideCount; i > (_.slideCount -
4776                        infiniteCount); i -= 1) {
4777                    slideIndex = i - 1;
4778                    $(_.$slides[slideIndex]).clone(true).attr('id', '')
4779                        .attr('data-slick-index', slideIndex - _.slideCount)
4780                        .prependTo(_.$slideTrack).addClass('slick-cloned');
4781                }
4782                for (i = 0; i < infiniteCount  + _.slideCount; i += 1) {
4783                    slideIndex = i;
4784                    $(_.$slides[slideIndex]).clone(true).attr('id', '')
4785                        .attr('data-slick-index', slideIndex + _.slideCount)
4786                        .appendTo(_.$slideTrack).addClass('slick-cloned');
4787                }
4788                _.$slideTrack.find('.slick-cloned').find('[id]').each(function() {
4789                    $(this).attr('id', '');
4790                });
4791
4792            }
4793
4794        }
4795
4796    };
4797
4798    Slick.prototype.interrupt = function( toggle ) {
4799
4800        var _ = this;
4801
4802        if( !toggle ) {
4803            _.autoPlay();
4804        }
4805        _.interrupted = toggle;
4806
4807    };
4808
4809    Slick.prototype.selectHandler = function(event) {
4810
4811        var _ = this;
4812
4813        var targetElement =
4814            $(event.target).is('.slick-slide') ?
4815                $(event.target) :
4816                $(event.target).parents('.slick-slide');
4817
4818        var index = parseInt(targetElement.attr('data-slick-index'));
4819
4820        if (!index) index = 0;
4821
4822        if (_.slideCount <= _.options.slidesToShow) {
4823
4824            _.slideHandler(index, false, true);
4825            return;
4826
4827        }
4828
4829        _.slideHandler(index);
4830
4831    };
4832
4833    Slick.prototype.slideHandler = function(index, sync, dontAnimate) {
4834
4835        var targetSlide, animSlide, oldSlide, slideLeft, targetLeft = null,
4836            _ = this, navTarget;
4837
4838        sync = sync || false;
4839
4840        if (_.animating === true && _.options.waitForAnimate === true) {
4841            return;
4842        }
4843
4844        if (_.options.fade === true && _.currentSlide === index) {
4845            return;
4846        }
4847
4848        if (sync === false) {
4849            _.asNavFor(index);
4850        }
4851
4852        targetSlide = index;
4853        targetLeft = _.getLeft(targetSlide);
4854        slideLeft = _.getLeft(_.currentSlide);
4855
4856        _.currentLeft = _.swipeLeft === null ? slideLeft : _.swipeLeft;
4857
4858        if (_.options.infinite === false && _.options.centerMode === false && (index < 0 || index > _.getDotCount() * _.options.slidesToScroll)) {
4859            if (_.options.fade === false) {
4860                targetSlide = _.currentSlide;
4861                if (dontAnimate !== true && _.slideCount > _.options.slidesToShow) {
4862                    _.animateSlide(slideLeft, function() {
4863                        _.postSlide(targetSlide);
4864                    });
4865                } else {
4866                    _.postSlide(targetSlide);
4867                }
4868            }
4869            return;
4870        } else if (_.options.infinite === false && _.options.centerMode === true && (index < 0 || index > (_.slideCount - _.options.slidesToScroll))) {
4871            if (_.options.fade === false) {
4872                targetSlide = _.currentSlide;
4873                if (dontAnimate !== true && _.slideCount > _.options.slidesToShow) {
4874                    _.animateSlide(slideLeft, function() {
4875                        _.postSlide(targetSlide);
4876                    });
4877                } else {
4878                    _.postSlide(targetSlide);
4879                }
4880            }
4881            return;
4882        }
4883
4884        if ( _.options.autoplay ) {
4885            clearInterval(_.autoPlayTimer);
4886        }
4887
4888        if (targetSlide < 0) {
4889            if (_.slideCount % _.options.slidesToScroll !== 0) {
4890                animSlide = _.slideCount - (_.slideCount % _.options.slidesToScroll);
4891            } else {
4892                animSlide = _.slideCount + targetSlide;
4893            }
4894        } else if (targetSlide >= _.slideCount) {
4895            if (_.slideCount % _.options.slidesToScroll !== 0) {
4896                animSlide = 0;
4897            } else {
4898                animSlide = targetSlide - _.slideCount;
4899            }
4900        } else {
4901            animSlide = targetSlide;
4902        }
4903
4904        _.animating = true;
4905
4906        _.$slider.trigger('beforeChange', [_, _.currentSlide, animSlide]);
4907
4908        oldSlide = _.currentSlide;
4909        _.currentSlide = animSlide;
4910
4911        _.setSlideClasses(_.currentSlide);
4912
4913        if ( _.options.asNavFor ) {
4914
4915            navTarget = _.getNavTarget();
4916            navTarget = navTarget.slick('getSlick');
4917
4918            if ( navTarget.slideCount <= navTarget.options.slidesToShow ) {
4919                navTarget.setSlideClasses(_.currentSlide);
4920            }
4921
4922        }
4923
4924        _.updateDots();
4925        _.updateArrows();
4926
4927        if (_.options.fade === true) {
4928            if (dontAnimate !== true) {
4929
4930                _.fadeSlideOut(oldSlide);
4931
4932                _.fadeSlide(animSlide, function() {
4933                    _.postSlide(animSlide);
4934                });
4935
4936            } else {
4937                _.postSlide(animSlide);
4938            }
4939            _.animateHeight();
4940            return;
4941        }
4942
4943        if (dontAnimate !== true && _.slideCount > _.options.slidesToShow) {
4944            _.animateSlide(targetLeft, function() {
4945                _.postSlide(animSlide);
4946            });
4947        } else {
4948            _.postSlide(animSlide);
4949        }
4950
4951    };
4952
4953    Slick.prototype.startLoad = function() {
4954
4955        var _ = this;
4956
4957        if (_.options.arrows === true && _.slideCount > _.options.slidesToShow) {
4958
4959            _.$prevArrow.hide();
4960            _.$nextArrow.hide();
4961
4962        }
4963
4964        if (_.options.dots === true && _.slideCount > _.options.slidesToShow) {
4965
4966            _.$dots.hide();
4967
4968        }
4969
4970        _.$slider.addClass('slick-loading');
4971
4972    };
4973
4974    Slick.prototype.swipeDirection = function() {
4975
4976        var xDist, yDist, r, swipeAngle, _ = this;
4977
4978        xDist = _.touchObject.startX - _.touchObject.curX;
4979        yDist = _.touchObject.startY - _.touchObject.curY;
4980        r = Math.atan2(yDist, xDist);
4981
4982        swipeAngle = Math.round(r * 180 / Math.PI);
4983        if (swipeAngle < 0) {
4984            swipeAngle = 360 - Math.abs(swipeAngle);
4985        }
4986
4987        if ((swipeAngle <= 45) && (swipeAngle >= 0)) {
4988            return (_.options.rtl === false ? 'left' : 'right');
4989        }
4990        if ((swipeAngle <= 360) && (swipeAngle >= 315)) {
4991            return (_.options.rtl === false ? 'left' : 'right');
4992        }
4993        if ((swipeAngle >= 135) && (swipeAngle <= 225)) {
4994            return (_.options.rtl === false ? 'right' : 'left');
4995        }
4996        if (_.options.verticalSwiping === true) {
4997            if ((swipeAngle >= 35) && (swipeAngle <= 135)) {
4998                return 'down';
4999            } else {
5000                return 'up';
5001            }
5002        }
5003
5004        return 'vertical';
5005
5006    };
5007
5008    Slick.prototype.swipeEnd = function(event) {
5009
5010        var _ = this,
5011            slideCount,
5012            direction;
5013
5014        _.dragging = false;
5015        _.swiping = false;
5016
5017        if (_.scrolling) {
5018            _.scrolling = false;
5019            return false;
5020        }
5021
5022        _.interrupted = false;
5023        _.shouldClick = ( _.touchObject.swipeLength > 10 ) ? false : true;
5024
5025        if ( _.touchObject.curX === undefined ) {
5026            return false;
5027        }
5028
5029        if ( _.touchObject.edgeHit === true ) {
5030            _.$slider.trigger('edge', [_, _.swipeDirection() ]);
5031        }
5032
5033        if ( _.touchObject.swipeLength >= _.touchObject.minSwipe ) {
5034
5035            direction = _.swipeDirection();
5036
5037            switch ( direction ) {
5038
5039                case 'left':
5040                case 'down':
5041
5042                    slideCount =
5043                        _.options.swipeToSlide ?
5044                            _.checkNavigable( _.currentSlide + _.getSlideCount() ) :
5045                            _.currentSlide + _.getSlideCount();
5046
5047                    _.currentDirection = 0;
5048
5049                    break;
5050
5051                case 'right':
5052                case 'up':
5053
5054                    slideCount =
5055                        _.options.swipeToSlide ?
5056                            _.checkNavigable( _.currentSlide - _.getSlideCount() ) :
5057                            _.currentSlide - _.getSlideCount();
5058
5059                    _.currentDirection = 1;
5060
5061                    break;
5062
vendor: 8,680 bytes, lines 5063-5384
5063                default:
5064
5065
5066            }
5067
5068            if( direction != 'vertical' ) {
5069
5070                _.slideHandler( slideCount );
5071                _.touchObject = {};
5072                _.$slider.trigger('swipe', [_, direction ]);
5073
5074            }
5075
5076        } else {
5077
5078            if ( _.touchObject.startX !== _.touchObject.curX ) {
5079
5080                _.slideHandler( _.currentSlide );
5081                _.touchObject = {};
5082
5083            }
5084
5085        }
5086
5087    };
5088
5089    Slick.prototype.swipeHandler = function(event) {
5090
5091        var _ = this;
5092
5093        if ((_.options.swipe === false) || ('ontouchend' in document && _.options.swipe === false)) {
5094            return;
5095        } else if (_.options.draggable === false && event.type.indexOf('mouse') !== -1) {
5096            return;
5097        }
5098
5099        _.touchObject.fingerCount = event.originalEvent && event.originalEvent.touches !== undefined ?
5100            event.originalEvent.touches.length : 1;
5101
5102        _.touchObject.minSwipe = _.listWidth / _.options
5103            .touchThreshold;
5104
5105        if (_.options.verticalSwiping === true) {
5106            _.touchObject.minSwipe = _.listHeight / _.options
5107                .touchThreshold;
5108        }
5109
5110        switch (event.data.action) {
5111
5112            case 'start':
5113                _.swipeStart(event);
5114                break;
5115
5116            case 'move':
5117                _.swipeMove(event);
5118                break;
5119
5120            case 'end':
5121                _.swipeEnd(event);
5122                break;
5123
5124        }
5125
5126    };
5127
5128    Slick.prototype.swipeMove = function(event) {
5129
5130        var _ = this,
5131            edgeWasHit = false,
5132            curLeft, swipeDirection, swipeLength, positionOffset, touches, verticalSwipeLength;
5133
5134        touches = event.originalEvent !== undefined ? event.originalEvent.touches : null;
5135
5136        if (!_.dragging || _.scrolling || touches && touches.length !== 1) {
5137            return false;
5138        }
5139
5140        curLeft = _.getLeft(_.currentSlide);
5141
5142        _.touchObject.curX = touches !== undefined ? touches[0].pageX : event.clientX;
5143        _.touchObject.curY = touches !== undefined ? touches[0].pageY : event.clientY;
5144
5145        _.touchObject.swipeLength = Math.round(Math.sqrt(
5146            Math.pow(_.touchObject.curX - _.touchObject.startX, 2)));
5147
5148        verticalSwipeLength = Math.round(Math.sqrt(
5149            Math.pow(_.touchObject.curY - _.touchObject.startY, 2)));
5150
5151        if (!_.options.verticalSwiping && !_.swiping && verticalSwipeLength > 4) {
5152            _.scrolling = true;
5153            return false;
5154        }
5155
5156        if (_.options.verticalSwiping === true) {
5157            _.touchObject.swipeLength = verticalSwipeLength;
5158        }
5159
5160        swipeDirection = _.swipeDirection();
5161
5162        if (event.originalEvent !== undefined && _.touchObject.swipeLength > 4) {
5163            _.swiping = true;
5164            event.preventDefault();
5165        }
5166
5167        positionOffset = (_.options.rtl === false ? 1 : -1) * (_.touchObject.curX > _.touchObject.startX ? 1 : -1);
5168        if (_.options.verticalSwiping === true) {
5169            positionOffset = _.touchObject.curY > _.touchObject.startY ? 1 : -1;
5170        }
5171
5172
5173        swipeLength = _.touchObject.swipeLength;
5174
5175        _.touchObject.edgeHit = false;
5176
5177        if (_.options.infinite === false) {
5178            if ((_.currentSlide === 0 && swipeDirection === 'right') || (_.currentSlide >= _.getDotCount() && swipeDirection === 'left')) {
5179                swipeLength = _.touchObject.swipeLength * _.options.edgeFriction;
5180                _.touchObject.edgeHit = true;
5181            }
5182        }
5183
5184        if (_.options.vertical === false) {
5185            _.swipeLeft = curLeft + swipeLength * positionOffset;
5186        } else {
5187            _.swipeLeft = curLeft + (swipeLength * (_.$list.height() / _.listWidth)) * positionOffset;
5188        }
5189        if (_.options.verticalSwiping === true) {
5190            _.swipeLeft = curLeft + swipeLength * positionOffset;
5191        }
5192
5193        if (_.options.fade === true || _.options.touchMove === false) {
5194            return false;
5195        }
5196
5197        if (_.animating === true) {
5198            _.swipeLeft = null;
5199            return false;
5200        }
5201
5202        _.setCSS(_.swipeLeft);
5203
5204    };
5205
5206    Slick.prototype.swipeStart = function(event) {
5207
5208        var _ = this,
5209            touches;
5210
5211        _.interrupted = true;
5212
5213        if (_.touchObject.fingerCount !== 1 || _.slideCount <= _.options.slidesToShow) {
5214            _.touchObject = {};
5215            return false;
5216        }
5217
5218        if (event.originalEvent !== undefined && event.originalEvent.touches !== undefined) {
5219            touches = event.originalEvent.touches[0];
5220        }
5221
5222        _.touchObject.startX = _.touchObject.curX = touches !== undefined ? touches.pageX : event.clientX;
5223        _.touchObject.startY = _.touchObject.curY = touches !== undefined ? touches.pageY : event.clientY;
5224
5225        _.dragging = true;
5226
5227    };
5228
5229    Slick.prototype.unfilterSlides = Slick.prototype.slickUnfilter = function() {
5230
5231        var _ = this;
5232
5233        if (_.$slidesCache !== null) {
5234
5235            _.unload();
5236
5237            _.$slideTrack.children(this.options.slide).detach();
5238
5239            _.$slidesCache.appendTo(_.$slideTrack);
5240
5241            _.reinit();
5242
5243        }
5244
5245    };
5246
5247    Slick.prototype.unload = function() {
5248
5249        var _ = this;
5250
5251        $('.slick-cloned', _.$slider).remove();
5252
5253        if (_.$dots) {
5254            _.$dots.remove();
5255        }
5256
5257        if (_.$prevArrow && _.htmlExpr.test(_.options.prevArrow)) {
5258            _.$prevArrow.remove();
5259        }
5260
5261        if (_.$nextArrow && _.htmlExpr.test(_.options.nextArrow)) {
5262            _.$nextArrow.remove();
5263        }
5264
5265        _.$slides
5266            .removeClass('slick-slide slick-active slick-visible slick-current')
5267            .attr('aria-hidden', 'true')
5268            .css('width', '');
5269
5270    };
5271
5272    Slick.prototype.unslick = function(fromBreakpoint) {
5273
5274        var _ = this;
5275        _.$slider.trigger('unslick', [_, fromBreakpoint]);
5276        _.destroy();
5277
5278    };
5279
5280    Slick.prototype.updateArrows = function() {
5281
5282        var _ = this,
5283            centerOffset;
5284
5285        centerOffset = Math.floor(_.options.slidesToShow / 2);
5286
5287        if ( _.options.arrows === true &&
5288            _.slideCount > _.options.slidesToShow &&
5289            !_.options.infinite ) {
5290
5291            _.$prevArrow.removeClass('slick-disabled').attr('aria-disabled', 'false');
5292            _.$nextArrow.removeClass('slick-disabled').attr('aria-disabled', 'false');
5293
5294            if (_.currentSlide === 0) {
5295
5296                _.$prevArrow.addClass('slick-disabled').attr('aria-disabled', 'true');
5297                _.$nextArrow.removeClass('slick-disabled').attr('aria-disabled', 'false');
5298
5299            } else if (_.currentSlide >= _.slideCount - _.options.slidesToShow && _.options.centerMode === false) {
5300
5301                _.$nextArrow.addClass('slick-disabled').attr('aria-disabled', 'true');
5302                _.$prevArrow.removeClass('slick-disabled').attr('aria-disabled', 'false');
5303
5304            } else if (_.currentSlide >= _.slideCount - 1 && _.options.centerMode === true) {
5305
5306                _.$nextArrow.addClass('slick-disabled').attr('aria-disabled', 'true');
5307                _.$prevArrow.removeClass('slick-disabled').attr('aria-disabled', 'false');
5308
5309            }
5310
5311        }
5312
5313    };
5314
5315    Slick.prototype.updateDots = function() {
5316
5317        var _ = this;
5318
5319        if (_.$dots !== null) {
5320
5321            _.$dots
5322                .find('li')
5323                    .removeClass('slick-active')
5324                    .end();
5325
5326            _.$dots
5327                .find('li')
5328                .eq(Math.floor(_.currentSlide / _.options.slidesToScroll))
5329                .addClass('slick-active');
5330
5331        }
5332
5333    };
5334
5335    Slick.prototype.visibility = function() {
5336
5337        var _ = this;
5338
5339        if ( _.options.autoplay ) {
5340
5341            if ( document[_.hidden] ) {
5342
5343                _.interrupted = true;
5344
5345            } else {
5346
5347                _.interrupted = false;
5348
5349            }
5350
5351        }
5352
5353    };
5354
5355    $.fn.slick = function() {
5356        var _ = this,
5357            opt = arguments[0],
5358            args = Array.prototype.slice.call(arguments, 1),
5359            l = _.length,
5360            i,
5361            ret;
5362        for (i = 0; i < l; i++) {
5363            if (typeof opt == 'object' || typeof opt == 'undefined')
5364                _[i].slick = new Slick(_[i], opt);
5365            else
5366                ret = _[i].slick[opt].apply(_[i].slick, args);
5367            if (typeof ret != 'undefined') return ret;
5368        }
5369        return _;
5370    };
5371
5372}));
5373
5374})(jQuery1_11_0);
5375(function ($) {
5376    var jQuery = $;
5377    $(function() {
5378    
5379        // 메인 슬라이드 배너 동작
5380		$('.main-slide-banner').slick({
5381			infinite: true,
5382			speed: 1000,
5383			dots: true,
5384			fade: true,
5385			arrows: false,
5386			autoplay: true,
5387			autoplaySpeed: 5000,
5388		});
5389
5390        // 상품 슬라이드 동작
5391        $('.circle-product-list').carouFredSel({
5392            auto: false,
5393            prev: '.circle-slide-prev',
5394            next: '.circle-slide-next',
5395            mousewheel: true,
5396            scroll: 1,
5397            swipe: {
5398                onMouse: true,
5399                onTouch: true
5400            }
5401        });        
5402        
5403        var $slideWidth = $('.main-slide-banner-wrap ul>li').width();
5404        $('.main-slide-banner-wrap ul>li>a').css({'margin-left':-$slideWidth / 2,'width':$slideWidth});        
5405        
5406        $(window).resize(function() {
5407            var $slideWidth = $('.main-slide-banner-wrap ul>li').width();
5408            $('.main-slide-banner-wrap ul>li>a').css({'margin-left':-$slideWidth / 2,'width':$slideWidth});
5409        });
5410        
5411        // 인스타그램 연동
5412        var tocken = "4273069667.d90570a.bed13eedd8ba4a8ea2ad4502cf60fd1a"; /* Access Tocken 입력 */
5413        var count = "16";
5414
5415        $.ajax({
5416            url: "https://api.instagram.com/v1/users/self/media/recent/?access_token=" + tocken + "&count=" + count,
5417            dataType: 'jsonp',
5418            type: 'GET',
5419            //data: {client_id: clientid, count: count},
5420            success: function (response) {
5421                console.log(response);
5422                for (x in response.data) {
5423                    var insta = '<div class="insta-box">';
5424                    insta += "<a target='_blank' href='" + response.data[x].link + "'>";
5425                    insta += "<div class'image-layer'>";
5426                    //insta += "<img src='" + response.data[x].images.thumbnail.url + "'>";  
5427                    insta += "<img src='"+ response.data[x].images.standard_resolution.url +"'>";
5428                    insta += "</div>";
5429                    insta += "</a>";
5430                    insta += "</div>";
5431                    $(".instagram-inner").append(insta);
5432
5433                    //$('ul').append('<li><img src="'+result.data[x].images.standard_resolution.url+'"></li>');  
5434                }
5435            },
5436            error: function (response) {
5437                console.log(response);
5438            }
5439        });   
5440        
5441      });
5442           
5443})(jQuery1_11_0);
5444
5445
5446
5447//https 로 이동
5448if (location.protocol === 'http:' && location.host.indexOf('cafe24.com') === -1) {
5449    var sUrl = 'https://' + location.host + location.pathname + location.search;
5450
5451    window.location.replace(sUrl);
5452}
5453
5454//https 로 이동
5455//if (EC_COMMON_UTIL.getProtocol() === 'https' && location.host.indexOf('cafe24.com') === -1) {
5456  //  var sUrl = 'http://' + location.host + location.pathname + location.search;
5457
5458
5459    //window.location.replace(sUrl);
5460// }
5461
5462
5463
5464
5465//window popup script
5466function winPop(url) {
5467    window.open(url, "popup", "width=300,height=300,left=10,top=10,resizable=no,scrollbars=no");
5468}
5469/**
5470 * document.location.href split
5471 * return array Param
5472 */
5473function getQueryString(sKey)
5474{
5475    var sQueryString = document.location.search.substring(1);
5476    var aParam       = {};
5477
5478    if (sQueryString) {
5479        var aFields = sQueryString.split("&");
5480        var aField  = [];
5481        for (var i=0; i<aFields.length; i++) {
5482            aField = aFields[i].split('=');
5483            aParam[aField[0]] = aField[1];
5484        }
5485    }
5486
5487    aParam.page = aParam.page ? aParam.page : 1;
5488    return sKey ? aParam[sKey] : aParam;
5489};
5490
5491$(document).ready(function(){
5492    // tab
5493    $.eTab = function(ul){
5494        $(ul).find('a').click(function(){
5495            var _li = $(this).parent('li').addClass('selected').siblings().removeClass('selected'),
5496                _target = $(this).attr('href'),
5497                _siblings = '.' + $(_target).attr('class');
5498            $(_target).show().siblings(_siblings).hide();
5499            return false
5500        });
5501    }
5502    if ( window.call_eTab ) {
5503        call_eTab();
5504    };
5505});
5506(function($){
5507$.fn.extend({
5508    center: function() {
5509        this.each(function() {
5510            var
5511                $this = $(this),
5512                $w = $(window);
5513            $this.css({
5514                position: "absolute",
5515                top: ~~(($w.height() - $this.outerHeight()) / 2) + $w.scrollTop() + "px",
5516                left: ~~(($w.width() - $this.outerWidth()) / 2) + $w.scrollLeft() + "px"
5517            });
5518        });
5519        return this;
5520    }
5521});
5522$(function() {
5523    var $container = function(){/*
5524<div id="modalContainer">
5525    <iframe id="modalContent" scroll="0" scrolling="no" frameBorder="0"></iframe>
5526</div>');
5527*/}.toString().slice(14,-3);
5528    $('body')
5529    .append($('<div id="modalBackpanel"></div>'))
5530    .append($($container));
5531    function closeModal () {
5532        $('#modalContainer').hide();
5533        $('#modalBackpanel').hide();
5534    }
5535    $('#modalBackpanel').click(closeModal);
5536    zoom = function ($piProductNo, $piCategoryNo, $piDisplayGroup) {
5537        var $url = '/product/image_zoom.html?product_no=' + $piProductNo + '&cate_no=' + $piCategoryNo + '&display_group=' + $piDisplayGroup;
5538        $('#modalContent').attr('src', $url);
5539        $('#modalContent').bind("load",function(){
5540            $(".header .close",this.contentWindow.document.body).bind("click", closeModal);
5541        });
5542        $('#modalBackpanel').css({width:$("body").width(),height:$("body").height(),opacity:.4}).show();
5543        $('#modalContainer').center().show();
5544    }
5545});
5546})(jQuery);
5547
5548
5549
5550$(document).ready(function(){
5551    if (typeof(EC_SHOP_MULTISHOP_SHIPPING) != "undefined") {
5552        var sShippingCountryCode4Cookie = 'shippingCountryCode';
5553        var bShippingCountryProc = false;
5554
5555        // 배송국가 선택 설정이 사용안함이면 숨김
5556        if (EC_SHOP_MULTISHOP_SHIPPING.bMultishopShippingCountrySelection === false) {
5557            $('.xans-layout-multishopshipping .xans-layout-multishopshippingcountrylist').hide();
5558            $('.xans-layout-multishoplist .xans-layout-multishoplistmultioption .xans-layout-multishoplistmultioptioncountry').hide();
5559        } else {
5560            $('.thumb .xans-layout-multishoplistitem').hide();
5561            var aShippingCountryCode = document.cookie.match('(^|;) ?'+sShippingCountryCode4Cookie+'=([^;]*)(;|$)');
5562            if (typeof(aShippingCountryCode) != 'undefined' && aShippingCountryCode != null && aShippingCountryCode.length > 2) {
5563                var sShippingCountryValue = aShippingCountryCode[2];
5564            }
5565
5566            // query string으로 넘어 온 배송국가 값이 있다면, 그 값을 적용함
5567            var aHrefCountryValue = decodeURIComponent(location.href).split("/?country=");
5568
5569            if (aHrefCountryValue.length == 2) {
5570                var sShippingCountryValue = aHrefCountryValue[1];
5571            }
5572
5573            // 메인 페이지에서 국가선택을 안한 경우, 그 외의 페이지에서 셋팅된 값이 안 나오는 현상 처리
5574            if (location.href.split("/").length != 4 && $(".xans-layout-multishopshipping .xans-layout-multishopshippingcountrylist").val()) {
5575                $(".xans-layout-multishoplist .xans-layout-multishoplistmultioption a .ship span").text(" : "+$(".xans-layout-multishopshipping .xans-layout-multishopshippingcountrylist option:selected").text().split("SHIPPING TO : ").join(""));
5576
5577                if ($("#f_country").length > 0 && location.href.indexOf("orderform.html") > -1) {
5578                    $("#f_country").val($(".xans-layout-multishopshipping .xans-layout-multishopshippingcountrylist").val());
5579                }
5580            }
5581            if (typeof(sShippingCountryValue) != "undefined" && sShippingCountryValue != "" && sShippingCountryValue != null) {
5582                sShippingCountryValue = sShippingCountryValue.split("#")[0];
5583                var bShippingCountryProc = true;
5584
5585                $(".xans-layout-multishopshipping .xans-layout-multishopshippingcountrylist").val(sShippingCountryValue);
5586                $(".xans-layout-multishoplist .xans-layout-multishoplistmultioption a .ship span").text(" : "+$(".xans-layout-multishopshipping .xans-layout-multishopshippingcountrylist option:selected").text().split("SHIPPING TO : ").join(""));
5587                var expires = new Date();
5588                expires.setTime(expires.getTime() + (30 * 24 * 60 * 60 * 1000)); // 30일간 쿠키 유지
5589                document.cookie = sShippingCountryCode4Cookie+'=' + $(".xans-layout-multishopshipping .xans-layout-multishopshippingcountrylist").val() +';path=/'+ ';expires=' + expires.toUTCString();
5590                if ($("#f_country").length > 0 && location.href.indexOf("orderform.html") > -1) {
5591                    $("#f_country").val(sShippingCountryValue).change();;
5592                }
5593            }
5594        }
5595        // 언어선택 설정이 사용안함이면 숨김
5596        if (EC_SHOP_MULTISHOP_SHIPPING.bMultishopShippingLanguageSelection === false) {
5597            $('.xans-layout-multishopshipping .xans-layout-multishopshippinglanguagelist').hide();
5598            $('.xans-layout-multishoplist .xans-layout-multishoplistmultioption .xans-layout-multishoplistmultioptionlanguage').hide();
5599        } else {
5600            $('.thumb .xans-layout-multishoplistitem').hide();
5601        }
5602
5603        // 배송국가 및 언어 설정이 둘 다 사용안함이면 숨김
5604        if (EC_SHOP_MULTISHOP_SHIPPING.bMultishopShipping === false) {
5605            $(".xans-layout-multishopshipping").hide();
5606            $('.xans-layout-multishoplist .xans-layout-multishoplistmultioption').hide();
5607        } else if (bShippingCountryProc === false && location.href.split("/").length == 4) { // 배송국가 값을 처리한 적이 없고, 메인화면일 때만 선택 레이어를 띄움
5608            var sShippingCountryValue = $(".xans-layout-multishopshipping .xans-layout-multishopshippingcountrylist").val();
5609            $(".xans-layout-multishopshipping .xans-layout-multishopshippingcountrylist").val(sShippingCountryValue);
5610            $(".xans-layout-multishoplist .xans-layout-multishoplistmultioption a .ship span").text(" : "+$(".xans-layout-multishopshipping .xans-layout-multishopshippingcountrylist option:selected").text().split("SHIPPING TO : ").join(""));
5611            // 배송국가 선택을 사용해야 레이어를 보이게 함
5612            if (EC_SHOP_MULTISHOP_SHIPPING.bMultishopShippingCountrySelection === true) {
5613                $(".xans-layout-multishopshipping").show();
5614            }
5615        }
5616
5617        $(".xans-layout-multishopshipping .close").bind("click", function() {
5618            $(".xans-layout-multishopshipping").hide();
5619        });
5620
5621        $(".xans-layout-multishopshipping .ec-base-button a").bind("click", function() {
5622            var expires = new Date();
5623            expires.setTime(expires.getTime() + (30 * 24 * 60 * 60 * 1000)); // 30일간 쿠키 유지
5624            document.cookie = sShippingCountryCode4Cookie+'=' + $(".xans-layout-multishopshipping .xans-layout-multishopshippingcountrylist").val() +';path=/'+ ';expires=' + expires.toUTCString();
5625
5626            // 도메인 문제로 쿠키로 배송국가 설정이 안 되는 경우를 위해 query string으로 배송국가 값
5626을 넘김
5627            var sQuerySting = (EC_SHOP_MULTISHOP_SHIPPING.bMultishopShippingCountrySelection === false) ? "" : "/?country="+encodeURIComponent($(".xans-layout-multishopshipping .xans-layout-multishopshippingcountrylist").val());
5628
5629            location.href = '//'+$(".xans-layout-multishopshipping .xans-layout-multishopshippinglanguagelist").val()+sQuerySting;
5630        });
5631        $(".xans-layout-multishoplist .xans-layout-multishoplistmultioption a").bind("click", function() {
5632            $(".xans-layout-multishopshipping").show();
5633        });
5634    }
5635});
5636

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.