1/* MinifyError 2(1113,255-262): run-time error JS1019: Can't have 'break' outside of loop: break a 3 */ 4/*! 5 * hoverIntent r7 // 2013.03.11 // jQuery 1.9.1+ 6 * http://cherne.net/brian/resources/jquery.hoverIntent.html 7 * 8 * You may use hoverIntent under the terms of the MIT license. 9 * Copyright 2007, 2013 Brian Cherne 10 */ 11(function (e) { e.fn.hoverIntent = function (t, n, r) { var i = { interval: 100, sensitivity: 7, timeout: 0 }; if (typeof t === "object") { i = e.extend(i, t) } else if (e.isFunction(n)) { i = e.extend(i, { over: t, out: n, selector: r }) } else { i = e.extend(i, { over: t, out: t, selector: n }) } var s, o, u, a; var f = function (e) { s = e.pageX; o = e.pageY }; var l = function (t, n) { n.hoverIntent_t = clearTimeout(n.hoverIntent_t); if (Math.abs(u - s) + Math.abs(a - o) < i.sensitivity) { e(n).off("mousemove.hoverIntent", f); n.hoverIntent_s = 1; return i.over.apply(n, [t]) } else { u = s; a = o; n.hoverIntent_t = setTimeout(function () { l(t, n) }, i.interval) } }; var c = function (e, t) { t.hoverIntent_t = clearTimeout(t.hoverIntent_t); t.hoverIntent_s = 0; return i.out.apply(t, [e]) }; var h = function (t) { var n = jQuery.extend({}, t); var r = this; if (r.hoverIntent_t) { r.hoverIntent_t = clearTimeout(r.hoverIntent_t) } if (t.type == "mouseenter") { u = n.pageX; a = n.pageY; e(r).on("mousemove.hoverIntent", f); if (r.hoverIntent_s != 1) { r.hoverIntent_t = setTimeout(function () { l(n, r) }, i.interval) } } else { e(r).off("mousemove.hoverIntent", f); if (r.hoverIntent_s == 1) { r.hoverIntent_t = setTimeout(function () { c(n, r) }, i.timeout) } } }; return this.on({ "mouseenter.hoverIntent": h, "mouseleave.hoverIntent": h }, i.selector) } })(jQuery); 12/*! 13 * jQuery JSON Plugin 14 * version: 2.3 (2011-09-17) 15 * 16 * This document is licensed as free software under the terms of the 17 * MIT License: http://www.opensource.org/licenses/mit-license.php 18 * 19 * Brantley Harris wrote this plugin. It is based somewhat on the JSON.org 20 * website's http://www.json.org/json2.js, which proclaims: 21 * "NO WARRANTY EXPRESSED OR IMPLIED. USE AT YOUR OWN RISK.", a sentiment that 22 * I uphold. 23 * 24 * It is also influenced heavily by MochiKit's serializeJSON, which is 25 * copyrighted 2005 by Bob Ippolito. 26 */ 27 28(function( $ ) { 29 30 var escapeable = /["\\\x00-\x1f\x7f-\x9f]/g, 31 meta = { 32 '\b': '\\b', 33 '\t': '\\t', 34 '\n': '\\n', 35 '\f': '\\f', 36 '\r': '\\r', 37 '"' : '\\"', 38 '\\': '\\\\' 39 }; 40 41 /** 42 * jQuery.toJSON 43 * Converts the given argument into a JSON respresentation. 44 * 45 * @param o {Mixed} The json-serializble *thing* to be converted 46 * 47 * If an object has a toJSON prototype, that will be used to get the representation. 48 * Non-integer/string keys are skipped in the object, as are keys that point to a 49 * function. 50 * 51 */ 52 $.toJSON = typeof JSON === 'object' && JSON.stringify 53 ? JSON.stringify 54 : function( o ) { 55 56 if ( o === null ) { 57 return 'null'; 58 } 59 60 var type = typeof o; 61 62 if ( type === 'undefined' ) { 63 return undefined; 64 } 65 if ( type === 'number' || type === 'boolean' ) { 66 return '' + o; 67 } 68 if ( type === 'string') { 69 return $.quoteString( o ); 70 } 71 if ( type === 'object' ) { 72 if ( typeof o.toJSON === 'function' ) { 73 return $.toJSON( o.toJSON() ); 74 } 75 if ( o.constructor === Date ) { 76 var month = o.getUTCMonth() + 1, 77 day = o.getUTCDate(), 78 year = o.getUTCFullYear(), 79 hours = o.getUTCHours(), 80 minutes = o.getUTCMinutes(), 81 seconds = o.getUTCSeconds(), 82 milli = o.getUTCMilliseconds(); 83 84 if ( month < 10 ) { 85 month = '0' + month; 86 } 87 if ( day < 10 ) { 88 day = '0' + day; 89 } 90 if ( hours < 10 ) { 91 hours = '0' + hours; 92 } 93 if ( minutes < 10 ) { 94 minutes = '0' + minutes; 95 } 96 if ( seconds < 10 ) { 97 seconds = '0' + seconds; 98 } 99 if ( milli < 100 ) { 100 milli = '0' + milli; 101 } 102 if ( milli < 10 ) { 103 milli = '0' + milli; 104 } 105 return '"' + year + '-' + month + '-' + day + 'T' + 106 hours + ':' + minutes + ':' + seconds + 107 '.' + milli + 'Z"'; 108 } 109 if ( o.constructor === Array ) { 110 var ret = []; 111 for ( var i = 0; i < o.length; i++ ) {
112 ret.push( $.toJSON( o[i] ) || 'null' ); 113 } 114 return '[' + ret.join(',') + ']'; 115 } 116 var name, 117 val, 118 pairs = []; 119 for ( var k in o ) { 120 type = typeof k; 121 if ( type === 'number' ) { 122 name = '"' + k + '"'; 123 } else if (type === 'string') { 124 name = $.quoteString(k); 125 } else { 126 // Keys must be numerical or string. Skip others 127 continue; 128 } 129 type = typeof o[k]; 130 131 if ( type === 'function' || type === 'undefined' ) { 132 // Invalid values like these return undefined 133 // from toJSON, however those object members 134 // shouldn't be included in the JSON string at all. 135 continue; 136 } 137 val = $.toJSON( o[k] ); 138 pairs.push( name + ':' + val ); 139 } 140 return '{' + pairs.join( ',' ) + '}'; 141 } 142 }; 143 144 /** 145 * jQuery.evalJSON 146 * Evaluates a given piece of json source. 147 * 148 * @param src {String} 149 */ 150 $.evalJSON = typeof JSON === 'object' && JSON.parse 151 ? JSON.parse 152 : function( src ) { 153 return eval('(' + src + ')'); 154 }; 155 156 /** 157 * jQuery.secureEvalJSON 158 * Evals JSON in a way that is *more* secure. 159 * 160 * @param src {String} 161 */ 162 $.secureEvalJSON = typeof JSON === 'object' && JSON.parse 163 ? JSON.parse 164 : function( src ) { 165 166 var filtered = 167 src 168 .replace( /\\["\\\/bfnrtu]/g, '@' ) 169 .replace( /"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g, ']') 170 .replace( /(?:^|:|,)(?:\s*\[)+/g, ''); 171 172 if ( /^[\],:{}\s]*$/.test( filtered ) ) { 173 return eval( '(' + src + ')' ); 174 } else { 175 throw new SyntaxError( 'Error parsing JSON, source is not valid.' ); 176 } 177 }; 178 179 /** 180 * jQuery.quoteString 181 * Returns a string-repr of a string, escaping quotes intelligently. 182 * Mostly a support function for toJSON. 183 * Examples: 184 * >>> jQuery.quoteString('apple') 185 * "apple" 186 * 187 * >>> jQuery.quoteString('"Where are we going?", she asked.') 188 * "\"Where are we going?\", she asked." 189 */ 190 $.quoteString = function( string ) { 191 if ( string.match( escapeable ) ) { 192 return '"' + string.replace( escapeable, function( a ) { 193 var c = meta[a]; 194 if ( typeof c === 'string' ) { 195 return c; 196 } 197 c = a.charCodeAt(); 198 return '\\u00' + Math.floor(c / 16).toString(16) + (c % 16).toString(16); 199 }) + '"'; 200 } 201 return '"' + string + '"'; 202 }; 203 204})( jQuery ); 205; 206/*! Modernizr 2.6.2 (Custom Build) | MIT & BSD 207 * Build: http://modernizr.com/download/#-csstransforms-csstransforms3d-csstransitions-touch-shiv-cssclasses-teststyles-testprop-testallprops-prefixes-domprefixes-load 208 */ 209;window.Modernizr=function(a,b,c){function z(a){j.cssText=a}function A(a,b){return z(m.join(a+";")+(b||""))}function B(a,b){return typeof a===b}function C(a,b){return!!~(""+a).indexOf(b)}function D(a,b){for(var d in a){var e=a[d];if(!C(e,"-")&&j[e]!==c)return b=="pfx"?e:!0}return!1}function E(a,b,d){for(var e in a){var f=b[a[e]];if(f!==c)return d===!1?a[e]:B(f,"function")?f.bind(d||b):f}return!1}function F(a,b,c){var d=a.charAt(0).toUpperCase()+a.slice(1),e=(a+" "+o.join(d+" ")+d).split(" ");return B(b,"string")||B(b,"undefined")?D(e,b):(e=(a+" "+p.join(d+" ")+d).split(" "),E(e,b,c))}var d="2.6.2",e={},f=!0,g=b.documentElement,h="modernizr",i=b.createElement(h),j=i.style,k,l={}.toString,m=" -webkit- -moz- -o- -ms- ".split(" "),n="Webkit Moz O ms",o=n.split(" "),p=n.toLowerCase().split(" "),q={},r={},s={},t=[],u=t.slice,v,w=function(a,c,d,e){var f,i,j,k,l=b.createElement("div"),m=b.body,n=m||b.createElement("body");if(parseInt(d,10))while(d--)j=b.createElement("div"),j.id=e?e[d]:h+(d+1),l.appendChild(j);return f=["­",'<style id="s',h,'">',a,"</style>"].join(""),l.id=h,(m?l:n).innerHTML+=f,n.appendChild(l),m||(n.style.background="",n.style.overflow="hidden",k=g.style.overflow,g.style.overflow="hidden",g.appendChild(n)),i=c(l,a),m?l.parentNode.removeChild(l):(n.parentNode.removeChild(n),g.style.overflow=k),!!i},x={}.hasOwnProperty,y;!B(x,"undefined")&&!B(x.call,"undefined")?y=function(a,b){return x.call(a,b)}:y=function(a,b){return b in a&&B(a.constructor.prototype[b],"undefined")},Function.prototype.bind||(Function.prototype.bind=function(b){var c=this;if(typeof c!="function")throw new TypeError;
vendor: 7,744 bytes, lines 209-217
209var d=u.call(arguments,1),e=function(){if(this instanceof e){var a=function(){};a.prototype=c.prototype;var f=new a,g=c.apply(f,d.concat(u.call(arguments)));return Object(g)===g?g:f}return c.apply(b,d.concat(u.call(arguments)))};return e}),q.touch=function(){var c;return"ontouchstart"in a||a.DocumentTouch&&b instanceof DocumentTouch?c=!0:w(["@media (",m.join("touch-enabled),("),h,")","{#modernizr{top:9px;position:absolute}}"].join(""),function(a){c=a.offsetTop===9}),c},q.csstransforms=function(){return!!F("transform")},q.csstransforms3d=function(){var a=!!F("perspective");return a&&"webkitPerspective"in g.style&&w("@media (transform-3d),(-webkit-transform-3d){#modernizr{left:9px;position:absolute;height:3px;}}",function(b,c){a=b.offsetLeft===9&&b.offsetHeight===3}),a},q.csstransitions=function(){return F("transition")};for(var G in q)y(q,G)&&(v=G.toLowerCase(),e[v]=q[G](),t.push((e[v]?"":"no-")+v));return e.addTest=function(a,b){if(typeof a=="object")for(var d in a)y(a,d)&&e.addTest(d,a[d]);else{a=a.toLowerCase();if(e[a]!==c)return e;b=typeof b=="function"?b():b,typeof f!="undefined"&&f&&(g.className+=" "+(b?"":"no-")+a),e[a]=b}return e},z(""),i=k=null,function(a,b){function k(a,b){var c=a.createElement("p"),d=a.getElementsByTagName("head")[0]||a.documentElement;return c.innerHTML="x<style>"+b+"</style>",d.insertBefore(c.lastChild,d.firstChild)}function l(){var a=r.elements;return typeof a=="string"?a.split(" "):a}function m(a){var b=i[a[g]];return b||(b={},h++,a[g]=h,i[h]=b),b}function n(a,c,f){c||(c=b);if(j)return c.createElement(a);f||(f=m(c));var g;return f.cache[a]?g=f.cache[a].cloneNode():e.test(a)?g=(f.cache[a]=f.createElem(a)).cloneNode():g=f.createElem(a),g.canHaveChildren&&!d.test(a)?f.frag.appendChild(g):g}function o(a,c){a||(a=b);if(j)return a.createDocumentFragment();c=c||m(a);var d=c.frag.cloneNode(),e=0,f=l(),g=f.length;for(;e<g;e++)d.createElement(f[e]);return d}function p(a,b){b.cache||(b.cache={},b.createElem=a.createElement,b.createFrag=a.createDocumentFragment,b.frag=b.createFrag()),a.createElement=function(c){return r.shivMethods?n(c,a,b):b.createElem(c)},a.createDocumentFragment=Function("h,f","return function(){var n=f.cloneNode(),c=n.createElement;h.shivMethods&&("+l().join().replace(/\w+/g,function(a){return b.createElem(a),b.frag.createElement(a),'c("'+a+'")'})+");return n}")(r,b.frag)}function q(a){a||(a=b);var c=m(a);return r.shivCSS&&!f&&!c.hasCSS&&(c.hasCSS=!!k(a,"article,aside,figcaption,figure,footer,header,hgroup,nav,section{display:block}mark{background:#FF0;color:#000}")),j||p(a,c),a}var c=a.html5||{},d=/^<|^(?:button|map|select|textarea|object|iframe|option|optgroup)$/i,e=/^(?:a|b|code|div|fieldset|h1|h2|h3|h4|h5|h6|i|label|li|ol|p|q|span|strong|style|table|tbody|td|th|tr|ul)$/i,f,g="_html5shiv",h=0,i={},j;(function(){try{var a=b.createElement("a");a.innerHTML="<xyz></xyz>",f="hidden"in a,j=a.childNodes.length==1||function(){b.createElement("a");var a=b.createDocumentFragment();return typeof a.cloneNode=="undefined"||typeof a.createDocumentFragment=="undefined"||typeof a.createElement=="undefined"}()}catch(c){f=!0,j=!0}})();var r={elements:c.elements||"abbr article aside audio bdi canvas data datalist details figcaption figure footer header hgroup mark meter nav output progress section summary time video",shivCSS:c.shivCSS!==!1,supportsUnknownElements:j,shivMethods:c.shivMethods!==!1,type:"default",shivDocument:q,createElement:n,createDocumentFragment:o};a.html5=r,q(b)}(this,b),e._version=d,e._prefixes=m,e._domPrefixes=p,e._cssomPrefixes=o,e.testProp=function(a){return D([a])},e.testAllProps=F,e.testStyles=w,g.className=g.className.replace(/(^|\s)no-js(\s|$)/,"$1$2")+(f?" js "+t.join(" "):""),e}(this,this.document),function(a,b,c){function d(a){return"[object Function]"==o.call(a)}function e(a){return"string"==typeof a}function f(){}function g(a){return!a||"loaded"==a||"complete"==a||"uninitialized"==a}function h(){var a=p.shift();q=1,a?a.t?m(function(){("c"==a.t?B.injectCss:B.injectJs)(a.s,0,a.a,a.x,a.e,1)},0):(a(),h()):q=0}function i(a,c,d,e,f,i,j){function k(b){if(!o&&g(l.readyState)&&(u.r=o=1,!q&&h(),l.onload=l.onreadystatechange=null,b)){"img"!=a&&m(function(){t.removeChild(l)},50);for(var d in y[c])y[c].hasOwnProperty(d)&&y[c][d].onload()}}var j=j||B.errorTimeout,l=b.createElement(a),o=0,r=0,u={t:d,s:c,e:f,a:i,x:j};1===y[c]&&(r=1,y[c]=[]),"object"==a?l.data=c:(l.src=c,l.type=a),l.width=l.height="0",l.onerror=l.onload=l.onreadystatechange=function(){k.call(this,r)},p.splice(e,0,u),"img"!=a&&(r||2===y[c]?(t.insertBefore(l,s?null:n),m(k,j)):y[c].push(l))}function j(a,b,c,d,f){return q=0,b=b||"j",e(a)?i("c"==b?v:u,a,b,this.i++,c,d,f):(p.splice(this.i++,0,a),1==p.length&&h()),this}function k(){var a=B;return a.loader={load:j,i:0},a}var l=b.documentElement,m=a.setTimeout,n=b.getElementsByTagName("script")[0],o={}.toString,p=[],q=0,r="MozAppearance"in l.style,s=r&&!!b.createRange().compareNode,t=s?l:n.parentNode,l=a.opera&&"[object Opera]"==o.call(a.opera),l=!!b.attachEvent&&!l,u=r?"object":l?"script":"img",v=l?"script":u,w=Array.isArray||function(a){return"[object Array]"==o.call(a)},x=[],y={},z={timeout:function(a,b){return b.length&&(a.timeout=b[0]),a}},A,B;B=function(a){function b(a){var a=a.split("!"),b=x.length,c=a.pop(),d=a.length,c={url:c,origUrl:c,prefixes:a},e,f,g;for(f=0;f<d;f++)g=a[f].split("="),(e=z[g.shift()])&&(c=e(c,g));for(f=0;f<b;f++)c=x[f](c);return c}function g(a,e,f,g,h){var i=b(a),j=i.autoCallback;i.url.split(".").pop().split("?").shift(),i.bypass||(e&&(e=d(e)?e:e[a]||e[g]||e[a.split("/").pop().split("?")[0]]),i.instead?i.instead(a,e,f,g,h):(y[i.url]?i.noexec=!0:y[i.url]=1,f.load(i.url,i.forceCSS||!i.forceJS&&"css"==i.url.split(".").pop().split("?").shift()?"c":c,i.noexec,i.attrs,i.timeout),(d(e)||d(j))&&f.load(function(){k(),e&&e(i.origUrl,h,g),j&&j(i.origUrl,h,g),y[i.url]=2})))}function h(a,b){function c(a,c){if(a){if(e(a))c||(j=function(){var a=[].slice.call(arguments);k.apply(this,a),l()}),g(a,j,b,0,h);else if(Object(a)===a)for(n in m=function(){var b=0,c;for(c in a)a.hasOwnProperty(c)&&b++;return b}(),a)a.hasOwnProperty(n)&&(!c&&!--m&&(d(j)?j=function(){var a=[].slice.call(arguments);k.apply(this,a),l()}:j[n]=function(a){return function(){var b=[].slice.call(arguments);a&&a.apply(this,b),l()}}(k[n])),g(a[n],j,b,n,h))}else!c&&l()}var h=!!a.test,i=a.load||a.both,j=a.callback||f,k=j,l=a.complete||f,m,n;c(h?a.yep:a.nope,!!i),i&&c(i)}var i,j,l=this.yepnope.loader;if(e(a))g(a,0,l,0);else if(w(a))for(i=0;i<a.length;i++)j=a[i],e(j)?g(j,0,l,0):w(j)?B(j):Object(j)===j&&h(j,l);else Object(a)===a&&h(a,l)},B.addPrefix=function(a,b){z[a]=b},B.addFilter=function(a){x.push(a)},B.errorTimeout=1e4,null==b.readyState&&b.addEventListener&&(b.readyState="loading",b.addEventListener("DOMContentLoaded",A=function(){b.removeEventListener("DOMContentLoaded",A,0),b.readyState="complete"},0)),a.yepnope=k(),a.yepnope.executeStack=h,a.yepnope.injectJs=function(a,c,d,e,i,j){var k=b.createElement("script"),l,o,e=e||B.errorTimeout;k.src=a;for(o in d)k.setAttribute(o,d[o]);c=j?h:c||f,k.onreadystatechange=k.onload=function(){!l&&g(k.readyState)&&(l=1,c(),k.onload=k.onreadystatechange=null)},m(function(){l||(l=1,c(1))},e),i?k.onload():n.parentNode.insertBefore(k,n)},a.yepnope.injectCss=function(a,c,d,e,g,i){var e=b.createElement("link"),j,c=i?h:c||f;e.href=a,e.rel="stylesheet",e.type="text/css";for(j in d)e.setAttribute(j,d[j]);g||(n.parentNode.insertBefore(e,n),m(c,0))}}(this,document),Modernizr.load=function(){yepnope.apply(window,[].slice.call(arguments,0))};; 210/*! 211* DropKick 1.4 212* 213* Highly customizable <select> lists 214* https://github.com/robdel12/DropKick 215* 216* Created by: Jamie Lottering <http://github.com/JamieLottering> <http://twitter.com/JamieLottering> 217*
218*/ 219 220(function ($, window, document) { 221 'use strict'; 222 223 var 224 msVersion = navigator.userAgent.match(/MSIE ([0-9]{1,}[\.0-9]{0,})/), 225 msie = !!msVersion, 226 ie6 = msie && parseFloat(msVersion[1]) < 8, 227 isMobile = navigator.userAgent.match(/iPad|iPhone|Android|IEMobile|BlackBerry/i), 228 229 // Public methods exposed to $.fn.dropkick() 230 methods = {}, 231 232 // Cache every <select> element that gets dropkicked 233 lists = [], 234 235 // Convenience keys for keyboard navigation 236 keyMap = { 237 'escape': 27, 238 'left': 37, 239 'up': 38, 240 'right': 39, 241 'down': 40, 242 'enter': 13, 243 'tab': 9, 244 'zero': 48, 245 'z': 90, 246 'last': 221 //support extend charsets such as Danish, Ukrainian etc. 247 }, 248 249 isResponsiveShoppingBag = Next.Settings.Channel.ResponsiveShoppingBagIsEnabled && 250 window.location.pathname.toLowerCase().indexOf("/shoppingbag") > -1, 251 252 spanElement = isResponsiveShoppingBag ? '' : '<span class="{{ class }}" {{ image }}></span>', 253 // HTML template for the dropdowns 254 dropdownTemplate = [ 255 '<div role="combobox" class="dk_container {{ isDisabled }}" id="dk_container_{{ id }}" tabindex="{{ tabindex }}" aria-hidden="true">', 256 '<a href="#" class="dk_toggle dk_label">' + spanElement + '{{ label }}</a>', 257 '<div role="listbox" class="dk_options">', 258 '<ul class="dk_options_inner" role="main" aria-hidden="true">', 259 '</ul>', 260 '</div>', 261 '</div>' 262 ].join(''), 263 264 cssClasses = { 265 validation: { 266 success:"valid-success", 267 error:"valid-error" 268 } 269 }, 270 271 // HTML template for dropdown options 272 optionTemplate = '<li class="{{ class }}"><a class="dk_dropdown_option" data-dk-dropdown-value="{{ value }}">' + spanElement + '{{ text }}</a></li>', 273 274 // Some nice default values 275 defaults = { 276 theme: false, 277 changes: false, 278 syncReverse: true, 279 nativeMobile: true, 280 autoWidth: true 281 }, 282 283 // Make sure that only one dropdown is open the document 284 $opened = null, 285 286 // Make sure that only one dropdown has focus in the document 287 $focused = null, 288 289 openScrollEventName = 'onwheel' in window ? 'wheel.dropkickopenscroll' : // Modern browsers support "wheel" 290 'onmousewheel' in document ? 'mousewheel.dropkickopenscroll' : // Webkit and IE support at least "mousewheel" 291 "MouseScrollEvent" in window ? 'DOMMouseScroll.dropkickopenscroll MozMousePixelScroll.dropkickopenscroll' : // legacy non-standard event for older Firefox 292 false // lacks support 293 , 294 295 openResizeEventName = "resize.dropkickopenresize", 296 297 // private 298 // Update the <select> value, and the dropdown label 299 updateFields = function (option, $dk, reset) { 300 var value, label, data, $select; 301 302 value = option.attr('data-dk-dropdown-value'); 303 label = option.text(); 304 data = $dk.data('dropkick'); 305 306 if (data !== undefined) { 307 $select = data.$select; 308 $select.val(value); 309 $select.trigger('change'); // Added to let it act like a normal select [Acemir >> In fact, I suggest that this must always be true] 310 311 // $dk.find('.dk_label').text(label); 312 313 reset = reset || false; 314 315 if (data.settings.change && !reset && !data.settings.syncReverse) { 316 data.settings.change.call($select, value, label); 317 } 318 } 319 320 }, 321 322 // Close a dropdown 323 closeDropdown = function ($dk) { 324 $dk.removeClass('dk_open dk_open_top'); 325 $dk.attr("aria-expanded", "false"); 326 $opened = null; 327 //Remove open dropdown scroll event 328 if (openScrollEventName) { 329 $(document).off(openScrollEventName); 330 } 331 $(window).off(openResizeEventName); 332 }, 333 334 // Report whether there is enough space in the window to drop down. 335 enoughSpace = function ($dk) { 336 337 var $window = $(window); 338 var windowScrollTop = $window.scrollTop(); 339 var windowHeight = $window.height(); 340 341 var visibleHeaderHeight = 0; 342 var $pageHeader = $("header.PageHeader"); 343 if ($pageHeader.length>0) { 344 visibleHeaderHeight = Math.max(0, (($pageHeader.offset().top - windowScrollTop) + $pageHeader.height())); 345 } 346 347 var visibleFooterHeight = 0; 348 var $pageFooter = $("footer.PageFooter"); 349 if (!$pageFooter.length) { 350 //Standard footer not found 351 //Find Shopping Bag footer 352 $pageFooter = $(".shoppingFooterWrapper"); 353 } 354 355 356 357 if ($pageFooter.length) { 358 359 var pageFooterOffsetTop = $pageFooter.offset().top; 360 361 if (pageFooterOffsetTop == 0) 362 pageFooterOffsetTop = 600; 363 364 visibleFooterHeight = Math.max(0, (windowScrollTop + windowHeight) - pageFooterOffsetTop); 365 } 366 367 var 368 $dk_toggle = $dk.find('.dk_toggle'), 369 optionsHeight = $dk.find('.dk_options').outerHeight(false), 370 spaceBelow = windowHeight - $dk_toggle.outerHeight(false) - $dk_toggle.offset().top + windowScrollTop - visibleFooterHeight, 371 spaceAbove = $dk_toggle.offset().top - windowScrollTop - visibleHeaderHeight; 372 373 // Take into account the bottom position of the Overflowfixer container if it exists on this page, as this may also limit the space below 374 var $overflowFixer = $(document).find('.OverflowFixer'); 375 if ($overflowFixer.length > 0) { 376 var overflowSpaceBelow = $overflowFixer.height() - $dk_toggle.outerHeight(false) - $dk_toggle.offset().top + $overflowFixer.offset().top; 377 spaceBelow = (spaceBelow > overflowSpaceBelow) ? overflowSpaceBelow : spaceBelow; 378 } 379 380 var displayBelow = (spaceBelow > optionsHeight) ? true 381 : (spaceBelow > spaceAbove) 382 383 return { 384 maxHeight: displayBelow ? spaceBelow : spaceAbove, 385 displayBelow: displayBelow 386 }; 387 }, 388 389 setScrollPos = function ($dk, anchor, e) { 390 var 391 wrapper = $dk.find('.dk_options'), 392 height = anchor.prevAll('li').outerHeight(false) * anchor.prevAll('li').length, 393 minHeight = wrapper.scrollTop(), 394 maxHeight = wrapper.height() + wrapper.scrollTop() - anchor.outerHeight(false) 395 ; 396 397 if ((e && e.type === 'keydown') || (height < minHeight || height > maxHeight)) { 398 wrapper.scrollTop(height); // A more direct approach 399 } 400 }, 401 402 highlight = function ($a) { 403 $a.parent().parent().find('.highlight').removeClass('highlight'); 404 $a.addClass('highlight'); 405 }, 406 407 unhighlight = function ($a) { 408 $a.removeClass('highlight'); 409 }, 410 411 // Set the currently selected option 412 setCurrent = function ($current, $dk, e) { 413 $dk.find('.dk_option_current').removeClass('dk_option_current'); 414 $current.addClass('dk_option_current'); 415 setScrollPos($dk, $current, e); 416 417 418 var $a = $current.find('.dk_dropdown_option'); 419 highlight($a); 420 }, 421 422 getPositionCorrection = function () { 423 var top = -1; 424 var bottom = 0; 425 426 if (isResponsiveShoppingBag) { 427 top = 0; 428 bottom = -6; 429 } 430 431 return { 432 top, 433 bottom 434 } 435 }, 436 437 // Open a dropdown 438 openDropdown = function ($dk, e) { 439 440 //var hasSpace = enoughSpace($dk); // Avoids duplication of call to _enoughSpace 441 $opened = $dk.toggleClass('dk_open'); 442 $dk.attr("aria-expanded", "true"); 443 444 var $current = $('a[data-dk-dropdown-value="' + $dk.data().dropkick.$select.val() + '"]', $dk); 445 setCurrent($current.parent(), $dk); 446 447 var 448 hasSpace = enoughSpace($dk), // Avoids duplication of call to _enoughSpace 449 openClasses = hasSpace.displayBelow ? 'dk_open' : 'dk_open_top dk_open' 450 ; 451 var maxHeight = Math.min((hasSpace.maxHeight - 10), 250); //Set max-height to fixed value, unless the available space is lower 452 453 if (isResponsiveShoppingBag) { 454 maxHeight = Math.min((hasSpace.maxHeight - 10), 500); //500px should result in last option being cropped, so it would be easier for user to spot scrollable component. 455 } 456 var $dkOptions = $dk.find('.dk_options'); 457 458 var positionCorrection = getPositionCorrection(); 459 460 $dkOptions.css({ 461 top: hasSpace.displayBelow ? $dk.find('.dk_toggle').outerHeight(true) + positionCorrection.top : '', 462 bottom: !hasSpace.displayBelow ? $dk.find('.dk_toggle').outerHeight(true) + positionCorrection.bottom : '', 463 "max-height": maxHeight + "px" 464 }); 465 466 setOptionsWidth($dk); 467 468 $opened = $dk.addClass(openClasses); 469 setScrollPos($dk, $dk.find('.dk_option_current'), e); // IE8+ needs to set scrollTop only after the dropdow is opened 470 471 openScrollEventName && $(document).on(openScrollEventName, function (e) { 472 473 var $target = $(e.target); 474 var $scrollableElement = $(".dk_options"); 475 var $targetScrollable = $target.closest($scrollableElement); 476 477 //Check if we're scrolling within the custom dropdown 478 if ($targetScrollable.length) { 479 var targetScrollable = $targetScrollable[0]; 480 481 var delta = e.originalEvent.wheelDelta || -e.originalEvent.deltaY || -e.originalEvent.detail; // Gets scroll ammount 482 if (msie) { targetScrollable.scrollTop -= Math.round(delta / 10); return false; } // Normalize IE behaviour 483 var allowScroll = $targetScrollable.length && ((delta > 0 && targetScrollable.scrollTop <= 0) || (delta < 0 && targetScrollable.scrollTop >= targetScrollable.scrollHeight - targetScrollable.offsetHeight) ? false : true); 484 485 return allowScroll; // Finally cancels page scroll when nedded 486 } 487 else { 488 closeDropdown($dk); 489 return true; 490 } 491 }); 492 493 $(window).on(openResizeEventName, function (e) { 494 closeDropdown($dk); 495 }); 496 }, 497 498 openAndPopulate = function ($dk, e) { 499 if (!$dk.hasClass('dk-disable')) { 500 var dkData = $dk.data("dropkick"); 501 502 if (dkData.settings.preloadDataOnOpen 503 && !dkData.preloadDataOnOpenComplete) { 504 dkData.settings.preloadDataOnOpen($dk, function () { 505 dkData.preloadDataOnOpenComplete = true; 506 $dk.dropkick("refresh"); 507 openDropdown($dk, e); 508 }); 509 } else { 510 openDropdown($dk, e); 511 } 512 } 513 }, 514 515 setOptionsWidth = function ($dk) { 516 var $dkOptionsInner = $dk.find('.dk_options_inner'); 517 var $dkOptions = $dk.find(".dk_options"); 518 519 //Reset width 520 $dkOptions.css("width", ""); 521 522 //Set width if scrollbar is present 523 var scrollWidth = $dkOptionsInner[0].scrollWidth; 524 if (scrollWidth > $dkOptions[0].scrollWidth) { 525 526 var optionsWidth = scrollWidth + 12; 527 528 if ($dkOptions[0].scrollHeight > parseInt($dkOptions.css("max-height"), 10)) { 529 //scroll height is greater than the max-height, therefore scrollbar will be present 530 //Add additional width to allow for scrollbar width 531 optionsWidth += 20;
532 } 533 534 $dkOptions.width(optionsWidth); 535 } 536 }, 537 538 setImage = function ($current, $option) { 539 var finalText; 540 if ($option) { 541 finalText = $current 542 .replace('{{ class }}', notBlank($option.attr("data-imageurl")) ? 'chip' : '{{ class }}') 543 .replace('{{ image }}', notBlank($option.attr("data-imageurl")) ? 'style="background-image: URL(' + $option.attr("data-imageurl") + ')"' : '') 544 .replace('{{ class }}', notBlank($option.attr("data-flag")) ? $option.attr("data-flag") : ''); 545 } 546 return finalText; 547 }, 548 549 handleKeyBoardNav = function (e, $dk) { 550 var 551 code = e.keyCode, 552 data = $dk.data('dropkick'), 553 letter = String.fromCharCode(code), 554 options = $dk.find('.dk_options'), 555 open = $dk.hasClass('dk_open'), 556 lis = options.find('li'), 557 current = $dk.find('.dk_option_current'), 558 first = lis.first(), 559 last = lis.last(), 560 next, 561 prev, 562 now, 563 list, 564 i, 565 l, 566 $a 567 ; 568 569 switch (code) { 570 case keyMap.escape: 571 closeDropdown($dk); 572 break; 573 574 case keyMap.enter: 575 if (open) { 576 if (!current.hasClass('disabled')) { 577 updateFields(current.find('a'), $dk); 578 closeDropdown($dk); 579 } 580 } else { 581 openAndPopulate($dk, e); 582 } 583 e.preventDefault(); 584 break; 585 case keyMap.tab: 586 if (open) { 587 current.length && updateFields(current.find('a'), $dk); 588 closeDropdown($dk); 589 } 590 591 break; 592 593 case keyMap.up: 594 prev = current.prev('li'); 595 if (open) { 596 if (prev.length) { 597 setCurrent(prev, $dk, e); 598 } else { 599 setCurrent(last, $dk, e); 600 } 601 } else { 602 openAndPopulate($dk, e); 603 } 604 e.preventDefault(); 605 break; 606 607 case keyMap.down: 608 if (open) { 609 next = current.next('li').first(); 610 if (next.length) { 611 setCurrent(next, $dk, e); 612 } else { 613 setCurrent(first, $dk, e); 614 } 615 } else { 616 openAndPopulate($dk, e); 617 } 618 e.preventDefault(); 619 break; 620 621 default: 622 break; 623 } 624 //if typing a letter 625 if (code >= keyMap.zero && code <= keyMap.z) { 626 //update data 627 now = new Date().getTime(); 628 if (data.finder === null || data.finder === undefined) { 629 data.finder = letter.toUpperCase(); 630 data.timer = now; 631 632 } else { 633 if (now > parseInt(data.timer, 10) + 1000) { 634 data.finder = letter.toUpperCase(); 635 data.timer = now; 636 } else { 637 data.finder = data.finder + letter.toUpperCase(); 638 data.timer = now; 639 } 640 } 641 //find and switch to the appropriate option 642 list = lis.find('a'); 643 for (i = 0, l = list.length; i < l; i++) { 644 $a = $(list[i]); 645 if ($a.text().toUpperCase().indexOf(data.finder) === 0) { 646 updateFields($a, $dk); 647 setCurrent($a.parent(), $dk, e); 648 break; 649 } 650 } 651 $dk.data('dropkick', data); 652 } 653 }, 654 655 notBlank = function (text) { 656 return ($.trim(text).length > 0) ? text : false; 657 }, 658
659 // Turn the dropdownTemplate into a jQuery object and fill in the variables. 660 build = function (tpl, view) { 661 var 662 // Template for the dropdown 663 template, 664 // Holder of the dropdowns options 665 options = [], 666 $dk, 667 i, 668 l, 669 $option, 670 oTemplate, 671 $selectedOption 672 ; 673 674 if (view.options && view.options.length) { 675 for (i = 0, l = view.options.length; i < l; i++) { 676 $option = $(view.options[i]); 677 678 if ($selectedOption === undefined) { 679 $selectedOption = $option; 680 } 681 682 (i === 0 && $option.attr('selected') !== undefined && $option.attr('disabled') !== undefined) ? 683 oTemplate = null 684 : 685 oTemplate = setImage(optionTemplate.replace('{{ value }}', $option.val()) 686 .replace('{{ current }}', (notBlank($option.val()) === view.value) ? 'dk_option_current' : '') 687 .replace('{{ disabled }}', ($option.attr('disabled') !== undefined) ? 'disabled' : '') 688 .replace('{{ text }}', $.trim($option.html())) 689 .replace('{{ class }}', $.trim($option.attr("class"))) 690 .replace('{{ linkclass }}', notBlank($option.attr("data-imageurl")) ? 'chip' : '{{ linkclass }}') 691 .replace('{{ linkclass }}', notBlank($option.attr("data-flag")) ? $option.attr("data-flag") : ''), $option) 692 ; 693 694 options[options.length] = oTemplate; 695 696 if ($option.attr('selected') !== undefined) { 697 $selectedOption = $option; 698 } 699 } 700 } 701 702 template = setImage(tpl.replace('{{ id }}', view.id).replace('{{ label }}', view.label).replace('{{ tabindex }}', view.tabindex).replace('{{ isDisabled }}', view.isDisabled), $selectedOption) 703 ; 704 $dk = $(template); 705 706 if (view 707 && view.$original.length) { 708 $dk.find(".dk_label").addClass(view.$original.attr("class")); 709 } 710 711 $dk.find('.dk_options_inner').html(options.join('')); 712 713 $dk.find('.dk_dropdown_option').hover( 714 function () { 715 highlight($(this)); 716 }, 717 function () { 718 unhighlight($(this)); 719 } 720 ); 721 722 return $dk; 723 } 724 ; 725 726 // Help prevent flashes of unstyled content 727 if (!ie6) { 728 document.documentElement.className = document.documentElement.className + ' dk_fouc'; 729 } 730 731 // Called by using $('foo').dropkick(); 732 methods.init = function (settings) { 733 settings = $.extend({}, defaults, settings); 734 dropdownTemplate = settings.dropdownTemplate ? settings.dropdownTemplate : dropdownTemplate; 735 optionTemplate = settings.optionTemplate ? settings.optionTemplate : optionTemplate; 736 737 return this.each(function () { 738 var 739 // The current <select> element 740 $select = $(this), 741 742 // Store a reference to the originally selected <option> element 743 $original = $select.find(':selected').first(), 744 745 // Save all of the <option> elements 746 $options = $select.find('option'), 747 748 // We store lots of great stuff using jQuery data 749 data = $select.data('dropkick') || {}, 750 751 // This gets applied to the 'dk_container' element 752 id = $select.attr('id') || $select.attr('name'), 753 754 // This gets updated to be equal to the longest <option> element 755 width = settings.width || $select.outerWidth(false), 756 757 // Check if we have a tabindex set or not set to 0 758 tabindex = $select.attr('tabindex') || '0', 759 760 // The completed dk_container element 761 $dk = false, 762 763 // Supreme - Disable feature 764 isDisabled = ($(this).attr('disabled') !== undefined) ? 'dk-disable' : '', 765 766 theme, 767 768 // The form relative to the select 769 $form 770 ; 771 772 // Dont do anything if we've already setup dropkick on this element 773 if (data.id) { 774 return $select; 775 } 776 777 data.settings = settings; 778 data.tabindex = tabindex; 779 data.id = id; 780 data.$original = $original; 781 data.$select = $select; 782 data.value = notBlank($select.val()) || notBlank($original.attr('value')); 783 //data.label = $original.text(); 784 //MyChange-Delayed Stock 785 data.label = $original.html(); 786 data.options = $options; 787 788 // Supreme - Disable feature 789 data.isDisabled = isDisabled; 790 791 // Build the dropdown HTML 792 $dk = build(dropdownTemplate, data); 793 794 // Make the dropdown fixed width if desired 795 if (data.settings.autoWidth) { 796 var widthNoBoxing = width - 30 - 5 - 2; //padding-right, padding-left, border*2 797 $dk.find('.dk_toggle').width(widthNoBoxing); 798 } 799 800 // Hide the <select> list and place our new one in front of it 801 $select.before($dk).appendTo($dk); 802 803 // Update the reference to $dk 804 $dk = $('div[id="dk_container_' + id + '"]').show(); 805 806 if (data.settings.autoWidth) { 807 //Set background-position for up/down arrow
808 setBackgroundPosition($dk, width); 809 } 810 811 // Save the current theme 812 theme = settings.theme || 'default'; 813 $dk.addClass('dk_theme_' + theme); 814 data.theme = theme; 815 816 // Save the updated $dk reference into our data object 817 data.$dk = $dk; 818 819 // Save the dropkick data onto the <select> element 820 $select.data('dropkick', data); 821 822 //Adds original select class to dk_container 823 $dk.addClass($select.attr('class')); 824 825 // Do the same for the dropdown, but add a few helpers 826 $dk.data('dropkick', data); 827 828 lists[lists.length] = $select; 829 830 // Focus events 831 $dk.on('focus.dropkick', function () { 832 $focused = $dk.addClass('dk_focus'); 833 }).on('blur.dropkick', function () { 834 $dk.removeClass('dk_focus'); 835 $focused = null; 836 }); 837 838 //If isMobile, triggers native selects while still mantains the styled dropkick 839 if (isMobile && data.settings.nativeMobile) { 840 $dk.addClass('dk_mobile'); 841 } 842 843 // Sync to change events on the original <select> if requested 844 if (data.settings.syncReverse) { 845 $select.on('change', function (e) { 846 var option = $('option:selected', this), 847 value = option.val(), 848 //option = $('a[data-dk-dropdown-value="' + value + '"]', $dk), 849 //label = "<span class='{{ class }}' {{ image }}></span>" + option.text(); 850 //MyChange Delayed Stock 851 label = isResponsiveShoppingBag ? option.html() : 852 "<span class='{{ class }}' {{ image }}></span>" + option.html(); 853 854 $dk.find('.dk_label').removeClass("SoldOut"); 855 $dk.find('.dk_label').removeClass("SaleSoldOut"); 856 $dk.find('.dk_label').html(setImage(label, option)).addClass(option.attr("class")); 857 data.settings.change && data.settings.change.call($select, value, label); 858 setCurrent(option.parent(), $dk, e); 859 }); 860 } 861 862 // Listen to a reset event to the form on the <select> 863 $form = $select.attr('form') ? $('#' + $select.attr('form').replace(' ', ', #')) : $select.closest('form'); 864 $form.length && $form.on('reset', function () { $select.dropkick('reset') }); 865 866 // [Issue #126] Validation do not fires in <select> is not (':visible') 867 // setTimeout(function () { 868 // $select.hide(); 869 // }, 0); 870 }); 871 }; 872 873 // Allows dynamic theme changes 874 methods.theme = function (newTheme) { 875 var 876 data = $(this).data('dropkick'), 877 $dk = data.$dk, 878 oldtheme = 'dk_theme_' + data.theme 879 ; 880 881 $dk.removeClass(oldtheme).addClass('dk_theme_' + newTheme); 882 data.theme = newTheme; 883 }; 884 885 // Reset respective <select> and dropdown 886 methods.reset = function () { 887 return this.each(function () { 888 var 889 data = $(this).data('dropkick'), 890 $dk = data.$dk, 891 $original = $('a[data-dk-dropdown-value="' + data.$original.attr('value') + '"]', $dk) 892 ; 893 894 data.$original.prop('selected', true); 895 $dk.find('.dk_label').text(data.label); 896 setCurrent($original.parent(), $dk); 897 }); 898 }; 899 900 methods.setValue = function (value) { 901 return this.each(function () { 902 var 903 $dk = $(this).data('dropkick').$dk, 904 $option = $('.dk_options a[data-dk-dropdown-value="' + value + '"]', $dk) 905 ; 906 907 $option.length 908 ? updateFields($option, $dk) | setCurrent($option.parent(), $dk) 909 : console.warn('There is no option with this value in ' + $dk.selector); 910 }); 911 }; 912 913 methods.setValidationUI = function (options) { 914 return this.each(function () { 915 916 var $dk = $(this).data('dropkick').$dk; 917 var $dkToggle = $dk.find(".dk_toggle"); 918 919 if (options.success) {
920 $dkToggle.addClass(cssClasses.validation.success).removeClass(cssClasses.validation.error); 921 } 922 else if (options.error) { 923 $dkToggle.addClass(cssClasses.validation.error).removeClass(cssClasses.validation.success); 924 } 925 926 setBackgroundPosition($dk, $dkToggle.outerWidth(true)); 927 }); 928 }; 929 930 // Reload / rebuild, in case of dynamic updates etc. 931 // Credits to Jeremy (http://stackoverflow.com/users/1380047/jeremy-p) 932 // Regenerating dk wrapper to update it's content 933 // http://stackoverflow.com/a/13280151 934 methods.refresh = function () { 935 return this.each(function () { 936 var 937 data = $(this).data('dropkick'), 938 $select = data.$select, 939 $dk = data.$dk, 940 $current, 941 $dkopts 942 ; 943 // Update data options 944 data.options = $select.find('option'); 945 data.isDisabled = $select.prop('disabled') != false? 'dk-disable' : ''; //check again 946 // Rebuild options list. filter options inner and replace 947 $dkopts = build(dropdownTemplate, data).find('.dk_options_inner'); 948 $dk.find('.dk_options_inner').replaceWith($dkopts); 949 // Re setCurrent option after refresh options list 950 $current = $('a[data-dk-dropdown-value="' + $select.val() + '"]', $dk); 951 setCurrent($current.parent(), $dk); 952 updateFields($current, $dk); 953 }); 954 }; 955 956 function setBackgroundPosition($dk, width) { 957 958 var arrowImageWidth = 17; 959 var bgPositionRightPadding = 10; 960 var bgPositionLeftPadding = 8; 961 var bgPositionLeftForArrow; 962 var isRtl = ((window.Next 963 && Next.Settings) 964 ? Next.Settings.Channel.DirectionRTL 965 : false); 966 967 bgPositionLeftForArrow = (!isRtl ? (width -arrowImageWidth -bgPositionRightPadding) : bgPositionLeftPadding) 968 969 var bgPosition = bgPositionLeftForArrow + "px center"; 970 971 var $dkToggle = $dk.children("a"); 972 973 if ($dkToggle.hasClass(cssClasses.validation.success) || $dkToggle.hasClass(cssClasses.validation.error)) { 974 975 var validationBgPosition = (bgPositionLeftForArrow +(!isRtl ? (- 25) : 25)) + "px center"; 976 977 bgPosition = validationBgPosition + ", " + bgPosition; 978 979 } 980 981 $dkToggle.css("background-position", bgPosition); 982 } 983 984 function isAvailable() { 985 return (!ie6 986 && ( 987 (window.Next 988 && Next.Settings 989 && Next.Settings.UI 990 && Next.Settings.UI.CustomDropdownEnabled) 991 || 992 (typeof CustomDropdownEnabled != 'undefined' 993 && CustomDropdownEnabled) 994 ) 995 ); 996 }; 997 998 // Expose the plugin 999 $.fn.dropkick = function (method) { 1000 if (isAvailable()) { 1001 if (methods[method]) { 1002 return methods[method].apply(this, Array.prototype.slice.call(arguments, 1)); 1003 } 1004 if (typeof method === 'object' || !method) { 1005 return methods.init.apply(this, arguments); 1006 } 1007 } 1008 }; 1009 1010 $(function () { 1011 1012 // Handle click events on individual dropdown options 1013 $(document).on((msie ? 'mousedown' : 'click'), '.dk_options a', function () { 1014 var $option = $(this), $dk = $option.parents('.dk_container').first(); 1015 1016 // Supreme - Disable feature 1017 if (!$dk.hasClass('dk-disable')) { 1018 openDropdown($dk); 1019 } 1020 1021 if (!$option.parent().hasClass('disabled')) { 1022 updateFields($option, $dk); 1023 setCurrent($option.parent(), $dk); // IE8+, iOS4 and some Android [4.0] Browsers back to scrollTop 0 when an option is clicked and the dropdown is opened again 1024 closeDropdown($dk); 1025 } 1026 1027 return false; 1028 }); 1029 1030 // Setup keyboard nav 1031 $(document).on('keydown.dk_nav', function (e) { 1032 var $dk; 1033 1034 // If we have an open dropdown, key events should get sent to that one 1035 if ($opened) { 1036 $dk = $opened; 1037 } else if ($focused) { 1038 // But if we have no open dropdowns, use the focused dropdown instead 1039 $dk = $focused; 1040 } 1041 1042 if ($dk) { 1043 handleKeyBoardNav(e, $dk); 1044 } 1045 }); 1046 1047 // Globally handle a click outside of the dropdown list by closing it. 1048 $(document).on('click', null, function (e) { 1049 var 1050 $eTarget = $(e.target), 1051 $dk 1052 ; 1053 if ($opened && $eTarget.closest(".dk_container").length === 0) { 1054 closeDropdown($opened); // Improves performance by minimizing DOM Traversal Operations 1055 } else if ($eTarget.is(".dk_toggle, .dk_label")) { 1056 $dk = $eTarget.parents('.dk_container').first(); 1057 1058 var dkData = $dk.data("dropkick"); 1059 1060 if ($dk.hasClass('dk_open')) { 1061 closeDropdown($dk); 1062 } else { 1063 $opened && closeDropdown($opened); 1064 1065 openAndPopulate($dk, e); 1066 1067 } // Avoids duplication of call to _openDropdown 1068 1069 return false; 1070 } else if ($eTarget.attr('for') && !!$('#dk_container_' + $eTarget.attr('for'))[0]) { 1071 $('#dk_container_' + $eTarget.attr('for')).trigger('focus.dropkick'); 1072 } 1073 }); 1074 1075 // // Prevents window scroll when scrolling through dk_options, simulating native behaviour 1076 // var wheelSupport = 'onwheel' in window ? 'wheel' : // Modern browsers support "wheel" 1077 // 'onmousewheel' in document ? 'mousewheel' : // Webkit and IE support at least "mousewheel" 1078 // "MouseScrollEvent" in window ? 'DOMMouseScroll MozMousePixelScroll' : // legacy non-standard event for older Firefox
1079 // false // lacks support 1080 // ; 1081 1082 // wheelSupport && $(document).on(wheelSupport, '.dk_options', function (event) { 1083 // var delta = event.originalEvent.wheelDelta || -event.originalEvent.deltaY || -event.originalEvent.detail; // Gets scroll ammount 1084 // if (msie) { this.scrollTop -= Math.round(delta / 10); return false; } // Normalize IE behaviour 1085 // return (delta > 0 && this.scrollTop <= 0) || (delta < 0 && this.scrollTop >= this.scrollHeight - this.offsetHeight) ? false : true; // Finally cancels page scroll when nedded 1086 // }); 1087 1088 1089 }); 1090 1091} (jQuery, window, document)); 1092; 1093/*! 1094 * Copyright 2013 Small Batch, Inc. 1095 * 1096 * Licensed under the Apache License, Version 2.0 (the "License"); you may not 1097 * use this file except in compliance with the License. You may obtain a copy of 1098 * the License at 1099 * 1100 * http://www.apache.org/licenses/LICENSE-2.0 1101 * 1102 * Unless required by applicable law or agreed to in writing, software 1103 * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT 1104 * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the 1105 * License for the specific language governing permissions and limitations under 1106 * the License. 1107 */ 1108;(function(window,document,undefined){ 1109var j=void 0,k=!0,l=null,p=!1;function q(a){return function(){return this[a]}}var aa=this;function ba(a,b){var c=a.split("."),d=aa;!(c[0]in d)&&d.execScript&&d.execScript("var "+c[0]);for(var e;c.length&&(e=c.shift());)!c.length&&b!==j?d[e]=b:d=d[e]?d[e]:d[e]={}}aa.Ba=k;function ca(a,b,c){return a.call.apply(a.bind,arguments)} 1110function da(a,b,c){if(!a)throw Error();if(2<arguments.length){var d=Array.prototype.slice.call(arguments,2);return function(){var c=Array.prototype.slice.call(arguments);Array.prototype.unshift.apply(c,d);return a.apply(b,c)}}return function(){return a.apply(b,arguments)}}function s(a,b,c){s=Function.prototype.bind&&-1!=Function.prototype.bind.toString().indexOf("native code")?ca:da;return s.apply(l,arguments)}var ea=Date.now||function(){return+new Date};function fa(a,b){this.G=a;this.u=b||a;this.z=this.u.document;this.R=j}fa.prototype.createElement=function(a,b,c){a=this.z.createElement(a);if(b)for(var d in b)if(b.hasOwnProperty(d))if("style"==d){var e=a,f=b[d];ga(this)?e.setAttribute("style",f):e.style.cssText=f}else a.setAttribute(d,b[d]);c&&a.appendChild(this.z.createTextNode(c));return a};function t(a,b,c){a=a.z.getElementsByTagName(b)[0];a||(a=document.documentElement);a&&a.lastChild&&a.insertBefore(c,a.lastChild)} 1111function u(a,b){return a.createElement("link",{rel:"stylesheet",href:b})}function ha(a,b){return a.createElement("script",{src:b})}function v(a,b){for(var c=a.className.split(/\s+/),d=0,e=c.length;d<e;d++)if(c[d]==b)return;c.push(b);a.className=c.join(" ").replace(/\s+/g," ").replace(/^\s+|\s+$/,"")}function w(a,b){for(var c=a.className.split(/\s+/),d=[],e=0,f=c.length;e<f;e++)c[e]!=b&&d.push(c[e]);a.className=d.join(" ").replace(/\s+/g," ").replace(/^\s+|\s+$/,"")} 1112function ia(a,b){for(var c=a.className.split(/\s+/),d=0,e=c.length;d<e;d++)if(c[d]==b)return k;return p}function ga(a){if(a.R===j){var b=a.z.createElement("p");b.innerHTML='<a style="top:1px;">w</a>';a.R=/top/.test(b.getElementsByTagName("a")[0].getAttribute("style"))}return a.R}function x(a){var b=a.u.location.protocol;"about:"==b&&(b=a.G.location.protocol);return"https:"==b?"https:":"http:"};function y(a,b,c){this.w=a;this.T=b;this.Aa=c}ba("webfont.BrowserInfo",y);y.prototype.qa=q("w");y.prototype.hasWebFontSupport=y.prototype.qa;y.prototype.ra=q("T");y.prototype.hasWebKitFallbackBug=y.prototype.ra;y.prototype.sa=q("Aa");y.prototype.hasWebKitMetricsBug=y.prototype.sa;function z(a,b,c,d){this.e=a!=l?a:l;this.o=b!=l?b:l;this.ba=c!=l?c:l;this.f=d!=l?d:l}var ja=/^([0-9]+)(?:[\._-]([0-9]+))?(?:[\._-]([0-9]+))?(?:[\._+-]?(.*))?$/;z.prototype.toString=function(){return[this.e,this.o||"",this.ba||"",this.f||""].join("")}; 1113function A(a){a=ja.exec(a);var b=l,c=l,d=l,e=l;a&&(a[1]!==l&&a[1]&&(b=parseInt(a[1],10)),a[2]!==l&&a[2]&&(c=parseInt(a[2],10)),a[3]!==l&&a[3]&&(d=parseInt(a[3],10)),a[4]!==l&&a[4]&&(e=/^[0-9]+$/.test(a[4])?parseInt(a[4],10):a[4]));return new z(b,c,d,e)};function B(a,b,c,d,e,f,g,h,n,m,r){this.J=a;this.Ha=b;this.za=c;this.ga=d;this.Fa=e;this.fa=f;this.xa=g;this.Ga=h;this.wa=n;this.ea=m;this.k=r}ba("webfont.UserAgent",B);B.prototype.getName=q("J");B.prototype.getName=B.prototype.getName;B.prototype.pa=q("za");B.prototype.getVersion=B.prototype.pa;B.prototype.la=q("ga");B.prototype.getEngine=B.prototype.la;B.prototype.ma=q("fa");B.prototype.getEngineVersion=B.prototype.ma;B.prototype.na=q("xa");B.prototype.getPlatform=B.prototype.na;B.prototype.oa=q("wa"); 1114B.prototype.getPlatformVersion=B.prototype.oa;B.prototype.ka=q("ea");B.prototype.getDocumentMode=B.prototype.ka;B.prototype.ja=q("k");B.prototype.getBrowserInfo=B.prototype.ja;function C(a,b){this.a=a;this.H=b}var ka=new B("Unknown",new z,"Unknown","Unknown",new z,"Unknown","Unknown",new z,"Unknown",j,new y(p,p,p)); 1115C.prototype.parse=function(){var a;if(-1!=this.a.indexOf("MSIE")){a=D(this);var b=E(this),c=A(b),d=F(this.a,/MSIE ([\d\w\.]+)/,1),e=A(d);a=new B("MSIE",e,d,"MSIE",e,d,a,c,b,G(this.H),new y("Windows"==a&&6<=e.e||"W
1115indows Phone"==a&&8<=c.e,p,p))}else if(-1!=this.a.indexOf("Opera"))a:{a="Unknown";var b=F(this.a,/Presto\/([\d\w\.]+)/,1),c=A(b),d=E(this),e=A(d),f=G(this.H);c.e!==l?a="Presto":(-1!=this.a.indexOf("Gecko")&&(a="Gecko"),b=F(this.a,/rv:([^\)]+)/,1),c=A(b));if(-1!=this.a.indexOf("Opera Mini/")){var g= 1116F(this.a,/Opera Mini\/([\d\.]+)/,1),h=A(g);a=new B("OperaMini",h,g,a,c,b,D(this),e,d,f,new y(p,p,p))}else{if(-1!=this.a.indexOf("Version/")&&(g=F(this.a,/Version\/([\d\.]+)/,1),h=A(g),h.e!==l)){a=new B("Opera",h,g,a,c,b,D(this),e,d,f,new y(10<=h.e,p,p));break a}g=F(this.a,/Opera[\/ ]([\d\.]+)/,1);h=A(g);a=h.e!==l?new B("Opera",h,g,a,c,b,D(this),e,d,f,new y(10<=h.e,p,p)):new B("Opera",new z,"Unknown",a,c,b,D(this),e,d,f,new y(p,p,p))}}else if(/AppleWeb(K|k)it/.test(this.a)){a=D(this);var b=E(this), 1117c=A(b),d=F(this.a,/AppleWeb(?:K|k)it\/([\d\.\+]+)/,1),e=A(d),f="Unknown",g=new z,h="Unknown",n=p;-1!=this.a.indexOf("Chrome")||-1!=this.a.indexOf("CrMo")||-1!=this.a.indexOf("CriOS")?f="Chrome":/Silk\/\d/.test(this.a)?f="Silk":"BlackBerry"==a||"Android"==a?f="BuiltinBrowser":-1!=this.a.indexOf("Safari")?f="Safari":-1!=this.a.indexOf("AdobeAIR")&&(f="AdobeAIR");"BuiltinBrowser"==f?h="Unknown":"Silk"==f?h=F(this.a,/Silk\/([\d\._]+)/,1):"Chrome"==f?h=F(this.a,/(Chrome|CrMo|CriOS)\/([\d\.]+)/,2):-1!= 1118this.a.indexOf("Version/")?h=F(this.a,/Version\/([\d\.\w]+)/,1):"AdobeAIR"==f&&(h=F(this.a,/AdobeAIR\/([\d\.]+)/,1));g=A(h);n="AdobeAIR"==f?2<g.e||2==g.e&&5<=g.o:"BlackBerry"==a?10<=c.e:"Android"==a?2<c.e||2==c.e&&1<c.o:526<=e.e||525<=e.e&&13<=e.o;a=new B(f,g,h,"AppleWebKit",e,d,a,c,b,G(this.H),new y(n,536>e.e||536==e.e&&11>e.o,"iPhone"==a||"iPad"==a||"iPod"==a||"Macintosh"==a))}else-1!=this.a.indexOf("Gecko")?(a="Unknown",b=new z,c="Unknown",d=E(this),e=A(d),f=p,-1!=this.a.indexOf("Firefox")?(a= 1119"Firefox",c=F(this.a,/Firefox\/([\d\w\.]+)/,1),b=A(c),f=3<=b.e&&5<=b.o):-1!=this.a.indexOf("Mozilla")&&(a="Mozilla"),g=F(this.a,/rv:([^\)]+)/,1),h=A(g),f||(f=1<h.e||1==h.e&&9<h.o||1==h.e&&9==h.o&&2<=h.ba||g.match(/1\.9\.1b[123]/)!=l||g.match(/1\.9\.1\.[\d\.]+/)!=l),a=new B(a,b,c,"Gecko",h,g,D(this),e,d,G(this.H),new y(f,p,p))):a=ka;return a}; 1120function D(a){var b=F(a.a,/(iPod|iPad|iPhone|Android|Windows Phone|BB\d{2}|BlackBerry)/,1);if(""!=b)return/BB\d{2}/.test(b)&&(b="BlackBerry"),b;a=F(a.a,/(Linux|Mac_PowerPC|Macintosh|Windows|CrOS)/,1);return""!=a?("Mac_PowerPC"==a&&(a="Macintosh"),a):"Unknown"} 1121function E(a){var b=F(a.a,/(OS X|Windows NT|Android) ([^;)]+)/,2);if(b||(b=F(a.a,/Windows Phone( OS)? ([^;)]+)/,2))||(b=F(a.a,/(iPhone )?OS ([\d_]+)/,2)))return b;if(b=F(a.a,/(?:Linux|CrOS) ([^;)]+)/,1))for(var b=b.split(/\s/),c=0;c<b.length;c+=1)if(/^[\d\._]+$/.test(b[c]))return b[c];return(a=F(a.a,/(BB\d{2}|BlackBerry).*?Version\/([^\s]*)/,2))?a:"Unknown"}function F(a,b,c){return(a=a.match(b))&&a[c]?a[c]:""}function G(a){if(a.documentMode)return a.documentMode};function la(a){this.va=a||"-"}la.prototype.f=function(a){for(var b=[],c=0;c<arguments.length;c++)b.push(arguments[c].replace(/[\W_]+/g,"").toLowerCase());return b.join(this.va)};function H(a,b){this.J=a;this.U=4;this.K="n";var c=(b||"n4").match(/^([nio])([1-9])$/i);c&&(this.K=c[1],this.U=parseInt(c[2],10))}H.prototype.getName=q("J");function I(a){return a.K+a.U}function ma(a){var b=4,c="n",d=l;a&&((d=a.match(/(normal|oblique|italic)/i))&&d[1]&&(c=d[1].substr(0,1).toLowerCase()),(d=a.match(/([1-9]00|normal|bold)/i))&&d[1]&&(/bold/i.test(d[1])?b=7:/[1-9]00/.test(d[1])&&(b=parseInt(d[1].substr(0,1),10))));return c+b};function na(a,b,c){this.c=a;this.h=b;this.M=c;this.j="wf";this.g=new la("-")}function pa(a){v(a.h,a.g.f(a.j,"loading"));J(a,"loading")}function K(a){w(a.h,a.g.f(a.j,"loading"));ia(a.h,a.g.f(a.j,"active"))||v(a.h,a.g.f(a.j,"inactive"));J(a,"inactive")}function J(a,b,c){if(a.M[b])if(c)a.M[b](c.getName(),I(c));else a.M[b]()};function L(a,b){this.c=a;this.C=b;this.s=this.c.createElement("span",{"aria-hidden":"true"},this.C)} 1122function M(a,b){var c=a.s,d;d=[];for(var e=b.J.split(/,\s*/),f=0;f<e.length;f++){var g=e[f].replace(/['"]/g,"");-1==g.indexOf(" ")?d.push(g):d.push("'"+g+"'")}d=d.join(",");e="normal";f=b.U+"00";"o"===b.K?e="oblique":"i"===b.K&&(e="italic");d="position:absolute;top:-999px;left:-999px;font-size:300px;width:auto;height:auto;line-height:normal;margin:0;padding:0;font-variant:normal;white-space:nowrap;
1122font-family:"+d+";"+("font-style:"+e+";font-weight:"+f+";");ga(a.c)?c.setAttribute("style",d):c.style.cssText= 1123d}function N(a){t(a.c,"body",a.s)}L.prototype.remove=function(){var a=this.s;a.parentNode&&a.parentNode.removeChild(a)};function qa(a,b,c,d,e,f,g,h){this.V=a;this.ta=b;this.c=c;this.q=d;this.C=h||"BESbswy";this.k=e;this.F={};this.S=f||5E3;this.Z=g||l;this.B=this.A=l;a=new L(this.c,this.C);N(a);for(var n in O)O.hasOwnProperty(n)&&(M(a,new H(O[n],I(this.q))),this.F[O[n]]=a.s.offsetWidth);a.remove()}var O={Ea:"serif",Da:"sans-serif",Ca:"monospace"}; 1124qa.prototype.start=function(){this.A=new L(this.c,this.C);N(this.A);this.B=new L(this.c,this.C);N(this.B);this.ya=ea();M(this.A,new H(this.q.getName()+",serif",I(this.q)));M(this.B,new H(this.q.getName()+",sans-serif",I(this.q)));ra(this)};function sa(a,b,c){for(var d in O)if(O.hasOwnProperty(d)&&b===a.F[O[d]]&&c===a.F[O[d]])return k;return p} 1125function ra(a){var b=a.A.s.offsetWidth,c=a.B.s.offsetWidth;b===a.F.serif&&c===a.F["sans-serif"]||a.k.T&&sa(a,b,c)?ea()-a.ya>=a.S?a.k.T&&sa(a,b,c)&&(a.Z===l||a.Z.hasOwnProperty(a.q.getName()))?P(a,a.V):P(a,a.ta):setTimeout(s(function(){ra(this)},a),25):P(a,a.V)}function P(a,b){a.A.remove();a.B.remove();b(a.q)};function R(a,b,c,d){this.c=b;this.t=c;this.N=0;this.ca=this.Y=p;this.S=d;this.k=a.k}function ta(a,b,c,d,e){if(0===b.length&&e)K(a.t);else{a.N+=b.length;e&&(a.Y=e);for(e=0;e<b.length;e++){var f=b[e],g=c[f.getName()],h=a.t,n=f;v(h.h,h.g.f(h.j,n.getName(),I(n).toString(),"loading"));J(h,"fontloading",n);(new qa(s(a.ha,a),s(a.ia,a),a.c,f,a.k,a.S,d,g)).start()}}} 1126R.prototype.ha=function(a){var b=this.t;w(b.h,b.g.f(b.j,a.getName(),I(a).toString(),"loading"));w(b.h,b.g.f(b.j,a.getName(),I(a).toString(),"inactive"));v(b.h,b.g.f(b.j,a.getName(),I(a).toString(),"active"));J(b,"fontactive",a);this.ca=k;ua(this)};R.prototype.ia=function(a){var b=this.t;w(b.h,b.g.f(b.j,a.getName(),I(a).toString(),"loading"));ia(b.h,b.g.f(b.j,a.getName(),I(a).toString(),"active"))||v(b.h,b.g.f(b.j,a.getName(),I(a).toString(),"inactive"));J(b,"fontinactive",a);ua(this)}; 1127function ua(a){0==--a.N&&a.Y&&(a.ca?(a=a.t,w(a.h,a.g.f(a.j,"loading")),w(a.h,a.g.f(a.j,"inactive")),v(a.h,a.g.f(a.j,"active")),J(a,"active")):K(a.t))};function S(a,b,c){this.G=a;this.W=b;this.a=c;this.O=this.P=0}function T(a,b){U.W.$[a]=b}S.prototype.load=function(a){var b=a.context||this.G;this.c=new fa(this.G,b);b=new na(this.c,b.document.documentElement,a);if(this.a.k.w){var c=this.W,d=this.c,e=[],f;for(f in a)if(a.hasOwnProperty(f)){var g=c.$[f];g&&e.push(g(a[f],d))}a=a.timeout;this.O=this.P=e.length;a=new R(this.a,this.c,b,a);f=0;for(c=e.length;f<c;f++)d=e[f],d.v(this.a,s(this.ua,this,d,b,a))}else K(b)}; 1128S.prototype.ua=function(a,b,c,d){var e=this;d?a.load(function(a,d,h){var n=0==--e.P;n&&pa(b);setTimeout(function(){ta(c,a,d||{},h||l,n)},0)}):(a=0==--this.P,this.O--,a&&(0==this.O?K(b):pa(b)),ta(c,[],{},l,a))};var va=window,wa=(new C(navigator.userAgent,document)).parse(),U=va.WebFont=new S(window,new function(){this.$={}},wa);U.load=U.load;function V(a,b){this.c=a;this.d=b}V.prototype.load=function(a){var b,c,d=this.d.urls||[],e=this.d.families||[];b=0;for(c=d.length;b<c;b++)t(this.c,"head",u(this.c,d[b]));d=[];b=0;for(c=e.length;b<c;b++){var f=e[b].split(":");if(f[1])for(var g=f[1].split(","),h=0;h<g.length;h+=1)d.push(new H(f[0],g[h]));else d.push(new H(f[0]))}a(d)};V.prototype.v=function(a,b){return b(a.k.w)};T("custom",function(a,b){return new V(b,a)});function W(a,b){this.c=a;this.d=b}var xa={regular:"n4",bold:"n7",italic:"i4",bolditalic:"i7",r:"n4",b:"n7",i:"i4",bi:"i7"};W.prototype.v=function(a,b){return b(a.k.w)};W.prototype.load=function(a){t(this.c,"head",u(this.c,x(this.c)+"//webfonts.fontslive.com/css/"+this.d.key+".css"));for(var b=this.d.families,c=[],d=0,e=b.length;d<e;d++)c.push.apply(c,ya(b[d]));a(c)}; 1129function ya(a){var b=a.split(":");a=b[0];if(b[1]){for(var c=b[1].split(","),b=[],d=0,e=c.length;d<e;d++){var f=c[d];if(f){var g=xa[f];b.push(g?g:f)}}c=[];for(d=0;d<b.length;d+=1)c.push(new H(a,b[d]));return c}return[new H(a)]}T("ascender",function(a,b){return new W(b,a)});function X(a,b,c){this.a=a;this.c=b;this.d=c;this.m=[]} 1130X.prototype.v=function(a,b){var c=this,d=c.d.projectId,e=c.d.version;if(d){var f=c.c.u,g=c.c.createElement("script");g.id="__MonotypeAPIScript__"+d;var h=p;g.onload=g.onreadystatechange=function(){if(!h&&(!this.readyState||"loaded"===this.readyState||"complete"===this.readyState)){h=k;if(f["__mti_fntLst"+d]){var e=f["__mti_fntLst"+d]();if(e)for(var m=0;m<e.length;m++)c.m.push(new H(e[m].fontfamily))}b(a.k.w);g.onload=g.onreadystatechange=l}};g.src=c.D(d,e);t(this.c,"head",g)}else b(k)}; 1131X.prototype.D=function(a,b){var c=x(this.c),d=(this.d.api||"fast.fonts.com/jsapi").replace(/^.*http(s?):(\/\/)?/,"");return c+"//"+d+"/"+a+".js"+(b?"?v="+b:"")};X.prototype.load=function(a){a(this.m)};T("monotype",function(a,b){var c=(new C(navigator.userAgent,document)).parse();return new X(c,b,a)});function Y(a,b){this.c=a;this.d=b;this.m=[]}Y.prototype.D=function(a){var b=x(this.c);return(this.d.api||b+"//use.typekit.net")+"/"+a+".js"}; 1132Y.prototype.v=function(a,b){var c=this.d.id,d=this.d,e=this.c.u,f=this;c?(e.__webfonttypekitmodule__||(e.__webfonttypekitmodule__={}),e.__webfonttypekitmodule__[c]=function(c){c(a,d,function(a,c,d){for(var e=0;e<c.length;e+=1){var g=d[c[e]];if(g)for(var Q=0;Q<g.length;Q+=1)f.m.push(new H(c[e],g[Q]));else f.m.push(new H(c[e]))}b(a)})},c=ha(this.c,this.D(c)),t(this.c,"head",c)):b(k)};Y.prototype.load=function(a){a(this.m)};T("typekit",function(a,b){return new Y(b,a)});function za(a,b,c){this.L=a?a:b+Aa;this.p=[];this.Q=[];this.da=c||""}var Aa="//fonts.googleapis.com/css";za.prototype.f=function(){if(0==this.p.length)throw Error("No fonts to load !");if(-1!=this.L.indexOf("kit="))return this.L;for(var a=this.p.length,b=[],c=0;c<a;c++)b.push(this.p[c].replace(/ /g,"+"));a=this.L+"?family="+b.join("%7C");0<this.Q.length&&(a+="&subset="+this.Q.join(","));0<this.da.length&&(a+="&text="+encodeURIComponent(this.da));return a};function Ba(a){this.p=a;this.aa=[];this.I={}} 1133var Ca={latin:"BESbswy",cyrillic:"йяЖ",greek:"αβΣ",khmer:"កខគ",Hanuman:"កខគ"},Da={thin:"1",extralight:"2","extra-light":"2",ultralight:"2","ultra-light":"2",light:"3",regular:"4",book:"4",medium:"5","semi-bold":"6",semibold:"6","demi-bold":"6",demibold:"6",bold:"7","extra-bold":"8",extrabold:"8","ultra-bold":"8",ultrabold:"8",black:"9",heavy:"9",l:"3",r:"4",b:"7"},Ea={i:"i",italic:"i",n:"n",normal:"n"},Fa=RegExp("^(thin|(?:(?:extra|ultra)-?)?light|regular|book|medium|(?:(?:semi|demi|extra|ultra)-?)?bold|black|heavy|l|r|b|[1-9]00)?(n|i|normal|italic)?$"); 1134Ba.prototype.parse=function(){for(var a=this.p.length,b=0;b<a;b++){var c=this.p[b].split(":"),d=c[0].replace(/\+/g," "),e=["n4"];if(2<=c.length){var f;var g=c[1];f=[];if(g)for(var g=g.split(","),h=g.length,n=0;n<h;n++){var m;m=g[n];if(m.match(/^[\w]+$/)){m=Fa.exec(m.toLowerCase());var r=j;if(m==l)r="";else{r=j;r=m[1];if(r==l||""==r)r="4";else var oa=Da[r],r=oa?oa:isNaN(r)?"4":r.substr(0,1);r=[m[2]==l||""==m[2]?"n":Ea[m[2]],r].join("")}m=r}else m="";
1134m&&f.push(m)}0<f.length&&(e=f);3==c.length&&(c=c[2], 1135f=[],c=!c?f:c.split(","),0<c.length&&(c=Ca[c[0]])&&(this.I[d]=c))}this.I[d]||(c=Ca[d])&&(this.I[d]=c);for(c=0;c<e.length;c+=1)this.aa.push(new H(d,e[c]))}};function Z(a,b,c){this.a=a;this.c=b;this.d=c}var Ga={Arimo:k,Cousine:k,Tinos:k};Z.prototype.v=function(a,b){b(a.k.w)};Z.prototype.load=function(a){var b=this.c;if("MSIE"==this.a.getName()&&this.d.blocking!=k){var c=s(this.X,this,a),d=function(){b.z.body?c():setTimeout(d,0)};d()}else this.X(a)}; 1136Z.prototype.X=function(a){for(var b=this.c,c=new za(this.d.api,x(b),this.d.text),d=this.d.families,e=d.length,f=0;f<e;f++){var g=d[f].split(":");3==g.length&&c.Q.push(g.pop());var h="";2==g.length&&""!=g[1]&&(h=":");c.p.push(g.join(h))}d=new Ba(d);d.parse();t(b,"head",u(b,c.f()));a(d.aa,d.I,Ga)};T("google",function(a,b){var c=(new C(navigator.userAgent,document)).parse();return new Z(c,b,a)});function $(a,b){this.c=a;this.d=b;this.m=[]}$.prototype.D=function(a){return x(this.c)+(this.d.api||"//f.fontdeck.com/s/css/js/")+(this.c.u.location.hostname||this.c.G.location.hostname)+"/"+a+".js"}; 1137$.prototype.v=function(a,b){var c=this.d.id,d=this.c.u,e=this;c?(d.__webfontfontdeckmodule__||(d.__webfontfontdeckmodule__={}),d.__webfontfontdeckmodule__[c]=function(a,c){for(var d=0,n=c.fonts.length;d<n;++d){var m=c.fonts[d];e.m.push(new H(m.name,ma("font-weight:"+m.weight+";font-style:"+m.style)))}b(a)},c=ha(this.c,this.D(c)),t(this.c,"head",c)):b(k)};$.prototype.load=function(a){a(this.m)};T("fontdeck",function(a,b){return new $(b,a)});window.WebFontConfig&&U.load(window.WebFontConfig); 1138})(this,document);;
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.