chicago
Version:
A front-end JavaScript library for user-interface developers.
16 lines (15 loc) • 28.7 kB
JavaScript
/*!
* Chicago - A front-end JavaScript library for user-interface developers.
*
* Copyright (c) 2015 Erik Nielsen
*
* Licensed under the MIT license:
* http://www.opensource.org/licenses/mit-license.php
*
* Project home:
* https://nielse63.github.io/Chicago/
*
* Version: 1.1.0
*
*/
Array.prototype.diff=function(a){return this.filter(function(b){return a.indexOf(b)<0})},function(a,b){if("undefined"==typeof window&&a.window&&(a=a.window),"function"==typeof define&&define.amd&&define("chicago",function(){var c=a.Chicago||b(a.jQuery,a,a.document);return c.load=function(a,b,d,e){var f,g=a.split(","),h=[],i=(e.config&&e.config.chicago&&e.config.chicago.base?e.config.chicago.base:"").replace(/\/+$/g,"");if(!i)throw new Error("Please define base path to Chicago in the requirejs config.");for(f=0;f<g.length;f+=1){var j=g[f].replace(/\./g,"/");h.push(i+"/modules/"+j)}b(h,function(){d(c)})},c}),!a.jQuery)throw new Error("Chicago requires jQuery");return a.Chicago=b(a.jQuery,a,a.document),a.Chicago}("undefined"!=typeof window?window:this,function(a,b,c){var d=b.Chicago,e={beforeready:"beforeready.chicago.dom",ready:"ready.chicago.dom",load:"reloaded.chicago.dom",init:"init.chicago.module"},f={version:"1.1.0",doc:c,win:b,$:a,$doc:a(c),$win:a(b),$html:a("html"),$head:a("html head"),$body:a("body"),utils:{},support:{},modules:{},create:{},css:{},elements:{},deprecated:{},domReady:!1,langdirection:a("html").attr("dir")?a("html").attr("dir"):"ltr",extend:function(){var a,b,c,d,e,g,h=arguments[0]||{},i=1,j=arguments.length,k=!1;for(f.utils.is.boolean(h)&&(k=h,h=arguments[i]||{},i++),"object"==typeof h||f.utils.is.function(h)||(h={});j>i;i++)if(null!==(a=arguments[i]))for(b in a)c=h[b],d=a[b],h!==d&&(k&&d&&(f.utils.is.object(d)||(e=f.utils.is.array(d)))?(e?(e=!1,g=c&&f.utils.is.array(c)?c:[]):g=c&&f.utils.is.object(c)?c:{},h[b]=f.extend(k,g,d)):void 0!==d&&(h[b]=d));return h},noConflict:function(){return d?(b.Chicago=d,a.Chicago=d,a.fn.chicago=d.fn,d):this},fn:function(b,c){var d=arguments,e=b.match(/^([a-z\-]+)(?:\.([a-z]+))?/i),g=e[1],h=e[2];return h||"string"!=typeof c||(h=c),f[g]?this.each(function(){var a=f.$(this),b=a.data(g);b||a.data(g,b=f[g](this,h?void 0:c)),h&&b[h].apply(b,Array.prototype.slice.call(d,1))}):(a.error("Chicago module ["+g+"] does not exist."),this)},on:function(a,b,c){return a&&a.indexOf(e.ready)>-1&&f.domReady?b.apply(f.$doc):f.$doc.on(a,b,c)},trigger:function(a,b){return f.$doc.trigger(a,b)}};f.ready=function(a){return f.domReady?a(c):f.on(e.ready)},f.module=function(b,c){this.create[b]||(this.create[b]=function(a){return function(c){return a.factory.make(b,c)}}(this));var d="chicago.data."+b,g=function(a,c){return this.element=a?f.$(a):null,this.options=f.extend(!0,{},this.defaults,c),this.element&&(this.element.data(d,this),f.elements[b]||(f.elements[b]=null)),this.init(),this.trigger(e.init,[b,this]),this};return this.extend(!0,g.prototype,{defaults:{},boot:function(){},init:function(){},destroy:function(){},on:function(a,b,c){return f.$(this.element||this).on(a,b,c)},one:function(a,b,c){return f.$(this.element||this).one(a,b,c)},off:function(a){return f.$(this.element||this).off(a)},trigger:function(a,b){return f.$(this.element||this).trigger(a,b)},proxy:function(a,b){return b.split(" ").forEach(function(b){return function(c){b[c]||(b[c]=function(){return a[c].apply(a,arguments)})}}(this))}},c),this.modules[b]=g,this[b]=function(){var c,e,g=arguments;if(g.length)switch(g.length){case 1:f.utils.is.string(g[0])||g[0].nodeType||f.utils.is.jQueryObject(g[0])?c=a(g[0]):e=g[0];break;case 2:c=f.$(g[0]),e=g[1]}return c&&c.data(d)?c.data(d):new f.modules[b](c,e)},this[b].template||(this[b].template={}),this[b].template=f.extend(this[b].template,c.template),f.domReady&&f.module.boot(b),g},f.module.boot=function(a){f.modules[a]&&f.modules[a].prototype&&f.modules[a].prototype.boot&&!f.modules[a].booted&&(f.modules[a].booted=!0,f.modules[a].prototype.boot.apply(f,[]))},f.bootComponents=function(){for(var a in f.modules)f.module.boot(a)},f.on(e.ready,function(){f.domReady||(f.domReady=!0)}),f.support=f.$.extend(f.support,{requestAnimationFrame:b.requestAnimationFrame||b.webkitRequestAnimationFrame||b.mozRequestAnimationFrame||b.msRequestAnimationFrame||b.oRequestAnimationFrame||function(a){b.setTimeout(a,1e3/60)},touch:"ontouchstart"in b||b.DocumentTouch&&b.document instanceof b.DocumentTouch||b.navigator.msPointerEnabled&&b.navigator.msMaxTouchPoints>0||b.navigator.pointerEnabled&&b.navigator.maxTouchPoints>0||!1,mutationobserver:b.MutationObserver||b.WebKitMutationObserver||null,transition:{end:function(){var a=c.body||c.documentElement,b={WebkitTransition:"webkitTransitionEnd",MozTransition:"transitionend",OTransition:"oTransitionEnd otransitionend",transition:"transitionend"};for(var d in b)if(void 0!==a.style[d])return b[d]}()},animation:{start:function(){var a=c.body||c.documentElement,b={WebkitAnimation:"webkitAnimationStart",MozAnimation:"animationstart",OAnimation:"oAnimationStart oanimationstart",MSAnimation:"MSAnimationStart",animation:"animationstart"};for(var d in b)if(void 0!==a.style[d])return b[d]}(),iteration:function(){var a=c.body||c.documentElement,b={WebkitAnimation:"webkitAnimationIteration",MozTransition:"animationiteration",OTransition:"oAnimationIteration oanimationiteration",MSAnimation:"MSAnimationIteration",transition:"animationiteration"};for(var d in b)if(void 0!==a.style[d])return b[d]}(),end:function(){var a=c.body||c.documentElement,b={WebkitAnimation:"webkitAnimationEnd",MozAnimation:"animationend",OAnimation:"oAnimationEnd oanimationend",MSAnimation:"MSAnimationEnd",transition:"animationend"};for(var d in b)if(void 0!==a.style[d])return b[d]}()}}),f.utils=f.$.extend(f.utils,{is:{undefined:function(a){return void 0===a||"undefined"==typeof a},null:function(a){return"[object Null]"===Object.prototype.toString.call(a)},boolean:function(a){return"boolean"==typeof a},string:function(a){return"string"==typeof a||"[object String]"===Object.prototype.toString.call(a)},numeric:function(a){return!isNaN(parseFloat(a))&&isFinite(a)},integer:function(a){return a&&Number(a)===a&&a%1===0},float:function(a){return a&&Number(a)===a&&a%1!==0},date:function(a){var b=new Date(a);return"Invalid Date"!==b&&"Invalid Date"!==b.toString()&&!isNaN(b)},jQueryObject:function(a){return a instanceof b.jQuery},element:function(a){var b=this.jQueryObject(a)?a[0]:a;return"object"==typeof HTMLElement?b instanceof HTMLElement:b&&"object"==typeof b&&1===b.nodeType&&"string"==typeof b.nodeName},function:function(a){return"function"==typeof a},array:function(a){return"[object Array]"===Object.prototype.toString.call(a)},object:function(a){return"[object Object]"===Object.prototype.toString.call(a)}},now:Date.now||function(){return(new Date).getTime()},inArray:function(a,b){return a.indexOf(b)>-1},debounce:function(a,c,d){var e;return function(){var f=this,g=arguments,h=function(){e=null,d||a.apply(f,g)},i=d&&!e;b.clearTimeout(e),e=b.setTimeout(h,c),i&&a.apply(f,g)}},toCamelCase:function(a){return null===a||void 0===a?"":(a=String(a).trim(),a.replace(/(\-[a-z])/g,function(a){return a.toUpperCase().replace("-","")}))},uid:function(a){var b=f.utils.now();return a=a||"",a+"xxxxxxxxxxxx4xxxyxxxxxxxxxxxxxxx".replace(/[xy]/g,function(a){var c=(b+16*Math.random())%16|0;return b=Math.floor(b/16),("x"===a?c:3&c|8).toString(16)})},watch:function(a,b,c){Object.prototype.watch||Object.defineProperty(Object.prototype,"watch",{enumerable:!1,configurable:!0,writable:!1,value:function(a,b){var c=this[a],d=c,e=function(){return this.__clones[a]},f=function(e){return d!==e?(c=d,d=this.__clones[a]=e,b.call(this,a,c,e)):void 0};delete this[a]&&Object.defineProperty(this,a,{get:e,set:f,enumerable:!0,configurable:!0})}});a.hasOwnProperty("__clones")||(a.__clones={}),a.__clones[b]=a[b],a.watch(b,c)},unwatch:function(a,b){function c(b){a.unwatch(b),a.__clones&&a.__clones[b]&&delete a.__clones[b],Object.keys(a.__clones).length||delete a.__clones}Object.prototype.unwatch||Object.defineProperty(Object.prototype,"unwatch",{enumerable:!1,configurable:!0,writable:!1,value:function(a){var b=this[a];delete this[a],this[a]=b}});if(void 0===b)for(var d in a)c(d);else c(b)},getCSSValue:function(a,b){var c=a.css(b).replace(/px/gi,"");return f.utils.is.numeric(c)&&(c=parseFloat(c),f.utils.is.float(c)&&(c=parseFloat(c.toFixed(2)))),c},stringToMilliseconds:function(a){return f.utils.is.string(a)||(a=String(a)),parseInt(1e3*parseFloat(a.replace("s","")),10)},stringToSlug:function(a){return a=String(a)||"",a.replace(/[^a-zA-Z0-9]/g," ").replace(/\s+/g,"-").toLowerCase()},str2json:function(a,b){try{if(b)return JSON.parse(a.replace(/([\$\w]+)\s* :/g,function(a,b){return'"'+b+'" :'}).replace(/'([^']+)'/g,function(a,b){return'"'+b+'"'}));var c=Function;return new c("","var json = "+a+"; return JSON.parse(JSON.stringify(json));")()}catch(a){return!1}},options:function(a){if(f.utils.is.object(a))return a;var b=a?a.indexOf("{"):-1,c={};if(-1!==b)try{c=f.utils.str2json(a.substr(b))}catch(a){}return c}});var g=["box-sizing","transition","transform","perspective","calc","border-radius","background-clip"];return f.factory={template:function(a,b){for(var c,d,e,f,g=a.replace(/\n/g,"\\n").replace(/\{\{\{\s*(.+?)\s*\}\}\}/g,"{{!$1}}").split(/(\{\{\s*(.+?)\s*\}\})/g),h=0,i=[],j=0;h<g.length;){if(c=g[h],c.match(/\{\{\s*(.+?)\s*\}\}/))switch(h+=1,c=g[h],d=c[0],e=c.substring(c.match(/^(\^|\#|\!|\~|\:)/)?1:0),d){case"#":i.push("if("+e+") {"),j++;break;case"/":i.push("}"),j--;break;case"!":i.push("__ret.push("+e+");");break;default:i.push("__ret.push("+e+");")}else i.push("__ret.push('"+c.replace(/\'/g,"\\'")+"');");h+=1}return f=new Function("$data",["var __ret = [];","try {","with($data){",j?'__ret = ["Not all blocks are closed correctly."]':i.join(""),"};","}catch(e){__ret = [e.message];}",'return __ret.join("").replace(/\\n\\n/g, "\\n");',"function escape(html) { return String(html).replace(/&/g, '&').replace(/\"/g, '"').replace(/</g, '<').replace(/>/g, '>');}"].join("\n")),b?f(b):f},make:function(a,b){if(f[a]&&f[a].template){b=b||{};var c,d={};if(f[a].template.options){for(var e in b)f.utils.is.undefined(f[a].template.options[e])||("id"===e&&(b[e]=f.utils.stringToSlug(b[e])),d[e]=b[e]);d=f.extend(!0,{},f[a].template.options,d)}if(f[a].template.css&&!f.css[a]){f.css[a]=!0;var g=f.factory.css(f[a].template.css,a);f.$head.prepend(g)}if(f[a].template.html){var h=f.factory.template(f[a].template.html,d);c=f.$(h),f.$body.append(c)}else c=f.$doc;return f[a](c,b)}},vendorize:function(a,b){if(f.utils.is.numeric(b))return a+":"+b+";";a=String(a),b=String(b);for(var c=a+":"+b+";\n",d=0;d<g.length;d++){var e=g[d];if(c.indexOf(e)>-1){var h=f.browser.getPrefix(e);c=c.replace(new RegExp(e,"g"),h+e)}}return c},needsUnit:function(a){var b=["width","height","top","left","bottom","right","margin","padding","font-size"];return f.utils.inArray(b,a)},css:function(a,b){if(b=b||"module",!f.utils.is.object(a))throw new Error("_c.factory.css requires an object");var c=['<style data-css="'+b+'-css">',"</style>"];for(var d in a){var e=c.length,g=e-1,h=a[d];if(f.utils.is.object(h)){c.splice(g,0,d);var i="{";for(var j in h){var k=h[j];k&&f.utils.is.numeric(k)&&(k=f.factory.needsUnit(j)?k+="px":k),i+=f.factory.vendorize(j,k)}e=c.length,g=e-1,c.splice(g,0,i+"}")}}return c.join("")}},f.factory.make.css=function(a){if(f[a]&&f[a].template.css&&!f.css[a]){f.css[a]=!0;var b=f.factory.css(f[a].template.css,a);f.$head.prepend(b)}},function(){f.$doc.on("ready",function(){f.$body=f.$("body"),f.trigger(e.beforeready),f.bootComponents(),f.$win.on("load resizeend orientationchange",f.utils.debounce(function(){f.$doc.trigger(e.load)},100)),f.trigger(e.ready)})}(),f}),function(a,b){var c,d=a.Chicago||null;d&&(c=b(d,a,a.document)),"function"==typeof define&&define.amd&&define("chicago-browser",["chicago"],function(){return c||b(d,a,a.document)})}("undefined"!=typeof window?window:"undefined"!=typeof this.window?this.window:this,function(a,b,c){var d=function(a){var c=b.navigator.userAgent;return a.test(c)||a.test(c.toLowerCase())},e=function(a){var c=b.navigator.userAgent;return a.exec(c)||a.exec(c.toLowerCase())},f=function(a){var c=b.navigator.userAgent;return c.indexOf(a)>-1||c.toLowerCase().indexOf(a)>-1},g=function(a){var c=b.navigator.userAgent.match(a);return c?c[0]:null},h=function(b,c){var d={version:{full:c}},e=c.split(".");return e.length>0?(e=e.reverse(),d.version.major=parseFloat(e.pop()),e.length>0?(d.version.minor=parseFloat(e.pop()),e.length>0?(e=e.reverse(),d.version.patch=parseFloat(e.join("."))):d.version.patch=0):d.version.minor=0):d.version.major=0,a.$.extend(b,d)},i=function(b,c){if(!a.utils.is.object(c))return!1;a.utils.is.string(b)&&(b=b.toLowerCase());for(var d in c){var e=c[d];if(a.utils.is.string(e)&&(e=e.toLowerCase()),a.utils.is.object(e)){var f=i(b,e);if(f)return!0}if(e===b)return!0}return!1},j={device:{types:["TV","Tablet","Mobile","Desktop"]},screens:{mini:0,small:480,medium:768,large:960,xlarge:1220}};return a.browser={is:function(a){return i(a,this)},can:function(b){var d=function(){var b=c.createElement("div"),d="Khtml Ms ms O Moz Webkit".split(" ");return function(c){if(!a.utils.is.undefined(b.style[c]))return!0;c=c.replace(/^[a-z]/,function(a){return a.toUpperCase()});for(var e=0;e<d.length;e++){var f=d[e];if(!a.utils.is.undefined(b.style[f+c]))return!0}return!1}}();return d(b)},getPrefix:function(b){var d=c.createElement("div"),e="Khtml Ms ms O Moz Webkit".split(" ");if(b=a.utils.toCamelCase(b),!a.utils.is.undefined(d.style[b]))return"";for(var f=0;f<e.length;f++){var g=e[f];if(!a.utils.is.undefined(d.style[g+b]))return"-"+g.toLowerCase()+"-"}return""}},a.module("browserProxy",{defaults:{check:{borwser:!0,device:!0,language:!0,os:!0,plugins:!0,screen:!0,touch:!0},addHTMLClasses:!0},classes:[],boot:function(){return a.ready(function(){var b=a.$doc;b.data("chicago.data.browserProxy")||a.browserProxy(b)})},init:function(){a.$doc.on("ready.chicago.dom reloaded.chicago.dom",function(a){return function(b){a.setBrowserData()}}(this))},setBrowserData:function(){this.options.check.touch&&(a.browser.touch=this.getTouch()),this.options.check.device&&(a.browser.device=this.getDevice()),this.options.check.screen&&(a.browser.screen=this.getScreen()),this.options.check.os&&(a.browser.os=this.getOS()),this.options.check.borwser&&(a.browser.browser=this.getBrowser()),this.options.check.language&&(a.browser.language=this.getLanguage()),this.options.check.plugins&&(a.browser.plugins=this.getPlugins()),this.options.addHTMLClasses&&this.addHTMLClasses(),b.setTimeout(function(){a.$doc.trigger("updated.chicago.browser")})},getTouch:function(){var a="ontouchstart"in b&&b.navigator.userAgent.toLowerCase().match(/mobile|tablet/)||b.DocumentTouch&&c instanceof b.DocumentTouch||b.navigator.msPointerEnabled&&b.navigator.msMaxTouchPoints>0||b.navigator.pointerEnabled&&b.navigator.maxTouchPoints>0||!1;return!!a},getDevice:function(){var a={type:null,model:null};return d(/GoogleTV|SmartTV|SMART-TV|Internet.TV|NetCast|NetTV|AppleTV|Boxee|Kylo|Roku|dlnadoc|Roku|POV_TV|HbbTV|ce\-html/)?(a.type=j.device.types[0],a.model="SmartTV"):d(/Xbox|PLAYSTATION 3|Wii/)?(a.type=j.device.types[0],a.model="Game Console"):d(/ip(a|ro)d/)?(a.type=j.device.types[1],a.model="iPad"):d(/tablet/)&&!d(/rx-34/)||d(/folio/)?(a.type=j.device.types[1],a.model=String(e(/PlayBook/)||"")):d(/linux/)&&d(/Android/)&&!d(/Fennec|mobi|htc.magic|htcX06ht|nexus.one|sc-02b|fone.945/)?(a.type=j.device.types[1],a.model="Android"):d(/Kindle/)||d(/mac.os/)&&d(/silk/)?(a.type=j.device.types[1],a.model="Kindle"):d(/gt-p10|sc-01c|shw-m180s|sgh-t849|sch-i800|shw-m180l|sph-p100|sgh-i987|zt180|htc(.flyer|\_flyer)|sprint.atp51|viewpad7|pandigital(sprnova|nova)|ideos.s7|dell.streak.7|advent.vega|a101it|a70bht|mid7015|next2|nook/)||d(/mb511/)&&d(/rutem/)?(a.type=j.device.types[1],a.model="Android"):d(/bb10/)?(a.type=j.device.types[1],a.model="BlackBerry"):(a.model=e(/iPhone|iPod|Android|BlackBerry|Opera Mini|Opera Mobi|Skyfire|Maemo|Windows Phone|Palm|IEMobile|Symbian|SymbianOS|Fennec|J2ME/),null!==a.model?(a.type=j.device.types[2],a.model=g(String(a.model))):(a.model="",d(/Bolt|Fennec|Iris|Maemo|minimo|mobi|mowser|netfront|novarra|prism|rx-34|Skyfire|tear|xv6875|xv6975|google.wireless.transcoder/)?a.type=j.device.types[2]:d(/opera/)&&d(/windows.nt.5/)&&d(/htc|xda|mini|vario|samsung\-gt\-i8000|samsung\-sgh\-i9/)?a.type=j.device.types[2]:d(/windows.(nt|xp|me|9)/)&&!d(/phone/)||d(/win(9|.9|nt)/)||d(/\(windows 8\)/)?a.type=j.device.types[3]:d(/macintosh|powerpc/)&&!d(/silk/)?(a.type=j.device.types[3],a.model="Mac"):d(/linux/)&&d(/x11/)?a.type=j.device.types[3]:d(/solaris|sunos|bsd/)?a.type=j.device.types[3]:d(/cros/)?a.type=j.device.types[3]:d(/bot|crawler|spider|yahoo|ia_archiver|covario-ids|findlinks|dataparksearch|larbin|mediapartners-google|ng-search|snappy|teoma|jeeves|tineye/)&&!d(/mobile/)?(a.type=j.device.types[3],a.model="Crawler"):a.type=j.device.types[3])),"Desktop"!==a.type&&"TV"!==a.type&&(a.orientation="landscape",b.innerHeight>b.innerWidth&&(a.orientation="portrait")),a},getScreen:function(){for(var a=Object.keys(j.screens).reverse(),c=0;c<a.length;c++){var d=a[c],e=j.screens[d];if(b.innerWidth>e-1)return d}},getOS:function(){var b={name:null,addressRegisterSize:null};if(""!==a.browser.device.model&&("iPad"===a.browser.device.model||"iPhone"===a.browser.device.model||"iPod"===a.browser.device.model?(b.name="iOS",b=h(b,(d(/os\s([\d_]+)/)?RegExp.$1:"").replace(/_/g,"."))):"Android"===a.browser.device.model?(b.name="Android",b=h(b,d(/Android\s([\d\.]+)/)?RegExp.$1:"")):"BlackBerry"===a.browser.device.model?(b.name="BlackBerry",b=h(b,d(/version\/([^\s]+)/)?RegExp.$1:"")):"PlayBook"===a.browser.device.model&&(b.name="BlackBerry",b=h(b,d(/os ([^\s]+)/)?RegExp.$1.replace(";",""):""))),!b.name)for(var c=["iOS","Android","BlackBerry","Opera Mini","Windows","Mac OS","OS X","AIX","Amiga","AROS","Bada","BeOS","Brew","Chrome OS","COS","Danger Hiptop","DragonFly BSD","Fire OS","Firefox OS","FreeBSD","GNU OS","Haiku OS","HP-UX","Inferno OS","IRIX","Joli OS","JVM (Java)","JVM","KIN OS","Linux","LiveArea","Maemo","MeeGo","MINIX 3","MorphOS","MSN TV (WebTV)","NetBSD","Nintendo 3DS","Nintendo DS","OpenBSD","OpenVM","Orbis OS","OS/2","OS/2 Warp","Palm OS","PClinuxOS","Plan 9","QNX x86pc","RISK OS","Sailfish","SCO OpenServer","SkyOS","Solaris","Syllable","Symbian OS","Tizen","Ubuntu Touch","webOS","Wii OS","Wii U OS","Xbox","XrossMediaBar (XMB)","Yun OS","unknown"],e=0;e<c.length;e++){var g=c[e];if(f(g)){b.name=g;break}}return b.name||""!==a.browser.device.model&&("ipad"===a.browser.device.model||"iphone"===a.browser.device.model||"ipod"===a.browser.device.model?(b.name="ios",h(b,(d(/os\s([\d_]+)/)?RegExp.$1:"").replace(/_/g,"."))):"Android"===a.browser.device.model?(b.name="Android",h(b,d(/Android\s([\d\.]+)/)?RegExp.$1:"")):"BlackBerry"===a.browser.device.model?(b.name="BlackBerry",h(b,d(/version\/([^\s]+)/)?RegExp.$1:"")):"PlayBook"===a.browser.device.model&&(b.name="BlackBerry",h(b,d(/os ([^\s]+)/)?RegExp.$1.replace(";",""):""))),b.name||(f("win")||f("16bit")?(b.name="windows",f("windows nt 6.3")?b=h(b,"8.1"):f("windows nt 6.2")||d(/\(windows 8\)/)?b=h(b,"8"):f("windows nt 6.1")?b=h(b,"7"):f("windows nt 6.0")?b=h(b,"vista"):f("windows nt 5.2")||f("windows nt 5.1")||f("windows xp")?b=h(b,"xp"):f("windows nt 5.0")||f("windows 2000")?b=h(b,"2k"):f("winnt")||f("windows nt")?b=h(b,"nt"):f("win98")||f("windows 98")?b=h(b,"98"):(f("win95")||f("windows 95"))&&(b=h(b,"95"))):f("mac")||f("darwin")?(b.name="mac",f("68k")||f("68000")?b=h(b,"68k"):f("ppc")||f("powerpc")?b=h(b,"ppc"):f("os x")&&(b=h(b,(d(/os\sx\s([\d_]+)/)?RegExp.$1:"os x").replace(/_/g,".")))):f("webtv")?b.name="webtv":f("x11")||f("inux")?b.name="linux":f("sunos")?b.name="sun":f("irix")?b.name="irix":f("freebsd")?b.name="freebsd":f("bsd")&&(b.name="bsd")),d(/\sx64|\sx86|\swin64|\swow64|\samd64/)?b.addressRegisterSize="64bit":b.addressRegisterSize="32bit",b},getBrowser:function(){var a={name:null,engine:null};return d(/opera|webtv/)||!d(/msie\s([\d\w\.]+)/)&&!f("trident")?f("firefox")?(a.engine="gecko",a.name="firefox",a=h(a,d(/firefox\/([\d\w\.]+)/)?RegExp.$1:"")):f("gecko/")?a.engine="gecko":f("opera")||f("opr")?(a.name="opera",a.engine="presto",a=h(a,d(/version\/([\d\.]+)/)?RegExp.$1:d(/opera(\s|\/)([\d\.]+)/)?RegExp.$2:"")):f("konqueror")?a.name="konqueror":f("chrome")?(a.engine="webkit",a.name="chrome",a=h(a,d(/chrome\/([\d\.]+)/)?RegExp.$1:"")):f("iron")?(a.engine="webkit",a.name="iron"):f("crios")?(a.name="chrome",a.engine="webkit",a=h(a,d(/crios\/([\d\.]+)/)?RegExp.$1:"")):f("applewebkit/")?(a.name="safari",a.engine="webkit",a=h(a,d(/version\/([\d\.]+)/)?RegExp.$1:"")):f("mozilla/")&&(a.engine="gecko"):(a.engine="trident",a.name="ie",a=!b.addEventListener&&c.documentMode&&7===c.documentMode?h(a,"8.compat"):d(/trident.*rv[ :](\d+)\./)?h(a,RegExp.$1):h(a,d(/trident\/4\.0/)?"8":RegExp.$1)),a},getLanguage:function(){return{direction:a.$html.attr("dir")||b.getComputedStyle(c.body||c.documentElement).direction||"ltr",code:b.navigator.userLanguage||b.navigator.language}},getPlugins:function(){var c=[];if(!a.utils.is.undefined(b.navigator.plugins))for(var d=0;d<b.navigator.plugins.length;d++)c.push(b.navigator.plugins[d]);return c},addHTMLClasses:function(){var b=[];a.browser.screen&&b.push("screen-"+a.browser.screen),a.utils.is.undefined(a.browser.touch)||b.push(a.browser.touch?"touch":"notouch"),b.diff(this.classes).length&&(a.$html.removeClass(this.classes.join(" ")),a.$html.addClass(b.join(" ")),this.classes=b)}})}),function(a,b){"undefined"==typeof window&&a.window&&(a=a.window);var c;a.Chicago&&(c=b(a.Chicago,a,a.document)),"function"==typeof define&&define.amd&&define("chicago-events",["chicago"],function(){return c||b(a.Chicago,a,a.document)})}("undefined"!=typeof window?window:this,function(a,b,c){a.events={scrollend:{latency:150,setup:function(c){c=a.$.extend({latency:a.$.event.special.scrollend.latency},c);var d=a.utils.uid("scrollend"),e=null,f=function(d){e&&b.clearTimeout(e),e=b.setTimeout(function(){e=null;var b=a.$(d.target);return b.trigger("scrollend",[{top:b.scrollTop(),left:b.scrollLeft()}])},c.latency)};return a.$(this).data("chicago.event.scrolltop.uid",d),a.$(this).on("scroll",a.utils.debounce(f,100)).data(d,f)},teardown:function(){var b=a.$(this).data("chicago.event.scrolltop.uid");return a.$(this).off("scroll",a.$(this).data(b)),a.$(this).removeData(b),a.$(this).removeData("chicago.event.scrolltop.uid")}},scrollstart:{setup:function(b){var c=a.utils.uid("scrollstart"),d=function(b){b.type="scrollstart.chicago.dom",a.$(b.target).trigger("scrollstart",[{top:a.$(b.target).scrollTop(),left:a.$(b.target).scrollLeft()}])};return a.$(this).on("scrollstart",function(){return a.$(this).off("scroll",d)}),a.$(this).on("scrollend",function(){return a.$(this).on("scroll",d).data(c,d)}),a.$(this).data("chicago.event.scrollstart.uid",c),a.$(this).on("scroll",d).data(c,d)},teardown:function(){var b=a.$(this).data("chicago.event.scrollstart.uid");return a.$(this).off("scroll",a.$(this).data(b)),a.$(this).removeData(b),a.$(this).removeData("chicago.event.scrollstart.uid")}},resizeend:{latency:250,setup:function(c){var d,e=a.utils.uid("resizeend"),f=a.$.extend({latency:a.$.event.special.resizeend.latency},c),g=function(c){d&&b.clearTimeout(d),d=b.setTimeout(function(){d=null;var b=a.$(c.target);return b.trigger("resizeend",[{width:b.width(),height:b.height()}])},f.latency)};return a.$(this).data("chicago.event.resizeend.uid",e),a.$(this).on("resizeend",function(){return a.$(this).off("resize",a.utils.debounce(g,100))}),a.$(this).on("resizestart",function(){return a.$(this).on("resize",a.utils.debounce(g,100)).data(e,g)})},teardown:function(){var b=a.$(this).data("chicago.event.resizeend.uid");return a.$(this).off("resize",a.$(this).data(b)),a.$(this).removeData(b),a.$(this).removeData("chicago.event.resizeend.uid")}},resizestart:{setup:function(){var b=a.$(this),c=a.utils.uid("resizestart"),d=function(b){var c=a.$(b.target);return c.trigger("resizestart",[{width:c.width(),height:c.height()}])};return b.data("chicago.event.resizestart.uid",c),b.on("resizestart",function(b){return a.$(this).off("resize",d)}),b.on("resizeend",function(b){return a.$(this).on("resize",d).data(c,d)}),b.on("resize",d).data(c,d)},teardown:function(){var b=a.$(this).data("chicago.event.resizestart.uid");return a.$(this).off("resize",a.$(this).data(b)),a.$(this).removeData(b),a.$(this).removeData("chicago.event.resizestart.uid")}},transition:{defaults:{start:function(a){},progress:function(a,b,c){},complete:function(a){}},setup:function(c,d,e){function f(){var b=j.data(k.info);if(b)return b;b={};for(var c=j.css("transition").split(","),d=0;d<c.length;d++){var e=c[d].trim().split(" "),f=e[0];b.hasOwnProperty(f)||(b[f]={duration:a.utils.stringToMilliseconds(e[1]),function:e[2],delay:a.utils.stringToMilliseconds(e[3]),value:a.utils.getCSSValue(j,f)})}return j.data(k.info,b),b}function g(b){if(b)m.initalValues[b]=a.utils.getCSSValue(j,b);else for(var c in f())m.initalValues[c]=a.utils.getCSSValue(j,c)}function h(a,b,d){p=0,o.end[a]={time:n()},g(a),delete o.begin[a],c.complete.call(j[0],a,b,d),j.trigger("transition")}var i=a.utils.uid("transition"),j=a.$(this),k={uid:"chicago.event.transition.uid",base:"chicago.event."+i,event:"chicago.event."+i+".event",info:"chicago.event."+i+".info"},l=15,m={initalValues:{}},n=a.win.performace?a.win.performace.now:a.utils.now;if(c=a.extend({},a.$.event.special.transition.defaults,c),j.data(k.uid,i),!j.data(k.event)){var o={begin:{},end:{}},p=0;g(),j.on(a.support.transition.end,function(b){var c=b.originalEvent.propertyName,d=a.utils.getCSSValue(j,c),e=f(),g=e[c].duration;h(c,d,g)}),m.interval=b.setInterval(function(){info=f();for(var b in info){var d=m.initalValues[b],e=a.utils.getCSSValue(j,b),g=info[b];p&&o.begin[b]&&(p=n()-o.begin[b].time),o.begin[b]||e===d?o.begin[b]&&!o.end[b]&&p<g.duration+1&&c.progress.call(j[0],b,e,p):(o.begin[b]={time:n()},o.end[b]&&delete o.end[b],c.start.call(j[0],b,d))}},l),j.data(k.event,m)}return!0},teardown:function(){var c=a.$(this).data("chicago.event.transition.uid"),d={uid:"chicago.event.transition.uid",base:"chicago.event."+c,event:"chicago.event."+c+".event",info:"chicago.event."+c+".info"};for(var e in d){var f=d[e],g=a.$(this).data(f);"event"===e&&g&&g.interval&&b.clearInterval(g.interval),g&&a.$(this).removeData(f)}}},animation:{defaults:{start:function(a){},iteration:function(a,b){},complete:function(a,b){}},setup:function(b,c,d){function e(a){var c=a.originalEvent.animationName,d=g.data(h.iterations);d++,g.data(h.iterations,d),b.iteration.call(g,c,d)}var f=a.utils.uid("animation"),g=a.$(this),h={uid:"chicago.event.animation.uid",base:"chicago.event."+f,iterations:"chicago.event."+f+".iterations",event:"chicago.event."+f+".event"};return b=a.$.extend({},a.$.event.special.animation.defaults,b),g.data(h.uid,f),g.data(h.event)||g.data(h.event,{start:g.on(a.support.animation.start,function(a){b.start.call(g,a.originalEvent.animationName),g.data(h.iterations,0)}),iteration:g.on(a.support.animation.iteration,e),end:g.on(a.support.animation.end,function(c){e(c);var d=c.originalEvent.animationName,f=a.utils.stringToMilliseconds(c.originalEvent.elapsedTime);b.complete.call(g,d,f),g.trigger("animation")})}),!0},teardown:function(){var b=a.$(this).data("chicago.event.animation.uid"),c={uid:"chicago.event.animation.uid",base:"chicago.event."+b,iterations:"chicago.event."+b+".iterations",event:"chicago.event."+b+".event"};for(var d in c){var e=c[d],f=a.$(this).data(e);f&&a.$(this).removeData(e)}}},swipe:{setup:function(b){function c(a,b,c,d){return Math.abs(a-b)>=Math.abs(c-d)?a-b>0?"left":"right":c-d>0?"up":"down"}function d(a,b){a.split(" ").forEach(function(a){i.off(a,b)})}function e(a){k.down={x:a.screenX,y:a.screenY},i.on(j.move,f)}function f(a){d(j.up,g),i.one(j.up,g)}function g(a){d(j.move,f),d(j.up,g),k.up={x:a.screenX,y:a.screenY};var b=c(k.down.x,k.up.x,k.down.y,k.up.y);i.trigger("swipe",[b]),i.trigger("swipe"+b)}var h=a.utils.uid("scrollstart"),i=a.$(this),j={down:"touchstart MSPointerDown pointerdown mousedown",move:"touchmove MSPointerMove pointermove mousemove",up:"touchend MSPointerUp pointerup mouseup mouseleave"},k={down:{x:0,y:0},up:{x:0,y:0}};i.on(j.down,e),a.$(this).data("chicago.event.swipe.uid",h).data(h,e)},teardown:function(){var b=a.$(this).data("chicago.event.scrollstart.uid");return a.$(this).removeData(b).removeData("chicago.event.scrollstart.uid")}}},function(){for(var b in a.events){var c=a.events[b];if(a.utils.is.object(c)){a.$.event.special[b]=c;var d=function(c,d){return this.each(function(){return a.$(this).on(b,c,d)})};a.$.fn[b]=d}}}()});