(function($){ 'use strict'; if(typeof wpcf7==='undefined'||wpcf7===null){ return; } wpcf7=$.extend({ cached: 0, inputs: [] }, wpcf7); $(function(){ wpcf7.supportHtml5=(function(){ var features={}; var input=document.createElement('input'); features.placeholder='placeholder' in input; var inputTypes=[ 'email', 'url', 'tel', 'number', 'range', 'date' ]; $.each(inputTypes, function(index, value){ input.setAttribute('type', value); features[ value ]=input.type!=='text'; }); return features; })(); $('div.wpcf7 > form').each(function(){ var $form=$(this); $form.submit(function(event){ if(typeof window.FormData!=='function'){ return; } wpcf7.submit($form); event.preventDefault(); }); $('.wpcf7-submit', $form).after(''); wpcf7.toggleSubmit($form); $form.on('click', '.wpcf7-acceptance', function(){ wpcf7.toggleSubmit($form); }); $('.wpcf7-exclusive-checkbox', $form).on('click', 'input:checkbox', function(){ var name=$(this).attr('name'); $form.find('input:checkbox[name="' + name + '"]').not(this).prop('checked', false); }); $('.wpcf7-list-item.has-free-text', $form).each(function(){ var $freetext=$(':input.wpcf7-free-text', this); var $wrap=$(this).closest('.wpcf7-form-control'); if($(':checkbox, :radio', this).is(':checked')){ $freetext.prop('disabled', false); }else{ $freetext.prop('disabled', true); } $wrap.on('change', ':checkbox, :radio', function(){ var $cb=$('.has-free-text', $wrap).find(':checkbox, :radio'); if($cb.is(':checked')){ $freetext.prop('disabled', false).focus(); }else{ $freetext.prop('disabled', true); }}); }); if(! wpcf7.supportHtml5.placeholder){ $('[placeholder]', $form).each(function(){ $(this).val($(this).attr('placeholder')); $(this).addClass('placeheld'); $(this).focus(function(){ if($(this).hasClass('placeheld')){ $(this).val('').removeClass('placeheld'); }}); $(this).blur(function(){ if(''===$(this).val()){ $(this).val($(this).attr('placeholder')); $(this).addClass('placeheld'); }}); }); } if(wpcf7.jqueryUi&&! wpcf7.supportHtml5.date){ $form.find('input.wpcf7-date[type="date"]').each(function(){ $(this).datepicker({ dateFormat: 'yy-mm-dd', minDate: new Date($(this).attr('min')), maxDate: new Date($(this).attr('max')) }); }); } if(wpcf7.jqueryUi&&! wpcf7.supportHtml5.number){ $form.find('input.wpcf7-number[type="number"]').each(function(){ $(this).spinner({ min: $(this).attr('min'), max: $(this).attr('max'), step: $(this).attr('step') }); }); } $('.wpcf7-character-count', $form).each(function(){ var $count=$(this); var name=$count.attr('data-target-name'); var down=$count.hasClass('down'); var starting=parseInt($count.attr('data-starting-value'), 10); var maximum=parseInt($count.attr('data-maximum-value'), 10); var minimum=parseInt($count.attr('data-minimum-value'), 10); var updateCount=function(target){ var $target=$(target); var length=$target.val().length; var count=down ? starting - length:length; $count.attr('data-current-value', count); $count.text(count); if(maximum&&maximum < length){ $count.addClass('too-long'); }else{ $count.removeClass('too-long'); } if(minimum&&length < minimum){ $count.addClass('too-short'); }else{ $count.removeClass('too-short'); }}; $(':input[name="' + name + '"]', $form).each(function(){ updateCount(this); $(this).keyup(function(){ updateCount(this); }); }); }); $form.on('change', '.wpcf7-validates-as-url', function(){ var val=$.trim($(this).val()); if(val&&! val.match(/^[a-z][a-z0-9.+-]*:/i)){ val=val.replace(/^\/+/, ''); val='http://' + val; } $(this).val(val); }); if(wpcf7.cached){ wpcf7.refill($form); }}); }); wpcf7.getId=function(form){ return parseInt($('input[name="_wpcf7"]', form).val(), 10); }; wpcf7.submit=function(form){ var $form=$(form); $('[placeholder].placeheld', $form).each(function(i, n){ $(n).val(''); }); wpcf7.clearResponse($form); $('.ajax-loader', $form).addClass('is-active'); if(typeof window.FormData!=='function'){ return; } var formData=new FormData($form.get(0)); var ajaxSuccess=function(data, status, xhr, $form){ var detail={ id: $(data.into).attr('id'), status: data.status, inputs: [] }; $.each($form.serializeArray(), function(i, field){ if('_wpcf7'==field.name){ detail.contactFormId=field.value; }else if('_wpcf7_version'==field.name){ detail.pluginVersion=field.value; }else if('_wpcf7_locale'==field.name){ detail.contactFormLocale=field.value; }else if('_wpcf7_unit_tag'==field.name){ detail.unitTag=field.value; }else if('_wpcf7_container_post'==field.name){ detail.containerPostId=field.value; }else if(field.name.match(/^_/)){ }else{ detail.inputs.push(field); }}); var $message=$('.wpcf7-response-output', $form); switch(data.status){ case 'validation_failed': $.each(data.invalidFields, function(i, n){ $(n.into, $form).each(function(){ wpcf7.notValidTip(this, n.message); $('.wpcf7-form-control', this).addClass('wpcf7-not-valid'); $('[aria-invalid]', this).attr('aria-invalid', 'true'); }); }); $message.addClass('wpcf7-validation-errors'); $form.addClass('invalid'); wpcf7.triggerEvent(data.into, 'invalid', detail); break; case 'spam': $message.addClass('wpcf7-spam-blocked'); $form.addClass('spam'); $('[name="g-recaptcha-response"]', $form).each(function(){ if(''===$(this).val()){ var $recaptcha=$(this).closest('.wpcf7-form-control-wrap'); wpcf7.notValidTip($recaptcha, wpcf7.recaptcha.messages.empty); }}); wpcf7.triggerEvent(data.into, 'spam', detail); break; case 'mail_sent': $message.addClass('wpcf7-mail-sent-ok'); $form.addClass('sent'); if(data.onSentOk){ $.each(data.onSentOk, function(i, n){ eval(n) }); } wpcf7.triggerEvent(data.into, 'mailsent', detail); break; case 'mail_failed': case 'acceptance_missing': default: $message.addClass('wpcf7-mail-sent-ng'); $form.addClass('failed'); wpcf7.triggerEvent(data.into, 'mailfailed', detail); } wpcf7.refill($form, data); if(data.onSubmit){ $.each(data.onSubmit, function(i, n){ eval(n) }); } wpcf7.triggerEvent(data.into, 'submit', detail); if('mail_sent'==data.status){ $form.each(function(){ this.reset(); }); } $form.find('[placeholder].placeheld').each(function(i, n){ $(n).val($(n).attr('placeholder')); }); $message.append(data.message).slideDown('fast'); $message.attr('role', 'alert'); $('.screen-reader-response', $form.closest('.wpcf7')).each(function(){ var $response=$(this); $response.html('').attr('role', '').append(data.message); if(data.invalidFields){ var $invalids=$(''); $.each(data.invalidFields, function(i, n){ if(n.idref){ var $li=$('
  • ').append($('').attr('href', '#' + n.idref).append(n.message)); }else{ var $li=$('
  • ').append(n.message); } $invalids.append($li); }); $response.append($invalids); } $response.attr('role', 'alert').focus(); }); }; $.ajax({ type: 'POST', url: wpcf7.apiSettings.root + wpcf7.apiSettings.namespace + '/contact-forms/' + wpcf7.getId($form) + '/feedback', data: formData, dataType: 'json', processData: false, contentType: false }).done(function(data, status, xhr){ ajaxSuccess(data, status, xhr, $form); $('.ajax-loader', $form).removeClass('is-active'); }).fail(function(xhr, status, error){ var $e=$('
    ').text(error.message); $form.after($e); }); }; wpcf7.triggerEvent=function(target, name, detail){ var $target=$(target); var event=new CustomEvent('wpcf7' + name, { bubbles: true, detail: detail }); $target.get(0).dispatchEvent(event); $target.trigger('wpcf7:' + name, detail); $target.trigger(name + '.wpcf7', detail); }; wpcf7.toggleSubmit=function(form, state){ var $form=$(form); var $submit=$('input:submit', $form); if(typeof state!=='undefined'){ $submit.prop('disabled', ! state); return; } if($form.hasClass('wpcf7-acceptance-as-validation')){ return; } $submit.prop('disabled', false); $('input:checkbox.wpcf7-acceptance', $form).each(function(){ var $a=$(this); if($a.hasClass('wpcf7-invert')&&$a.is(':checked') || ! $a.hasClass('wpcf7-invert')&&! $a.is(':checked')){ $submit.prop('disabled', true); return false; }}); }; wpcf7.notValidTip=function(target, message){ var $target=$(target); $('.wpcf7-not-valid-tip', $target).remove(); $('') .text(message).appendTo($target); if($target.is('.use-floating-validation-tip *')){ var fadeOut=function(target){ $(target).not(':hidden').animate({ opacity: 0 }, 'fast', function(){ $(this).css({ 'z-index': -100 }); }); } $target.on('mouseover', '.wpcf7-not-valid-tip', function(){ fadeOut(this); }); $target.on('focus', ':input', function(){ fadeOut($('.wpcf7-not-valid-tip', $target)); }); }} wpcf7.refill=function(form, data){ var $form=$(form); var refillCaptcha=function($form, items){ $.each(items, function(i, n){ $form.find(':input[name="' + i + '"]').val(''); $form.find('img.wpcf7-captcha-' + i).attr('src', n); var match=/([0-9]+)\.(png|gif|jpeg)$/.exec(n); $form.find('input:hidden[name="_wpcf7_captcha_challenge_' + i + '"]').attr('value', match[ 1 ]); }); }; var refillQuiz=function($form, items){ $.each(items, function(i, n){ $form.find(':input[name="' + i + '"]').val(''); $form.find(':input[name="' + i + '"]').siblings('span.wpcf7-quiz-label').text(n[ 0 ]); $form.find('input:hidden[name="_wpcf7_quiz_answer_' + i + '"]').attr('value', n[ 1 ]); }); }; if(typeof data==='undefined'){ $.ajax({ type: 'GET', url: wpcf7.apiSettings.root + wpcf7.apiSettings.namespace + '/contact-forms/' + wpcf7.getId($form) + '/refill', dataType: 'json' }).done(function(data, status, xhr){ if(data.captcha){ refillCaptcha($form, data.captcha); } if(data.quiz){ refillQuiz($form, data.quiz); }}); }else{ if(data.captcha){ refillCaptcha($form, data.captcha); } if(data.quiz){ refillQuiz($form, data.quiz); }} }; wpcf7.clearResponse=function(form){ var $form=$(form); $form.removeClass('invalid spam sent failed'); $form.siblings('.screen-reader-response').html('').attr('role', ''); $('.wpcf7-not-valid-tip', $form).remove(); $('[aria-invalid]', $form).attr('aria-invalid', 'false'); $('.wpcf7-form-control', $form).removeClass('wpcf7-not-valid'); $('.wpcf7-response-output', $form) .hide().empty().removeAttr('role') .removeClass('wpcf7-mail-sent-ok wpcf7-mail-sent-ng wpcf7-validation-errors wpcf7-spam-blocked'); };})(jQuery); (function (){ if(typeof window.CustomEvent==="function") return false; function CustomEvent(event, params){ params=params||{ bubbles: false, cancelable: false, detail: undefined }; var evt=document.createEvent('CustomEvent'); evt.initCustomEvent(event, params.bubbles, params.cancelable, params.detail); return evt; } CustomEvent.prototype=window.Event.prototype; window.CustomEvent=CustomEvent; })(); ;(function($){ "use strict"; $.equalizer=function(el, options){ var o, base=this; base.$el=$(el); base.$el.data("equalizer", base); base.init=function(){ base.options=o = $.extend({}, $.equalizer.defaultOptions, options); base.$col=base.$el.find(o.columns); var t=base.$col.find('.equalizer-inner').length; o.min=parseInt(o.min, 10)||0; o.max=parseInt(o.max, 10)||0; base.hasMax=(o.max===0) ? false:true; base.hasMin=(o.min===0) ? false:true; base.curRowTop=0; base.isEnabled=true; base.useHeight=(/^o/.test(o.useHeight)) ? 'outerHeight':/^i/.test(o.useHeight) ? 'innerHeight':'height'; if(!t){ base.$col.wrapInner(''); } if(!t&&o.resizeable){ $(window).resize(function(){ clearTimeout(base.throttle); base.throttle=setTimeout(function(){ if(o.breakpoint){ base.checkBreakpoint(); } base.update(); }, 100); }); } base.$el .unbind('enable.equalizer disable.equalizer') .bind('enable.equalizer disable.equalizer', function(e){ base.enable(e.type==='enable'); }); base.checkBreakpoint(); base.update(); }; base.checkBreakpoint=function(){ var w=o.breakpoint&&base.$el.width()||0; if(w&&w < o.breakpoint){ base.suspend(false); }else if(w&&base.$el.hasClass(o.disabled)&&w > o.breakpoint){ base.suspend(); }}; base.checkBoxSizing=function(){ var v=(function(version){ version[0]=parseInt(version[0], 10); return (version[0] > 1)||(version[0]===1&&parseInt(version[1], 10) >=8); })($.fn.jquery.split(".")); if(v){ return false; } var i, s=['boxSizing', 'MozBoxSizing', 'WebkitBoxSizing', 'msBoxSizing'], l=s.length; for(i=0; i < l ; i++){ if(base.$col.css(s[i])==='border-box'){ return true; }} return false; }; base.update=function(){ if(base.$el.hasClass(o.disabled)||!base.isEnabled){ return; } base.hasBoxSizing=base.checkBoxSizing(); base.padding=(base.hasBoxSizing) ? parseInt(base.$col.css('padding-top'), 10) + parseInt(base.$col.css('padding-bottom'), 10):0; base.curMax=o.min; base.$col .removeClass(o.overflow) .each(function(){ var $this=$(this), $el=$this.find('span.equalizer-inner'); base.curTop=$this.offset().top; if(base.curRowTop!==base.curTop){ if(base.hasMax&&base.curMax > o.max){ base.curMax=o.max; base.curRows.addClass(o.overflow); } if(base.curRows){ base.curRows.height(base.curMax + base.padding); } base.curMax=$el[base.useHeight](); base.curMax=(base.hasMin) ? Math.max(o.min, base.curMax):base.curMax; base.curRowTop=base.curTop; base.curRows=$this; }else{ base.curMax=Math.max(base.curMax, $el[base.useHeight]()); base.curMax=(base.hasMax&&base.curMax > o.max) ? o.max : (base.hasMin&&base.curMax < o.min) ? o.min:base.curMax; base.curRows=base.curRows.add($this); } if(base.curRows){ base.curRows.height(base.curMax + base.padding); if(base.hasMax&&base.curMax >=o.max){ base.curRows.addClass(o.overflow); }} }); }; base.suspend=function(flag){ if(flag!==false){ base.$el.removeClass(o.disabled); }else{ base.$el.addClass(o.disabled); base.$col .removeClass(o.overflow) .css('height', ''); } base.update(); }; base.enable=function(flag){ base.isEnabled=flag!==false; base.suspend(flag); }; base.init(); }; $.equalizer.defaultOptions={ columns:'> div', useHeight:'height', resizeable:true, min:0, max:0, breakpoint:null, disabled:'noresize', overflow:'overflowed' }; $.fn.equalizer=function(options){ return this.each(function(){ var equalizer=$(this).data('equalizer'); if(!equalizer){ (new $.equalizer(this, options)); }else{ equalizer.update(); }}); }; $.fn.getequalizer=function(){ return this.data("equalizer"); };})(jQuery); !function(a,b){function c(){y=D=z=A=B=C=K}function d(a,b){for(var c in b)b.hasOwnProperty(c)&&(a[c]=b[c])}function e(a){return parseFloat(a)||0}function f(){F={top:b.pageYOffset,left:b.pageXOffset}}function g(){return b.pageXOffset!=F.left?(f(),void z()):void(b.pageYOffset!=F.top&&(f(),i()))}function h(){setTimeout(function(){b.pageYOffset!=F.top&&(F.top=b.pageYOffset,i())},0)}function i(){for(var a=H.length-1;a>=0;a--)j(H[a])}function j(a){if(a.inited){var b=F.top<=a.limit.start?0:F.top>=a.limit.end?2:1;a.mode!=b&&p(a,b)}}function k(){for(var a=H.length-1;a>=0;a--)if(H[a].inited){var b=Math.abs(t(H[a].clone)-H[a].docOffsetTop),c=Math.abs(H[a].parent.node.offsetHeight-H[a].parent.height);if(b>=2||c>=2)return!1}return!0}function l(a){isNaN(parseFloat(a.computed.top))||a.isCell||"none"==a.computed.display||(a.inited=!0,a.clone||q(a),"absolute"!=a.parent.computed.position&&"relative"!=a.parent.computed.position&&(a.parent.node.style.position="relative"),j(a),a.parent.height=a.parent.node.offsetHeight,a.docOffsetTop=t(a.clone))}function m(a){var b=!0;a.clone&&r(a),d(a.node.style,a.css);for(var c=H.length-1;c>=0;c--)if(H[c].node!==a.node&&H[c].parent.node===a.parent.node){b=!1;break}b&&(a.parent.node.style.position=a.parent.css.position),a.mode=-1}function n(){for(var a=H.length-1;a>=0;a--)l(H[a])}function o(){for(var a=H.length-1;a>=0;a--)m(H[a])}function p(a,b){var c=a.node.style;switch(b){case 0:c.position="absolute",c.left=a.offset.left+"px",c.right=a.offset.right+"px",c.top=a.offset.top+"px",c.bottom="auto",c.width="auto",c.marginLeft=0,c.marginRight=0,c.marginTop=0;break;case 1:c.position="fixed",c.left=a.box.left+"px",c.right=a.box.right+"px",c.top=a.css.top,c.bottom="auto",c.width="auto",c.marginLeft=0,c.marginRight=0,c.marginTop=0;break;case 2:c.position="absolute",c.left=a.offset.left+"px",c.right=a.offset.right+"px",c.top="auto",c.bottom=0,c.width="auto",c.marginLeft=0,c.marginRight=0}a.mode=b}function q(a){a.clone=document.createElement("div");var b=a.node.nextSibling||a.node,c=a.clone.style;c.height=a.height+"px",c.width=a.width+"px",c.marginTop=a.computed.marginTop,c.marginBottom=a.computed.marginBottom,c.marginLeft=a.computed.marginLeft,c.marginRight=a.computed.marginRight,c.padding=c.border=c.borderSpacing=0,c.fontSize="1em",c.position="static",c.cssFloat=a.computed.cssFloat,a.node.parentNode.insertBefore(a.clone,b)}function r(a){a.clone.parentNode.removeChild(a.clone),a.clone=void 0}function s(a){var b=getComputedStyle(a),c=a.parentNode,d=getComputedStyle(c),f=a.style.position;a.style.position="relative";var g={top:b.top,marginTop:b.marginTop,marginBottom:b.marginBottom,marginLeft:b.marginLeft,marginRight:b.marginRight,cssFloat:b.cssFloat,display:b.display},h={top:e(b.top),marginBottom:e(b.marginBottom),paddingLeft:e(b.paddingLeft),paddingRight:e(b.paddingRight),borderLeftWidth:e(b.borderLeftWidth),borderRightWidth:e(b.borderRightWidth)};a.style.position=f;var i={position:a.style.position,top:a.style.top,bottom:a.style.bottom,left:a.style.left,right:a.style.right,width:a.style.width,marginTop:a.style.marginTop,marginLeft:a.style.marginLeft,marginRight:a.style.marginRight},j=u(a),k=u(c),l={node:c,css:{position:c.style.position},computed:{position:d.position},numeric:{borderLeftWidth:e(d.borderLeftWidth),borderRightWidth:e(d.borderRightWidth),borderTopWidth:e(d.borderTopWidth),borderBottomWidth:e(d.borderBottomWidth)}},m={node:a,box:{left:j.win.left,right:J.clientWidth-j.win.right},offset:{top:j.win.top-k.win.top-l.numeric.borderTopWidth,left:j.win.left-k.win.left-l.numeric.borderLeftWidth,right:-j.win.right+k.win.right-l.numeric.borderRightWidth},css:i,isCell:"table-cell"==b.display,computed:g,numeric:h,width:j.win.right-j.win.left,height:j.win.bottom-j.win.top,mode:-1,inited:!1,parent:l,limit:{start:j.doc.top-h.top,end:k.doc.top+c.offsetHeight-l.numeric.borderBottomWidth-a.offsetHeight-h.top-h.marginBottom}};return m}function t(a){for(var b=0;a;)b+=a.offsetTop,a=a.offsetParent;return b}function u(a){var c=a.getBoundingClientRect();return{doc:{top:c.top+b.pageYOffset,left:c.left+b.pageXOffset},win:c}}function v(){G=setInterval(function(){!k()&&z()},500)}function w(){clearInterval(G)}function x(){I&&(document[L]?w():v())}function y(){I||(f(),n(),b.addEventListener("scroll",g),b.addEventListener("wheel",h),b.addEventListener("resize",z),b.addEventListener("orientationchange",z),a.addEventListener(M,x),v(),I=!0)}function z(){if(I){o();for(var a=H.length-1;a>=0;a--)H[a]=s(H[a].node);n()}}function A(){b.removeEventListener("scroll",g),b.removeEventListener("wheel",h),b.removeEventListener("resize",z),b.removeEventListener("orientationchange",z),a.removeEventListener(M,x),w(),I=!1}function B(){A(),o()}function C(){for(B();H.length;)H.pop()}function D(a){for(var b=H.length-1;b>=0;b--)if(H[b].node===a)return;var c=s(a);H.push(c),I?l(c):y()}function E(a){for(var b=H.length-1;b>=0;b--)H[b].node===a&&(m(H[b]),H.splice(b,1))}var F,G,H=[],I=!1,J=a.documentElement,K=function(){},L="hidden",M="visibilitychange";void 0!==a.webkitHidden&&(L="webkitHidden",M="webkitvisibilitychange"),b.getComputedStyle||c();for(var N=["","-webkit-","-moz-","-ms-"],O=document.createElement("div"),P=N.length-1;P>=0;P--){try{O.style.position=N[P]+"sticky"}catch(Q){}""!=O.style.position&&c()}f(),b.Stickyfill={stickies:H,add:D,remove:E,init:y,rebuild:z,pause:A,stop:B,kill:C}}(document,window),window.jQuery&&!function($){$.fn.Stickyfill=function(){return this.each(function(){Stickyfill.add(this)}),this}}(window.jQuery); !function(a){"use strict";function b(){}function c(){try{return document.activeElement}catch(a){}}function d(a,b){for(var c=0,d=a.length;d>c;c++)if(a[c]===b)return!0;return!1}function e(a,b,c){return a.addEventListener?a.addEventListener(b,c,!1):a.attachEvent?a.attachEvent("on"+b,c):void 0}function f(a,b){var c;a.createTextRange?(c=a.createTextRange(),c.move("character",b),c.select()):a.selectionStart&&(a.focus(),a.setSelectionRange(b,b))}function g(a,b){try{return a.type=b,!0}catch(c){return!1}}function h(a,b){if(a&&a.getAttribute(B))b(a);else for(var c,d=a?a.getElementsByTagName("input"):N,e=a?a.getElementsByTagName("textarea"):O,f=d?d.length:0,g=e?e.length:0,h=f+g,i=0;h>i;i++)c=f>i?d[i]:e[i-f],b(c)}function i(a){h(a,k)}function j(a){h(a,l)}function k(a,b){var c=!!b&&a.value!==b,d=a.value===a.getAttribute(B);if((c||d)&&"true"===a.getAttribute(C)){a.removeAttribute(C),a.value=a.value.replace(a.getAttribute(B),""),a.className=a.className.replace(A,"");var e=a.getAttribute(I);parseInt(e,10)>=0&&(a.setAttribute("maxLength",e),a.removeAttribute(I));var f=a.getAttribute(D);return f&&(a.type=f),!0}return!1}function l(a){var b=a.getAttribute(B);if(""===a.value&&b){a.setAttribute(C,"true"),a.value=b,a.className+=" "+z;var c=a.getAttribute(I);c||(a.setAttribute(I,a.maxLength),a.removeAttribute("maxLength"));var d=a.getAttribute(D);return d?a.type="text":"password"===a.type&&g(a,"text")&&a.setAttribute(D,"password"),!0}return!1}function m(a){return function(){P&&a.value===a.getAttribute(B)&&"true"===a.getAttribute(C)?f(a,0):k(a)}}function n(a){return function(){l(a)}}function o(a){return function(){i(a)}}function p(a){return function(b){return v=a.value,"true"===a.getAttribute(C)&&v===a.getAttribute(B)&&d(x,b.keyCode)?(b.preventDefault&&b.preventDefault(),!1):void 0}}function q(a){return function(){k(a,v),""===a.value&&(a.blur(),f(a,0))}}function r(a){return function(){a===c()&&a.value===a.getAttribute(B)&&"true"===a.getAttribute(C)&&f(a,0)}}function s(a){var b=a.form;b&&"string"==typeof b&&(b=document.getElementById(b),b.getAttribute(E)||(e(b,"submit",o(b)),b.setAttribute(E,"true"))),e(a,"focus",m(a)),e(a,"blur",n(a)),P&&(e(a,"keydown",p(a)),e(a,"keyup",q(a)),e(a,"click",r(a))),a.setAttribute(F,"true"),a.setAttribute(B,T),(P||a!==c())&&l(a)}var t=document.createElement("input"),u=void 0!==t.placeholder;if(a.Placeholders={nativeSupport:u,disable:u?b:i,enable:u?b:j},!u){var v,w=["text","search","url","tel","email","password","number","textarea"],x=[27,33,34,35,36,37,38,39,40,8,46],y="#ccc",z="placeholdersjs",A=new RegExp("(?:^|\\s)"+z+"(?!\\S)"),B="data-placeholder-value",C="data-placeholder-active",D="data-placeholder-type",E="data-placeholder-submit",F="data-placeholder-bound",G="data-placeholder-focus",H="data-placeholder-live",I="data-placeholder-maxlength",J=100,K=document.getElementsByTagName("head")[0],L=document.documentElement,M=a.Placeholders,N=document.getElementsByTagName("input"),O=document.getElementsByTagName("textarea"),P="false"===L.getAttribute(G),Q="false"!==L.getAttribute(H),R=document.createElement("style");R.type="text/css";var S=document.createTextNode("."+z+" {color:"+y+";}");R.styleSheet?R.styleSheet.cssText=S.nodeValue:R.appendChild(S),K.insertBefore(R,K.firstChild);for(var T,U,V=0,W=N.length+O.length;W>V;V++)U=Va;a++)U=a=0){ return this.settings.strings.inPast; } var seconds=Math.abs(distanceMillis) / 1000; var minutes=seconds / 60; var hours=minutes / 60; var days=hours / 24; var years=days / 365; function substitute(stringOrFunction, number){ var string=$.isFunction(stringOrFunction) ? stringOrFunction(number, distanceMillis):stringOrFunction; var value=($l.numbers&&$l.numbers[number])||number; return string.replace(/%d/i, value); } var words=seconds < 45&&substitute($l.seconds, Math.round(seconds)) || seconds < 90&&substitute($l.minute, 1) || minutes < 45&&substitute($l.minutes, Math.round(minutes)) || minutes < 90&&substitute($l.hour, 1) || hours < 24&&substitute($l.hours, Math.round(hours)) || hours < 42&&substitute($l.day, 1) || days < 30&&substitute($l.days, Math.round(days)) || days < 45&&substitute($l.month, 1) || days < 365&&substitute($l.months, Math.round(days / 30)) || years < 1.5&&substitute($l.year, 1) || substitute($l.years, Math.round(years)); var separator=$l.wordSeparator||""; if($l.wordSeparator===undefined){ separator=" "; } return $.trim([prefix, words, suffix].join(separator)); }, parse: function(iso8601){ var s=$.trim(iso8601); s=s.replace(/\.\d+/,""); s=s.replace(/-/,"/").replace(/-/,"/"); s=s.replace(/T/," ").replace(/Z/," UTC"); s=s.replace(/([\+\-]\d\d)\:?(\d\d)/," $1$2"); s=s.replace(/([\+\-]\d\d)$/," $100"); return new Date(s); }, datetime: function(elem){ var iso8601=$t.isTime(elem) ? $(elem).attr("datetime"):$(elem).attr("title"); return $t.parse(iso8601); }, isTime: function(elem){ return $(elem).get(0).tagName.toLowerCase()==="time"; }}); var functions={ init: function(){ var refresh_el=$.proxy(refresh, this); refresh_el(); var $s=$t.settings; if($s.refreshMillis > 0){ this._timeagoInterval=setInterval(refresh_el, $s.refreshMillis); }}, update: function(timestamp){ var date=(timestamp instanceof Date) ? timestamp:$t.parse(timestamp); $(this).data('timeago', { datetime: date }); if($t.settings.localeTitle) $(this).attr("title", date.toLocaleString()); refresh.apply(this); }, updateFromDOM: function(){ $(this).data('timeago', { datetime: $t.parse($t.isTime(this) ? $(this).attr("datetime"):$(this).attr("title")) }); refresh.apply(this); }, dispose: function (){ if(this._timeagoInterval){ window.clearInterval(this._timeagoInterval); this._timeagoInterval=null; }} }; $.fn.timeago=function(action, options){ var fn=action ? functions[action]:functions.init; if(!fn){ throw new Error("Unknown function name '"+ action +"' for timeago"); } this.each(function(){ fn.call(this, options); }); return this; }; function refresh(){ var $s=$t.settings; if($s.autoDispose&&!$.contains(document.documentElement,this)){ $(this).timeago("dispose"); return this; } var data=prepareData(this); if(!isNaN(data.datetime)){ if($s.cutoff==0||Math.abs(distance(data.datetime)) < $s.cutoff){ $(this).text(inWords(data.datetime)); }} return this; } function prepareData(element){ element=$(element); if(!element.data("timeago")){ element.data("timeago", { datetime: $t.datetime(element) }); var text=$.trim(element.text()); if($t.settings.localeTitle){ element.attr("title", element.data('timeago').datetime.toLocaleString()); }else if(text.length > 0&&!($t.isTime(element)&&element.attr("title"))){ element.attr("title", text); }} return element.data("timeago"); } function inWords(date){ return $t.inWords(distance(date)); } function distance(date){ return (new Date().getTime() - date.getTime()); } document.createElement("abbr"); document.createElement("time"); })); jQuery.timeago.settings.strings={ prefixAgo: null, prefixFromNow: null, suffixAgo: "ago", suffixFromNow: "from now", seconds: "less than a minute", minute: "about a minute", minutes: "%d minutes", hour: "about an hour", hours: "about %d hours", day: "a day", days: "%d days", month: "about a month", months: "%d months", year: "about a year", years: "%d years", wordSeparator: " ", numbers: [] }; window.matchMedia||(window.matchMedia=function(){ "use strict"; var styleMedia=(window.styleMedia||window.media); if(!styleMedia){ var style=document.createElement('style'), script=document.getElementsByTagName('script')[0], info=null; style.type='text/css'; style.id='matchmediajs-test'; script.parentNode.insertBefore(style, script); info=('getComputedStyle' in window)&&window.getComputedStyle(style, null)||style.currentStyle; styleMedia={ matchMedium: function(media){ var text='@media ' + media + '{ #matchmediajs-test { width: 1px; }}'; if(style.styleSheet){ style.styleSheet.cssText=text; }else{ style.textContent=text; } return info.width==='1px'; }};} return function(media){ return { matches: styleMedia.matchMedium(media||'all'), media: media||'all' };}; }()); (function(){ if(window.matchMedia&&window.matchMedia('all').addListener){ return false; } var localMatchMedia=window.matchMedia, hasMediaQueries=localMatchMedia('only all').matches, isListening=false, timeoutID=0, queries=[], handleChange=function(evt){ clearTimeout(timeoutID); timeoutID=setTimeout(function(){ for (var i=0, il=queries.length; i < il; i++){ var mql=queries[i].mql, listeners=queries[i].listeners||[], matches=localMatchMedia(mql.media).matches; if(matches!==mql.matches){ mql.matches=matches; for (var j=0, jl=listeners.length; j < jl; j++){ listeners[j].call(window, mql); }} }}, 30); }; window.matchMedia=function(media){ var mql=localMatchMedia(media), listeners=[], index=0; mql.addListener=function(listener){ if(!hasMediaQueries){ return; } if(!isListening){ isListening=true; window.addEventListener('resize', handleChange, true); } if(index===0){ index=queries.push({ mql:mql, listeners:listeners }); } listeners.push(listener); }; mql.removeListener=function(listener){ for (var i=0, il=listeners.length; i < il; i++){ if(listeners[i]===listener){ listeners.splice(i, 1); }} }; return mql; };}()); window.matchMedia||(window.matchMedia=function(){"use strict";var a=window.styleMedia||window.media;if(!a){var b=document.createElement("style"),c=document.getElementsByTagName("script")[0],d=null;b.type="text/css",b.id="matchmediajs-test",c.parentNode.insertBefore(b,c),d="getComputedStyle"in window&&window.getComputedStyle(b,null)||b.currentStyle,a={matchMedium:function(a){var c="@media "+a+"{ #matchmediajs-test { width: 1px; }}";return b.styleSheet?b.styleSheet.cssText=c:b.textContent=c,"1px"===d.width}}}return function(b){return{matches:a.matchMedium(b||"all"),media:b||"all"}}}()),function(a,b,c){"use strict";function d(b){"object"==typeof module&&"object"==typeof module.exports?module.exports=b:"function"==typeof define&&define.amd&&define("picturefill",function(){return b}),"object"==typeof a&&(a.picturefill=b)}function e(a){var b,c,d,e,f,i=a||{};b=i.elements||g.getAllElements();for(var j=0,k=b.length;k>j;j++)if(c=b[j],d=c.parentNode,e=void 0,f=void 0,"IMG"===c.nodeName.toUpperCase()&&(c[g.ns]||(c[g.ns]={}),i.reevaluate||!c[g.ns].evaluated)){if(d&&"PICTURE"===d.nodeName.toUpperCase()){if(g.removeVideoShim(d),e=g.getMatch(c,d),e===!1)continue}else e=void 0;(d&&"PICTURE"===d.nodeName.toUpperCase()||!g.sizesSupported&&c.srcset&&h.test(c.srcset))&&g.dodgeSrcset(c),e?(f=g.processSourceSet(e),g.applyBestCandidate(f,c)):(f=g.processSourceSet(c),(void 0===c.srcset||c[g.ns].srcset)&&g.applyBestCandidate(f,c)),c[g.ns].evaluated=!0}}function f(){function c(){clearTimeout(d),d=setTimeout(h,60)}g.initTypeDetects(),e();var d,f=setInterval(function(){return e(),/^loaded|^i|^c/.test(b.readyState)?void clearInterval(f):void 0},250),h=function(){e({reevaluate:!0})};a.addEventListener?a.addEventListener("resize",c,!1):a.attachEvent&&a.attachEvent("onresize",c)}if(a.HTMLPictureElement)return void d(function(){});b.createElement("picture");var g=a.picturefill||{},h=/\s+\+?\d+(e\d+)?w/;g.ns="picturefill",function(){g.srcsetSupported="srcset"in c,g.sizesSupported="sizes"in c,g.curSrcSupported="currentSrc"in c}(),g.trim=function(a){return a.trim?a.trim():a.replace(/^\s+|\s+$/g,"")},g.makeUrl=function(){var a=b.createElement("a");return function(b){return a.href=b,a.href}}(),g.restrictsMixedContent=function(){return"https:"===a.location.protocol},g.matchesMedia=function(b){return a.matchMedia&&a.matchMedia(b).matches},g.getDpr=function(){return a.devicePixelRatio||1},g.getWidthFromLength=function(a){var c;if(!a||a.indexOf("%")>-1!=!1||!(parseFloat(a)>0||a.indexOf("calc(")>-1))return!1;a=a.replace("vw","%"),g.lengthEl||(g.lengthEl=b.createElement("div"),g.lengthEl.style.cssText="border:0;display:block;font-size:1em;left:0;margin:0;padding:0;position:absolute;visibility:hidden",g.lengthEl.className="helper-from-picturefill-js"),g.lengthEl.style.width="0px";try{g.lengthEl.style.width=a}catch(d){}return b.body.appendChild(g.lengthEl),c=g.lengthEl.offsetWidth,0>=c&&(c=!1),b.body.removeChild(g.lengthEl),c},g.detectTypeSupport=function(b,c){var d=new a.Image;return d.onerror=function(){g.types[b]=!1,e()},d.onload=function(){g.types[b]=1===d.width,e()},d.src=c,"pending"},g.types=g.types||{},g.initTypeDetects=function(){g.types["image/jpeg"]=!0,g.types["image/gif"]=!0,g.types["image/png"]=!0,g.types["image/svg+xml"]=b.implementation.hasFeature("http://www.w3.org/TR/SVG11/feature#Image","1.1"),g.types["image/webp"]=g.detectTypeSupport("image/webp","data:image/webp;base64,UklGRh4AAABXRUJQVlA4TBEAAAAvAAAAAAfQ//73v/+BiOh/AAA=")},g.verifyTypeSupport=function(a){var b=a.getAttribute("type");if(null===b||""===b)return!0;var c=g.types[b];return"string"==typeof c&&"pending"!==c?(g.types[b]=g.detectTypeSupport(b,c),"pending"):"function"==typeof c?(c(),"pending"):c},g.parseSize=function(a){var b=/(\([^)]+\))?\s*(.+)/g.exec(a);return{media:b&&b[1],length:b&&b[2]}},g.findWidthFromSourceSize=function(c){for(var d,e=g.trim(c).split(/\s*,\s*/),f=0,h=e.length;h>f;f++){var i=e[f],j=g.parseSize(i),k=j.length,l=j.media;if(k&&(!l||g.matchesMedia(l))&&(d=g.getWidthFromLength(k)))break}return d||Math.max(a.innerWidth||0,b.documentElement.clientWidth)},g.parseSrcset=function(a){for(var b=[];""!==a;){a=a.replace(/^\s+/g,"");var c,d=a.search(/\s/g),e=null;if(-1!==d){c=a.slice(0,d);var f=c.slice(-1);if((","===f||""===c)&&(c=c.replace(/,+$/,""),e=""),a=a.slice(d+1),null===e){var g=a.indexOf(",");-1!==g?(e=a.slice(0,g),a=a.slice(g+1)):(e=a,a="")}}else c=a,a="";(c||e)&&b.push({url:c,descriptor:e})}return b},g.parseDescriptor=function(a,b){var c,d=b||"100vw",e=a&&a.replace(/(^\s+|\s+$)/g,""),f=g.findWidthFromSourceSize(d);if(e)for(var h=e.split(" "),i=h.length-1;i>=0;i--){var j=h[i],k=j&&j.slice(j.length-1);if("h"!==k&&"w"!==k||g.sizesSupported){if("x"===k){var l=j&&parseFloat(j,10);c=l&&!isNaN(l)?l:1}}else c=parseFloat(parseInt(j,10)/f)}return c||1},g.getCandidatesFromSourceSet=function(a,b){for(var c=g.parseSrcset(a),d=[],e=0,f=c.length;f>e;e++){var h=c[e];d.push({url:h.url,resolution:g.parseDescriptor(h.descriptor,b)})}return d},g.dodgeSrcset=function(a){a.srcset&&(a[g.ns].srcset=a.srcset,a.srcset="",a.setAttribute("data-pfsrcset",a[g.ns].srcset))},g.processSourceSet=function(a){var b=a.getAttribute("srcset"),c=a.getAttribute("sizes"),d=[];return"IMG"===a.nodeName.toUpperCase()&&a[g.ns]&&a[g.ns].srcset&&(b=a[g.ns].srcset),b&&(d=g.getCandidatesFromSourceSet(b,c)),d},g.backfaceVisibilityFix=function(a){var b=a.style||{},c="webkitBackfaceVisibility"in b,d=b.zoom;c&&(b.zoom=".999",c=a.offsetWidth,b.zoom=d)},g.setIntrinsicSize=function(){var c={},d=function(a,b,c){b&&a.setAttribute("width",parseInt(b/c,10))};return function(e,f){var h;e[g.ns]&&!a.pfStopIntrinsicSize&&(void 0===e[g.ns].dims&&(e[g.ns].dims=e.getAttribute("width")||e.getAttribute("height")),e[g.ns].dims||(f.url in c?d(e,c[f.url],f.resolution):(h=b.createElement("img"),h.onload=function(){if(c[f.url]=h.width,!c[f.url])try{b.body.appendChild(h),c[f.url]=h.width||h.offsetWidth,b.body.removeChild(h)}catch(a){}e.src===f.url&&d(e,c[f.url],f.resolution),e=null,h.onload=null,h=null},h.src=f.url)))}}(),g.applyBestCandidate=function(a,b){var c,d,e;a.sort(g.ascendingSort),d=a.length,e=a[d-1];for(var f=0;d>f;f++)if(c=a[f],c.resolution>=g.getDpr()){e=c;break}e&&(e.url=g.makeUrl(e.url),b.src!==e.url&&(g.restrictsMixedContent()&&"http:"===e.url.substr(0,"http:".length).toLowerCase()?void 0!==window.console&&console.warn("Blocked mixed content image "+e.url):(b.src=e.url,g.curSrcSupported||(b.currentSrc=b.src),g.backfaceVisibilityFix(b))),g.setIntrinsicSize(b,e))},g.ascendingSort=function(a,b){return a.resolution-b.resolution},g.removeVideoShim=function(a){var b=a.getElementsByTagName("video");if(b.length){for(var c=b[0],d=c.getElementsByTagName("source");d.length;)a.insertBefore(d[0],c);c.parentNode.removeChild(c)}},g.getAllElements=function(){for(var a=[],c=b.getElementsByTagName("img"),d=0,e=c.length;e>d;d++){var f=c[d];("PICTURE"===f.parentNode.nodeName.toUpperCase()||null!==f.getAttribute("srcset")||f[g.ns]&&null!==f[g.ns].srcset)&&a.push(f)}return a},g.getMatch=function(a,b){for(var c,d=b.childNodes,e=0,f=d.length;f>e;e++){var h=d[e];if(1===h.nodeType){if(h===a)return c;if("SOURCE"===h.nodeName.toUpperCase()){null!==h.getAttribute("src")&&void 0!==typeof console&&console.warn("The `src` attribute is invalid on `picture` `source` element; instead, use `srcset`.");var i=h.getAttribute("media");if(h.getAttribute("srcset")&&(!i||g.matchesMedia(i))){var j=g.verifyTypeSupport(h);if(j===!0){c=h;break}if("pending"===j)return!1}}}}return c},f(),e._=g,d(e)}(window,window.document,new window.Image); !function(){"use strict";function t(o){if(!o)throw new Error("No options passed to Waypoint constructor");if(!o.element)throw new Error("No element option passed to Waypoint constructor");if(!o.handler)throw new Error("No handler option passed to Waypoint constructor");this.key="waypoint-"+e,this.options=t.Adapter.extend({},t.defaults,o),this.element=this.options.element,this.adapter=new t.Adapter(this.element),this.callback=o.handler,this.axis=this.options.horizontal?"horizontal":"vertical",this.enabled=this.options.enabled,this.triggerPoint=null,this.group=t.Group.findOrCreate({name:this.options.group,axis:this.axis}),this.context=t.Context.findOrCreateByElement(this.options.context),t.offsetAliases[this.options.offset]&&(this.options.offset=t.offsetAliases[this.options.offset]),this.group.add(this),this.context.add(this),i[this.key]=this,e+=1}var e=0,i={};t.prototype.queueTrigger=function(t){this.group.queueTrigger(this,t)},t.prototype.trigger=function(t){this.enabled&&this.callback&&this.callback.apply(this,t)},t.prototype.destroy=function(){this.context.remove(this),this.group.remove(this),delete i[this.key]},t.prototype.disable=function(){return this.enabled=!1,this},t.prototype.enable=function(){return this.context.refresh(),this.enabled=!0,this},t.prototype.next=function(){return this.group.next(this)},t.prototype.previous=function(){return this.group.previous(this)},t.invokeAll=function(t){var e=[];for(var o in i)e.push(i[o]);for(var n=0,r=e.length;r>n;n++)e[n][t]()},t.destroyAll=function(){t.invokeAll("destroy")},t.disableAll=function(){t.invokeAll("disable")},t.enableAll=function(){t.invokeAll("enable")},t.refreshAll=function(){t.Context.refreshAll()},t.viewportHeight=function(){return window.innerHeight||document.documentElement.clientHeight},t.viewportWidth=function(){return document.documentElement.clientWidth},t.adapters=[],t.defaults={context:window,continuous:!0,enabled:!0,group:"default",horizontal:!1,offset:0},t.offsetAliases={"bottom-in-view":function(){return this.context.innerHeight()-this.adapter.outerHeight()},"right-in-view":function(){return this.context.innerWidth()-this.adapter.outerWidth()}},window.Waypoint=t}(),function(){"use strict";function t(t){window.setTimeout(t,1e3/60)}function e(t){this.element=t,this.Adapter=n.Adapter,this.adapter=new this.Adapter(t),this.key="waypoint-context-"+i,this.didScroll=!1,this.didResize=!1,this.oldScroll={x:this.adapter.scrollLeft(),y:this.adapter.scrollTop()},this.waypoints={vertical:{},horizontal:{}},t.waypointContextKey=this.key,o[t.waypointContextKey]=this,i+=1,this.createThrottledScrollHandler(),this.createThrottledResizeHandler()}var i=0,o={},n=window.Waypoint,r=window.onload;e.prototype.add=function(t){var e=t.options.horizontal?"horizontal":"vertical";this.waypoints[e][t.key]=t,this.refresh()},e.prototype.checkEmpty=function(){var t=this.Adapter.isEmptyObject(this.waypoints.horizontal),e=this.Adapter.isEmptyObject(this.waypoints.vertical);t&&e&&(this.adapter.off(".waypoints"),delete o[this.key])},e.prototype.createThrottledResizeHandler=function(){function t(){e.handleResize(),e.didResize=!1}var e=this;this.adapter.on("resize.waypoints",function(){e.didResize||(e.didResize=!0,n.requestAnimationFrame(t))})},e.prototype.createThrottledScrollHandler=function(){function t(){e.handleScroll(),e.didScroll=!1}var e=this;this.adapter.on("scroll.waypoints",function(){(!e.didScroll||n.isTouch)&&(e.didScroll=!0,n.requestAnimationFrame(t))})},e.prototype.handleResize=function(){n.Context.refreshAll()},e.prototype.handleScroll=function(){var t={},e={horizontal:{newScroll:this.adapter.scrollLeft(),oldScroll:this.oldScroll.x,forward:"right",backward:"left"},vertical:{newScroll:this.adapter.scrollTop(),oldScroll:this.oldScroll.y,forward:"down",backward:"up"}};for(var i in e){var o=e[i],n=o.newScroll>o.oldScroll,r=n?o.forward:o.backward;for(var s in this.waypoints[i]){var a=this.waypoints[i][s],l=o.oldScroll=a.triggerPoint,p=l&&h,u=!l&&!h;(p||u)&&(a.queueTrigger(r),t[a.group.id]=a.group)}}for(var c in t)t[c].flushTriggers();this.oldScroll={x:e.horizontal.newScroll,y:e.vertical.newScroll}},e.prototype.innerHeight=function(){return this.element==this.element.window?n.viewportHeight():this.adapter.innerHeight()},e.prototype.remove=function(t){delete this.waypoints[t.axis][t.key],this.checkEmpty()},e.prototype.innerWidth=function(){return this.element==this.element.window?n.viewportWidth():this.adapter.innerWidth()},e.prototype.destroy=function(){var t=[];for(var e in this.waypoints)for(var i in this.waypoints[e])t.push(this.waypoints[e][i]);for(var o=0,n=t.length;n>o;o++)t[o].destroy()},e.prototype.refresh=function(){var t,e=this.element==this.element.window,i=e?void 0:this.adapter.offset(),o={};this.handleScroll(),t={horizontal:{contextOffset:e?0:i.left,contextScroll:e?0:this.oldScroll.x,contextDimension:this.innerWidth(),oldScroll:this.oldScroll.x,forward:"right",backward:"left",offsetProp:"left"},vertical:{contextOffset:e?0:i.top,contextScroll:e?0:this.oldScroll.y,contextDimension:this.innerHeight(),oldScroll:this.oldScroll.y,forward:"down",backward:"up",offsetProp:"top"}};for(var r in t){var s=t[r];for(var a in this.waypoints[r]){var l,h,p,u,c,d=this.waypoints[r][a],f=d.options.offset,w=d.triggerPoint,y=0,g=null==w;d.element!==d.element.window&&(y=d.adapter.offset()[s.offsetProp]),"function"==typeof f?f=f.apply(d):"string"==typeof f&&(f=parseFloat(f),d.options.offset.indexOf("%")>-1&&(f=Math.ceil(s.contextDimension*f/100))),l=s.contextScroll-s.contextOffset,d.triggerPoint=y+l-f,h=w=s.oldScroll,u=h&&p,c=!h&&!p,!g&&u?(d.queueTrigger(s.backward),o[d.group.id]=d.group):!g&&c?(d.queueTrigger(s.forward),o[d.group.id]=d.group):g&&s.oldScroll>=d.triggerPoint&&(d.queueTrigger(s.forward),o[d.group.id]=d.group)}}return n.requestAnimationFrame(function(){for(var t in o)o[t].flushTriggers()}),this},e.findOrCreateByElement=function(t){return e.findByElement(t)||new e(t)},e.refreshAll=function(){for(var t in o)o[t].refresh()},e.findByElement=function(t){return o[t.waypointContextKey]},window.onload=function(){r&&r(),e.refreshAll()},n.requestAnimationFrame=function(e){var i=window.requestAnimationFrame||window.mozRequestAnimationFrame||window.webkitRequestAnimationFrame||t;i.call(window,e)},n.Context=e}(),function(){"use strict";function t(t,e){return t.triggerPoint-e.triggerPoint}function e(t,e){return e.triggerPoint-t.triggerPoint}function i(t){this.name=t.name,this.axis=t.axis,this.id=this.name+"-"+this.axis,this.waypoints=[],this.clearTriggerQueues(),o[this.axis][this.name]=this}var o={vertical:{},horizontal:{}},n=window.Waypoint;i.prototype.add=function(t){this.waypoints.push(t)},i.prototype.clearTriggerQueues=function(){this.triggerQueues={up:[],down:[],left:[],right:[]}},i.prototype.flushTriggers=function(){for(var i in this.triggerQueues){var o=this.triggerQueues[i],n="up"===i||"left"===i;o.sort(n?e:t);for(var r=0,s=o.length;s>r;r+=1){var a=o[r];(a.options.continuous||r===o.length-1)&&a.trigger([i])}}this.clearTriggerQueues()},i.prototype.next=function(e){this.waypoints.sort(t);var i=n.Adapter.inArray(e,this.waypoints),o=i===this.waypoints.length-1;return o?null:this.waypoints[i+1]},i.prototype.previous=function(e){this.waypoints.sort(t);var i=n.Adapter.inArray(e,this.waypoints);return i?this.waypoints[i-1]:null},i.prototype.queueTrigger=function(t,e){this.triggerQueues[e].push(t)},i.prototype.remove=function(t){var e=n.Adapter.inArray(t,this.waypoints);e>-1&&this.waypoints.splice(e,1)},i.prototype.first=function(){return this.waypoints[0]},i.prototype.last=function(){return this.waypoints[this.waypoints.length-1]},i.findOrCreate=function(t){return o[t.axis][t.name]||new i(t)},n.Group=i}(),function(){"use strict";function t(t){this.$element=e(t)}var e=window.jQuery,i=window.Waypoint;e.each(["innerHeight","innerWidth","off","offset","on","outerHeight","outerWidth","scrollLeft","scrollTop"],function(e,i){t.prototype[i]=function(){var t=Array.prototype.slice.call(arguments);return this.$element[i].apply(this.$element,t)}}),e.each(["extend","inArray","isEmptyObject"],function(i,o){t[o]=e[o]}),i.adapters.push({name:"jquery",Adapter:t}),i.Adapter=t}(),function(){"use strict";function t(t){return function(){var i=[],o=arguments[0];return t.isFunction(arguments[0])&&(o=t.extend({},arguments[1]),o.handler=arguments[0]),this.each(function(){var n=t.extend({},o,{element:this});"string"==typeof n.context&&(n.context=t(this).closest(n.context)[0]),i.push(new e(n))}),i}}var e=window.Waypoint;window.jQuery&&(window.jQuery.fn.waypoint=t(window.jQuery)),window.Zepto&&(window.Zepto.fn.waypoint=t(window.Zepto))}(); /* SuperGif Example usage: Image tag attributes: rel:animated_src - If this url is specified, it's loaded into the player instead of src. This allows a preview frame to be shown until animated gif data is streamed into the canvas rel:auto_play - Defaults to 1 if not specified. If set to zero, a call to the play() method is needed Constructor options args gif Required. The DOM element of an img tag. loop_mode Optional. Setting this to false will force disable looping of the gif. auto_play Optional. Same as the rel:auto_play attribute above, this arg overrides the img tag info. max_width Optional. Scale images over max_width down to max_width. Helpful with mobile. on_end Optional. Add a callback for when the gif reaches the end of a single loop (one iteration). The first argument passed will be the gif HTMLElement. loop_delay Optional. The amount of time to pause (in ms) after each single loop (iteration). draw_while_loading Optional. Determines whether the gif will be drawn to the canvas whilst it is loaded. show_progress_bar Optional. Only applies when draw_while_loading is set to true. Instance methods load(callback) Loads the gif specified by the src or rel:animated_src sttributie of the img tag into a canvas element and then calls callback if one is passed load_url(src, callback) Loads the gif file specified in the src argument into a canvas element and then calls callback if one is passed play - Start playing the gif pause - Stop playing the gif move_to(i) - Move to frame i of the gif move_relative(i) - Move i frames ahead (or behind if i < 0) get_canvas The canvas element that the gif is playing in. Handy for assigning event handlers to. get_playing Whether or not the gif is currently playing get_loading Whether or not the gif has finished loading/parsing get_auto_play Whether or not the gif is set to play automatically get_length The number of frames in the gif get_current_frame The index of the currently displayed frame of the gif For additional customization (viewport inside iframe) these params may be passed: c_w, c_h - width and height of canvas vp_t, vp_l, vp_ w, vp_h - top, left, width and height of the viewport A bonus: few articles to understand what is going on http://enthusiasms.org/post/16976438906 http://www.matthewflickinger.com/lab/whatsinagif/bits_and_bytes.asp http://humpy77.deviantart.com/journal/Frame-Delay-Times-for-Animated-GIFs-214150546 */ (function (root, factory){ if(typeof define==='function'&&define.amd){ define([], factory); }else if(typeof exports==='object'){ module.exports=factory(); }else{ root.SuperGif=factory(); }}(this, function (){ var bitsToNum=function (ba){ return ba.reduce(function (s, n){ return s * 2 + n; }, 0); }; var byteToBitArr=function (bite){ var a=[]; for (var i=7; i >=0; i--){ a.push(!! (bite & (1 << i))); } return a; }; var Stream=function (data){ this.data=data; this.len=this.data.length; this.pos=0; this.readByte=function (){ if(this.pos >=this.data.length){ throw new Error('Attempted to read past end of stream.'); } if(data instanceof Uint8Array) return data[this.pos++]; else return data.charCodeAt(this.pos++) & 0xFF; }; this.readBytes=function (n){ var bytes=[]; for (var i=0; i < n; i++){ bytes.push(this.readByte()); } return bytes; }; this.read=function (n){ var s=''; for (var i=0; i < n; i++){ s +=String.fromCharCode(this.readByte()); } return s; }; this.readUnsigned=function (){ var a=this.readBytes(2); return (a[1] << 8) + a[0]; };}; var lzwDecode=function (minCodeSize, data){ var pos=0; var readCode=function (size){ var code=0; for (var i=0; i < size; i++){ if(data.charCodeAt(pos >> 3) & (1 << (pos & 7))){ code |=1 << i; } pos++; } return code; }; var output=[]; var clearCode=1 << minCodeSize; var eoiCode=clearCode + 1; var codeSize=minCodeSize + 1; var dict=[]; var clear=function (){ dict=[]; codeSize=minCodeSize + 1; for (var i=0; i < clearCode; i++){ dict[i]=[i]; } dict[clearCode]=[]; dict[eoiCode]=null; }; var code; var last; while (true){ last=code; code=readCode(codeSize); if(code===clearCode){ clear(); continue; } if(code===eoiCode) break; if(code < dict.length){ if(last!==clearCode){ dict.push(dict[last].concat(dict[code][0])); }}else{ if(code!==dict.length) throw new Error('Invalid LZW code.'); dict.push(dict[last].concat(dict[last][0])); } output.push.apply(output, dict[code]); if(dict.length===(1 << codeSize)&&codeSize < 12){ codeSize++; }} return output; }; var parseGIF=function (st, handler){ handler||(handler={}); var parseCT=function (entries){ var ct=[]; for (var i=0; i < entries; i++){ ct.push(st.readBytes(3)); } return ct; }; var readSubBlocks=function (){ var size, data; data=''; do { size=st.readByte(); data +=st.read(size); } while (size!==0); return data; }; var parseHeader=function (){ var hdr={}; hdr.sig=st.read(3); hdr.ver=st.read(3); if(hdr.sig!=='GIF') throw new Error('Not a GIF file.'); hdr.width=st.readUnsigned(); hdr.height=st.readUnsigned(); var bits=byteToBitArr(st.readByte()); hdr.gctFlag=bits.shift(); hdr.colorRes=bitsToNum(bits.splice(0, 3)); hdr.sorted=bits.shift(); hdr.gctSize=bitsToNum(bits.splice(0, 3)); hdr.bgColor=st.readByte(); hdr.pixelAspectRatio=st.readByte(); if(hdr.gctFlag){ hdr.gct=parseCT(1 << (hdr.gctSize + 1)); } handler.hdr&&handler.hdr(hdr); }; var parseExt=function (block){ var parseGCExt=function (block){ var blockSize=st.readByte(); var bits=byteToBitArr(st.readByte()); block.reserved=bits.splice(0, 3); block.disposalMethod=bitsToNum(bits.splice(0, 3)); block.userInput=bits.shift(); block.transparencyGiven=bits.shift(); block.delayTime=st.readUnsigned(); block.transparencyIndex=st.readByte(); block.terminator=st.readByte(); handler.gce&&handler.gce(block); }; var parseComExt=function (block){ block.comment=readSubBlocks(); handler.com&&handler.com(block); }; var parsePTExt=function (block){ var blockSize=st.readByte(); block.ptHeader=st.readBytes(12); block.ptData=readSubBlocks(); handler.pte&&handler.pte(block); }; var parseAppExt=function (block){ var parseNetscapeExt=function (block){ var blockSize=st.readByte(); block.unknown=st.readByte(); block.iterations=st.readUnsigned(); block.terminator=st.readByte(); handler.app&&handler.app.NETSCAPE&&handler.app.NETSCAPE(block); }; var parseUnknownAppExt=function (block){ block.appData=readSubBlocks(); handler.app&&handler.app[block.identifier]&&handler.app[block.identifier](block); }; var blockSize=st.readByte(); block.identifier=st.read(8); block.authCode=st.read(3); switch (block.identifier){ case 'NETSCAPE': parseNetscapeExt(block); break; default: parseUnknownAppExt(block); break; }}; var parseUnknownExt=function (block){ block.data=readSubBlocks(); handler.unknown&&handler.unknown(block); }; block.label=st.readByte(); switch (block.label){ case 0xF9: block.extType='gce'; parseGCExt(block); break; case 0xFE: block.extType='com'; parseComExt(block); break; case 0x01: block.extType='pte'; parsePTExt(block); break; case 0xFF: block.extType='app'; parseAppExt(block); break; default: block.extType='unknown'; parseUnknownExt(block); break; }}; var parseImg=function (img){ var deinterlace=function (pixels, width){ var newPixels=new Array(pixels.length); var rows=pixels.length / width; var cpRow=function (toRow, fromRow){ var fromPixels=pixels.slice(fromRow * width, (fromRow + 1) * width); newPixels.splice.apply(newPixels, [toRow * width, width].concat(fromPixels)); }; var offsets=[0, 4, 2, 1]; var steps=[8, 8, 4, 2]; var fromRow=0; for (var pass=0; pass < 4; pass++){ for (var toRow=offsets[pass]; toRow < rows; toRow +=steps[pass]){ cpRow(toRow, fromRow) fromRow++; }} return newPixels; }; img.leftPos=st.readUnsigned(); img.topPos=st.readUnsigned(); img.width=st.readUnsigned(); img.height=st.readUnsigned(); var bits=byteToBitArr(st.readByte()); img.lctFlag=bits.shift(); img.interlaced=bits.shift(); img.sorted=bits.shift(); img.reserved=bits.splice(0, 2); img.lctSize=bitsToNum(bits.splice(0, 3)); if(img.lctFlag){ img.lct=parseCT(1 << (img.lctSize + 1)); } img.lzwMinCodeSize=st.readByte(); var lzwData=readSubBlocks(); img.pixels=lzwDecode(img.lzwMinCodeSize, lzwData); if(img.interlaced){ img.pixels=deinterlace(img.pixels, img.width); } handler.img&&handler.img(img); }; var parseBlock=function (){ var block={}; block.sentinel=st.readByte(); switch (String.fromCharCode(block.sentinel)){ case '!': block.type='ext'; parseExt(block); break; case ',': block.type='img'; parseImg(block); break; case ';': block.type='eof'; handler.eof&&handler.eof(block); break; default: throw new Error('Unknown block: 0x' + block.sentinel.toString(16)); } if(block.type!=='eof') setTimeout(parseBlock, 0); }; var parse=function (){ parseHeader(); setTimeout(parseBlock, 0); }; parse(); }; var SuperGif=function(opts){ var options={ vp_l: 0, vp_t: 0, vp_w: null, vp_h: null, c_w: null, c_h: null }; for (var i in opts){ options[i]=opts[i] } if(options.vp_w&&options.vp_h) options.is_vp=true; var stream; var hdr; var loadError=null; var loading=false; var transparency=null; var delay=null; var disposalMethod=null; var disposalRestoreFromIdx=0; var lastDisposalMethod=null; var frame=null; var lastImg=null; var playing=true; var forward=true; var ctx_scaled=false; var frames=[]; var frameOffsets=[]; var gif=options.gif; if(typeof options.auto_play=='undefined') options.auto_play=(!gif.getAttribute('rel:auto_play')||gif.getAttribute('rel:auto_play')=='1'); var onEndListener=(options.hasOwnProperty('on_end') ? options.on_end:null); var loopDelay=(options.hasOwnProperty('loop_delay') ? options.loop_delay:0); var overrideLoopMode=(options.hasOwnProperty('loop_mode') ? options.loop_mode:'auto'); var drawWhileLoading=(options.hasOwnProperty('draw_while_loading') ? options.draw_while_loading:true); var showProgressBar=drawWhileLoading ? (options.hasOwnProperty('show_progress_bar') ? options.show_progress_bar:true):false; var clear=function (){ transparency=null; delay=null; lastDisposalMethod=disposalMethod; disposalMethod=null; frame=null; }; var doParse=function (){ try { parseGIF(stream, handler); } catch (err){ doLoadError('parse'); }}; var doText=function (text){ toolbar.innerHTML=text; toolbar.style.visibility='visible'; }; var setSizes=function(w, h){ canvas.width=w * get_canvas_scale(); canvas.height=h * get_canvas_scale(); toolbar.style.minWidth=(w * get_canvas_scale()) + 'px'; tmpCanvas.width=w; tmpCanvas.height=h; tmpCanvas.style.width=w + 'px'; tmpCanvas.style.height=h + 'px'; tmpCanvas.getContext('2d').setTransform(1, 0, 0, 1, 0, 0); }; var setFrameOffset=function(frame, offset){ if(!frameOffsets[frame]){ frameOffsets[frame]=offset; return; } if(typeof offset.x!=='undefined'){ frameOffsets[frame].x=offset.x; } if(typeof offset.y!=='undefined'){ frameOffsets[frame].y=offset.y; }}; var doShowProgress=function (pos, length, draw){ if(draw&&showProgressBar){ var height=25; var left, mid, top, width; if(options.is_vp){ if(!ctx_scaled){ top=(options.vp_t + options.vp_h - height); height=height; left=options.vp_l; mid=left + (pos / length) * options.vp_w; width=canvas.width; }else{ top=(options.vp_t + options.vp_h - height) / get_canvas_scale(); height=height / get_canvas_scale(); left=(options.vp_l / get_canvas_scale()); mid=left + (pos / length) * (options.vp_w / get_canvas_scale()); width=canvas.width / get_canvas_scale(); } if(false){ if(!ctx_scaled){ var l=options.vp_l, t=options.vp_t; var w=options.vp_w, h=options.vp_h; }else{ var l=options.vp_l/get_canvas_scale(), t=options.vp_t/get_canvas_scale(); var w=options.vp_w/get_canvas_scale(), h=options.vp_h/get_canvas_scale(); } ctx.rect(l,t,w,h); ctx.stroke(); }}else{ top=(canvas.height - height) / (ctx_scaled ? get_canvas_scale():1); mid=((pos / length) * canvas.width) / (ctx_scaled ? get_canvas_scale():1); width=canvas.width / (ctx_scaled ? get_canvas_scale():1); height /=ctx_scaled ? get_canvas_scale():1; } ctx.fillStyle='rgba(255,255,255,0.4)'; ctx.fillRect(mid, top, width - mid, height); ctx.fillStyle='rgba(255,0,22,.8)'; ctx.fillRect(0, top, mid, height); }}; var doLoadError=function (originOfError){ var drawError=function (){ ctx.fillStyle='black'; ctx.fillRect(0, 0, options.c_w ? options.c_w:hdr.width, options.c_h ? options.c_h:hdr.height); ctx.strokeStyle='red'; ctx.lineWidth=3; ctx.moveTo(0, 0); ctx.lineTo(options.c_w ? options.c_w:hdr.width, options.c_h ? options.c_h:hdr.height); ctx.moveTo(0, options.c_h ? options.c_h:hdr.height); ctx.lineTo(options.c_w ? options.c_w:hdr.width, 0); ctx.stroke(); }; loadError=originOfError; hdr={ width: gif.width, height: gif.height }; frames=[]; drawError(); }; var doHdr=function (_hdr){ hdr=_hdr; setSizes(hdr.width, hdr.height) }; var doGCE=function (gce){ pushFrame(); clear(); transparency=gce.transparencyGiven ? gce.transparencyIndex:null; delay=gce.delayTime; disposalMethod=gce.disposalMethod; }; var pushFrame=function (){ if(!frame) return; frames.push({ data: frame.getImageData(0, 0, hdr.width, hdr.height), delay: delay }); frameOffsets.push({ x: 0, y: 0 }); }; var doImg=function (img){ if(!frame) frame=tmpCanvas.getContext('2d'); var currIdx=frames.length; var ct=img.lctFlag ? img.lct:hdr.gct; if(currIdx > 0){ if(lastDisposalMethod===3){ frame.putImageData(frames[disposalRestoreFromIdx].data, 0, 0); }else{ disposalRestoreFromIdx=currIdx - 1; } if(lastDisposalMethod===2){ frame.clearRect(lastImg.leftPos, lastImg.topPos, lastImg.width, lastImg.height); }} var imgData=frame.getImageData(img.leftPos, img.topPos, img.width, img.height); var cdd=imgData.data; img.pixels.forEach(function (pixel, i){ if(pixel!==transparency){ cdd[i * 4 + 0]=ct[pixel][0]; cdd[i * 4 + 1]=ct[pixel][1]; cdd[i * 4 + 2]=ct[pixel][2]; cdd[i * 4 + 3]=255; }}); imgData.data.set(cdd); frame.putImageData(imgData, img.leftPos, img.topPos); if(!ctx_scaled){ ctx.scale(get_canvas_scale(),get_canvas_scale()); ctx_scaled=true; } if(drawWhileLoading) ctx.drawImage(tmpCanvas, 0, 0); lastImg=img; }; var player=(function (){ var i=-1; var iterationCount=0; var showingInfo=false; var pinned=false; var getNextFrameNo=function (){ var delta=(forward ? 1:-1); return (i + delta + frames.length) % frames.length; }; var stepFrame=function (amount){ i=i + amount; putFrame(); }; var completeLoop=function (){ if(onEndListener!==null) onEndListener(gif); iterationCount++; }; var step=(function (){ var stepping=false; var doStep=function (){ stepping=playing; if(!stepping) return; stepFrame(1); var delay=frames[i].delay * 10; if(!delay) delay=100; var nextFrameNo=getNextFrameNo(); if(nextFrameNo===0){ delay +=loopDelay; setTimeout(completeLoop, delay - 1); } if((overrideLoopMode!==false||nextFrameNo!==0||iterationCount < 0)) setTimeout(doStep, delay); }; return function (){ if(!stepping) setTimeout(doStep, 0); };}()); var putFrame=function (){ var offset; i=parseInt(i, 10); if(i > frames.length - 1){ i=0; } if(i < 0){ i=0; } offset=frameOffsets[i]; tmpCanvas.getContext("2d").putImageData(frames[i].data, offset.x, offset.y); ctx.globalCompositeOperation="copy"; ctx.drawImage(tmpCanvas, 0, 0); }; var play=function (){ playing=true; step(); }; var pause=function (){ playing=false; }; return { init: function (){ if(loadError) return; if(! (options.c_w&&options.c_h)){ ctx.scale(get_canvas_scale(),get_canvas_scale()); } if(options.auto_play){ step(); }else{ i=0; putFrame(); }}, step: step, play: play, pause: pause, playing: playing, move_relative: stepFrame, current_frame: function(){ return i; }, length: function(){ return frames.length }, move_to: function(frame_idx){ i=frame_idx; putFrame(); }} }()); var doDecodeProgress=function (draw){ doShowProgress(stream.pos, stream.data.length, draw); }; var doNothing=function (){}; var withProgress=function (fn, draw){ return function (block){ fn(block); doDecodeProgress(draw); };}; var handler={ hdr: withProgress(doHdr), gce: withProgress(doGCE), com: withProgress(doNothing), app: { NETSCAPE: withProgress(doNothing) }, img: withProgress(doImg, true), eof: function (block){ pushFrame(); doDecodeProgress(false); if(! (options.c_w&&options.c_h)){ canvas.width=hdr.width * get_canvas_scale(); canvas.height=hdr.height * get_canvas_scale(); } player.init(); loading=false; if(load_callback){ load_callback(gif); }} }; var init=function (){ var parent=gif.parentNode; var div=document.createElement('div'); canvas=document.createElement('canvas'); ctx=canvas.getContext('2d'); toolbar=document.createElement('div'); tmpCanvas=document.createElement('canvas'); div.width=canvas.width=gif.width; div.height=canvas.height=gif.height; toolbar.style.minWidth=gif.width + 'px'; div.className='jsgif'; toolbar.className='jsgif_toolbar'; div.appendChild(canvas); div.appendChild(toolbar); parent.insertBefore(div, gif); parent.removeChild(gif); if(options.c_w&&options.c_h) setSizes(options.c_w, options.c_h); initialized=true; }; var get_canvas_scale=function(){ var scale; if(options.max_width&&hdr&&hdr.width > options.max_width){ scale=options.max_width / hdr.width; }else{ scale=1; } return scale; } var canvas, ctx, toolbar, tmpCanvas; var initialized=false; var load_callback=false; var load_setup=function(callback){ if(loading) return false; if(callback) load_callback=callback; else load_callback=false; loading=true; frames=[]; clear(); disposalRestoreFromIdx=0; lastDisposalMethod=null; frame=null; lastImg=null; return true; } return { play: player.play, pause: player.pause, move_relative: player.move_relative, move_to: player.move_to, get_playing:function(){ return player.playing }, get_canvas:function(){ return canvas }, get_canvas_scale:function(){ return get_canvas_scale() }, get_loading:function(){ return loading }, get_auto_play:function(){ return options.auto_play }, get_length:function(){ return player.length() }, get_current_frame: function(){ return player.current_frame() }, load_url: function(src,callback){ if(!load_setup(callback)) return; var h=new XMLHttpRequest(); h.overrideMimeType('text/plain; charset=x-user-defined'); h.onloadstart=function(){ if(!initialized) init(); }; h.onload=function(e){ stream=new Stream(h.responseText); setTimeout(doParse, 0); }; h.onprogress=function (e){ if(e.lengthComputable) doShowProgress(e.loaded, e.total, true); }; h.onerror=function(){ doLoadError('xhr'); }; h.open('GET', src, true); h.send(); }, load: function (callback){ this.load_url(gif.getAttribute('rel:animated_src')||gif.src,callback); }, load_raw: function(arr, callback){ if(!load_setup(callback)) return; if(!initialized) init(); stream=new Stream(arr); setTimeout(doParse, 0); }, set_frame_offset: setFrameOffset };}; return SuperGif; })); !function(a,b,c){var d=window.matchMedia;"undefined"!=typeof module&&module.exports?module.exports=c(d):"function"==typeof define&&define.amd?define(function(){return b[a]=c(d)}):b[a]=c(d)}("enquire",this,function(a){"use strict";function b(a,b){var c,d=0,e=a.length;for(d;e>d&&(c=b(a[d],d),c!==!1);d++);}function c(a){return"[object Array]"===Object.prototype.toString.apply(a)}function d(a){return"function"==typeof a}function e(a){this.options=a,!a.deferSetup&&this.setup()}function f(b,c){this.query=b,this.isUnconditional=c,this.handlers=[],this.mql=a(b);var d=this;this.listener=function(a){d.mql=a,d.assess()},this.mql.addListener(this.listener)}function g(){if(!a)throw new Error("matchMedia not present, legacy browsers require a polyfill");this.queries={},this.browserIsIncapable=!a("only all").matches}return e.prototype={setup:function(){this.options.setup&&this.options.setup(),this.initialised=!0},on:function(){!this.initialised&&this.setup(),this.options.match&&this.options.match()},off:function(){this.options.unmatch&&this.options.unmatch()},destroy:function(){this.options.destroy?this.options.destroy():this.off()},equals:function(a){return this.options===a||this.options.match===a}},f.prototype={addHandler:function(a){var b=new e(a);this.handlers.push(b),this.matches()&&b.on()},removeHandler:function(a){var c=this.handlers;b(c,function(b,d){return b.equals(a)?(b.destroy(),!c.splice(d,1)):void 0})},matches:function(){return this.mql.matches||this.isUnconditional},clear:function(){b(this.handlers,function(a){a.destroy()}),this.mql.removeListener(this.listener),this.handlers.length=0},assess:function(){var a=this.matches()?"on":"off";b(this.handlers,function(b){b[a]()})}},g.prototype={register:function(a,e,g){var h=this.queries,i=g&&this.browserIsIncapable;return h[a]||(h[a]=new f(a,i)),d(e)&&(e={match:e}),c(e)||(e=[e]),b(e,function(b){d(b)&&(b={match:b}),h[a].addHandler(b)}),this},unregister:function(a,b){var c=this.queries[a];return c&&(b?c.removeHandler(b):(c.clear(),delete this.queries[a])),this}},new g});