\" ).text( message ).appendTo( this.liveRegion );\r\n\t}\r\n});\r\n\r\nvar autocomplete = $.ui.autocomplete;\r\n\r\n\r\n\r\n}));\r\n// page init\r\njQuery(function () {\r\n\tinitCalendar();\r\n});\r\n\r\n// calendar init\r\nfunction initCalendar() {\r\n jQuery('.events-page .result, .events-page .top-banner').createCalendar();\r\n}\r\n\r\n/*\r\n * jQuery Calendar plugin\r\n */\r\n; (function ($) {\r\n\t$.fn.createCalendar = function (o) {\r\n\t\t// default options\r\n\t\tvar options = $.extend({\r\n\t\t\tholder: '.post-prev',\r\n\t\t\tdataElem: '.calendar-holder',\r\n\t\t\tcalendarClass: 'calendar',\r\n\t\t\tappendAfter: '.calendar-holder',\r\n\t\t\teventMonthClass: 'event-month',\r\n\t\t\tfirstDayClass: 'first-day',\r\n\t\t\tselectDayClass: 'select-day',\r\n\t\t\tlastDayClass: 'last-day',\r\n\t\t\tdaysInWeek: 7,\r\n\t\t\tweeks: 4,\r\n\t\t\tmaxDays: 28\r\n\t\t}, o);\r\n\r\n\t\tfunction calendarMaker(from, to) {\r\n\t\t\tvar from = new Date(from),\r\n\t\t\t\tto = new Date(to);\r\n\r\n\t\t\tvar daysBetween = function (date1, date2) {\r\n\t\t\t\t//Get 1 day in milliseconds\r\n\t\t\t\tvar one_day = 1000 * 60 * 60 * 24;\r\n\r\n\t\t\t\t// Convert both dates to milliseconds\r\n\t\t\t\tvar date1_ms = date1.getTime();\r\n\t\t\t\tvar date2_ms = date2.getTime();\r\n\r\n\t\t\t\t// Calculate the difference in milliseconds\r\n\t\t\t\tvar difference_ms = date2_ms - date1_ms;\r\n\r\n\t\t\t\t// Convert back to days and return\r\n\t\t\t\treturn Math.round(difference_ms / one_day);\r\n\t\t\t};\r\n\r\n\t\t\tvar numberOfDays = function (year, month) {\r\n\t\t\t\tvar d = new Date(year, month, 0);\r\n\r\n\t\t\t\treturn d.getDate();\r\n\t\t\t}\r\n\r\n\t\t\tvar generateMonth = function (start) {\r\n\t\t\t\t// todo fix prev month\r\n\t\t\t\tvar monthDates = numberOfDays(from.getFullYear(), from.getMonth() + 1);\r\n\t\t\t\tvar prevMonthDates = numberOfDays(from.getFullYear(), from.getMonth());\r\n\r\n\t\t\t\tvar arr = [];\r\n\r\n\t\t\t\tfor (var i = 0; i < options.maxDays; i++) {\r\n\t\t\t\t\tvar date = start + i;\r\n\r\n\t\t\t\t\tif (date <= monthDates) {\r\n\r\n\t\t\t\t\t\tif (date <= 0) {\r\n\t\t\t\t\t\t\tarr.push(date + prevMonthDates);\r\n\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\tarr.push(date);\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\tarr.push(date - monthDates);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\treturn arr;\r\n\t\t\t}\r\n\r\n\t\t\tvar isValideDates = function (from, to) {\r\n\t\t\t\treturn from && to && from <= to;\r\n\t\t\t}\r\n\r\n\t\t\tvar splitArray = function (arr, n) {\r\n\t\t\t\tvar len = arr.length, out = [], i = 0;\r\n\r\n\t\t\t\twhile (i < len) {\r\n\t\t\t\t\tvar size = Math.ceil((len - i) / n--);\r\n\t\t\t\t\tout.push(arr.slice(i, i += size));\r\n\t\t\t\t}\r\n\r\n\t\t\t\treturn out;\r\n\t\t\t}\r\n\r\n\t\t\tvar generateHtml = function (arr, mainDate, duration) {\r\n\t\t\t\tvar state = false,\r\n\t\t\t\t\tcalendar = $(\"
\", {\r\n\t\t\t\t\t\t\"class\": options.calendarClass\r\n\t\t\t\t\t});\r\n\r\n\t\t\t\t$.each(arr, function () {\r\n\t\t\t\t\tvar calList = $('
');\r\n\r\n\t\t\t\t\t$(this).each(function () {\r\n\t\t\t\t\t\tvar li = $('
').appendTo(calList);\r\n\t\t\t\t\t\t$('
').text(this).appendTo(li);\r\n\r\n\t\t\t\t\t\tif (duration === 0 && state) {\r\n\t\t\t\t\t\t\tduration--;\r\n\t\t\t\t\t\t\tstate = false;\r\n\t\t\t\t\t\t\tli.addClass(options.lastDayClass);\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\tif (state && duration > 0) {\r\n\t\t\t\t\t\t\tli.addClass(options.selectDayClass);\r\n\t\t\t\t\t\t\tduration--;\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\tif (this == mainDate) {\r\n\t\t\t\t\t\t\tli.addClass(options.firstDayClass);\r\n\t\t\t\t\t\t\tstate = true;\r\n\r\n\t\t\t\t\t\t\tif (duration === 0) {\r\n\t\t\t\t\t\t\t\tli.addClass(options.lastDayClass);\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\tduration--;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t});\r\n\r\n\t\t\t\t\tcalList.appendTo(calendar);\r\n\t\t\t\t});\r\n\r\n\t\t\t\treturn calendar;\r\n\t\t\t}\r\n\r\n\t\t\tvar initialize = function () {\r\n\t\t\t\t// check from and to dates and vidate them\r\n\t\t\t\tif (isValideDates(from, to)) {\r\n\t\t\t\t\tvar startDate = from.getDate() - from.getDay() + 1,\r\n\t\t\t\t\t\tduration = daysBetween(from, to);\r\n\r\n\t\t\t\t\t// if duration more then max weeks - 1 weeks\r\n\t\t\t\t\tif (duration <= (options.maxDays - options.daysInWeek)) {\r\n\t\t\t\t\t\tstartDate -= options.daysInWeek;\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tvar month = generateMonth(startDate);\r\n\t\t\t\t\tvar result = splitArray(month, options.weeks);\r\n\r\n\t\t\t\t\treturn generateHtml(result, from.getDate(), duration);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\treturn initialize();\r\n\t\t}\r\n\r\n\t\treturn this.each(function () {\r\n\t\t\tvar elms = $(this).find(options.holder);\r\n\r\n\t\t\telms.each(function () {\r\n\t\t\t\tvar dataElem = $(this).find(options.dataElem),\r\n\t\t\t\t\tdata = dataElem.data();\r\n\t\t\t\tdataElem.after(calendarMaker(data.startDate, data.endDate));\r\n\t\t\t});\r\n\t\t});\r\n\t}\r\n}(jQuery));\r\n/*\r\n * Popups plugin\r\n */\r\n;(function($) {\r\n function ContentPopup(opt) {\r\n this.options = $.extend({\r\n holder: null,\r\n popup: '.popup',\r\n btnOpen: '.open',\r\n btnClose: '.close',\r\n openClass: 'popup-active',\r\n clickEvent: 'click',\r\n mode: 'click',\r\n hideOnClickLink: true,\r\n hideOnClickOutside: true,\r\n delay: 50\r\n }, opt);\r\n if(this.options.holder) {\r\n this.holder = $(this.options.holder);\r\n this.init();\r\n }\r\n }\r\n ContentPopup.prototype = {\r\n init: function() {\r\n this.findElements();\r\n this.attachEvents();\r\n },\r\n findElements: function() {\r\n this.popup = this.holder.find(this.options.popup);\r\n this.btnOpen = this.holder.find(this.options.btnOpen);\r\n this.btnClose = this.holder.find(this.options.btnClose);\r\n },\r\n attachEvents: function() {\r\n // handle popup openers\r\n var self = this;\r\n this.clickMode = isTouchDevice || (self.options.mode === self.options.clickEvent);\r\n\r\n if(this.clickMode) {\r\n // handle click mode\r\n this.btnOpen.bind(self.options.clickEvent, function(e) {\r\n if(self.holder.hasClass(self.options.openClass)) {\r\n if(self.options.hideOnClickLink) {\r\n self.hidePopup();\r\n }\r\n } else {\r\n self.showPopup();\r\n }\r\n e.preventDefault();\r\n });\r\n\r\n // prepare outside click handler\r\n this.outsideClickHandler = this.bind(this.outsideClickHandler, this);\r\n } else {\r\n // handle hover mode\r\n var timer,\r\n delayedFunc = function(func) {\r\n clearTimeout(timer);\r\n timer = setTimeout(function() {\r\n func.call(self);\r\n }, self.options.delay);\r\n };\r\n this.btnOpen.bind('mouseover', function() {\r\n delayedFunc(self.showPopup);\r\n }).bind('mouseout', function() {\r\n delayedFunc(self.hidePopup);\r\n });\r\n this.popup.bind('mouseover', function() {\r\n delayedFunc(self.showPopup);\r\n }).bind('mouseout', function() {\r\n delayedFunc(self.hidePopup);\r\n });\r\n }\r\n\r\n // handle close buttons\r\n this.btnClose.bind(self.options.clickEvent, function(e) {\r\n self.hidePopup();\r\n e.preventDefault();\r\n });\r\n },\r\n outsideClickHandler: function(e) {\r\n // hide popup if clicked outside\r\n var currentNode = (e.changedTouches ? e.changedTouches[0] : e).target;\r\n if(!$(currentNode).parents().filter(this.holder).length) {\r\n this.hidePopup();\r\n }\r\n },\r\n showPopup: function() {\r\n // reveal popup\r\n this.holder.addClass(this.options.openClass);\r\n this.popup.css({display:'block'});\r\n\r\n // outside click handler\r\n if(this.clickMode && this.options.hideOnClickOutside && !this.outsideHandlerActive) {\r\n this.outsideHandlerActive = true;\r\n $(document).bind('click touchstart', this.outsideClickHandler);\r\n }\r\n },\r\n hidePopup: function() {\r\n // hide popup\r\n this.holder.removeClass(this.options.openClass);\r\n this.popup.css({display:'none'});\r\n\r\n // outside click handler\r\n if(this.clickMode && this.options.hideOnClickOutside && this.outsideHandlerActive) {\r\n this.outsideHandlerActive = false;\r\n $(document).unbind('click touchstart', this.outsideClickHandler);\r\n }\r\n },\r\n bind: function(f, scope, forceArgs){\r\n return function() {return f.apply(scope, forceArgs ? [forceArgs] : arguments);};\r\n }\r\n };\r\n\r\n // detect touch devices\r\n var isTouchDevice = /MSIE 10.*Touch/.test(navigator.userAgent) || ('ontouchstart' in window) || window.DocumentTouch && document instanceof DocumentTouch;\r\n\r\n // jQuery plugin interface\r\n $.fn.contentPopup = function(opt) {\r\n return this.each(function() {\r\n new ContentPopup($.extend(opt, {holder: this}));\r\n });\r\n };\r\n}(jQuery));\r\n\r\n'use strict';\r\n\r\n(function(factory) {\r\n\tif(typeof exports === 'object') {\r\n\t\t// CommonJS (Node)\r\n\t\tvar jQuery = require('jquery');\r\n\t\tmodule.exports = factory(jQuery || $);\r\n\t} else if(typeof define === 'function' && define.amd) {\r\n\t\t// AMD (RequireJS)\r\n\t\tdefine(['jquery'], factory);\r\n\t} else {\r\n\t\t// globals\r\n\t\tfactory(jQuery || $);\r\n\t}\r\n}(function($) {\r\n\r\n\tvar SECONDS_PER_DAY = 86400,\r\n\t\tSECONDS_PER_HOUR = 3600;\r\n\r\n\tvar defaults = {\r\n\t\tcallback: null, // callback function for exec when timer out\r\n\t\tcaptionSize: 0, // font-size by pixels for captions, if 0 then calculate automaticaly\r\n\t\tcountdown: true, // is countdown or real clock\r\n\t\tcountdownAlertLimit: 10, // limit in seconds when display red background\r\n\t\tdisplayCaptions: false, // display captions under digit groups\r\n\t\tdisplayDays: 0, // display day timer, count of days digits\r\n\t\tdisplayHours: true, // display hours\r\n\t\tfontFamily: 'Verdana, sans-serif',\r\n\t\tfontSize: 70, // font-size of a digit by pixels (0 - use CSS instead)\r\n\t\tlang: 'en', // language of caption\r\n\t\tseconds: 0, // timer's countdown value in seconds\r\n\t\tstart: true, // true to start timer immediately\r\n\t\ttheme: 'white', // 'white' or 'black' theme fo timer's view\r\n\t\t\r\n\t\twidth: 25, // width of a digit area\r\n\t\theight: 30, // height of a digit area\r\n\t\tgap: 11, // gap size between numbers\r\n\t\tvals: [0, 0, 0, 0, 0, 0, 0, 0, 0], // private, current value of each digit\r\n\t\tlimits: [9, 9, 9, 2, 9, 5, 9, 5, 9],// private, max value of each digit\r\n\t\tiSec: 8, // private, index of second digit\r\n\t\tiHour: 4, // private, index of hour digit\r\n\t\ttickTimeout: 1000, // timeout betweet each timer tick in miliseconds\r\n\t\tintervalId: null // private\r\n\t};\r\n\r\n\tvar methods = {\r\n\t\tstart: function(sec) {\r\n\t\t\tvar me = this,\r\n\t\t\t\tintervalId;\r\n\r\n\t\t\tif(sec) {\r\n\t\t\t\tinit.call(this, sec);\r\n\t\t\t\tintervalId = setTimeout(function() { tick.call(me); }, 1000);\r\n\r\n\t\t\t\t// save start time\r\n\t\t\t\tthis.data('ttStartTime', $.now());\r\n\t\t\t\tthis.data('intervalId', intervalId);\r\n\t\t\t}\r\n\t\t},\r\n\r\n\t\tstop: function() {\r\n\t\t\tvar data = this.data();\r\n\r\n\t\t\tif(data.intervalId) {\r\n\t\t\t\tclearTimeout(data.intervalId);\r\n\t\t\t\tthis.data('intervalId', null);\r\n\t\t\t}\r\n\t\t\treturn data;\r\n\t\t},\r\n\r\n\t\tformat: function(lang, vals, holder) {\r\n var $caption = holder.find('figcaption');\r\n var dIndexes = this.digitIndexes;\r\n\t\t switch (lang) {\r\n\t\t case 'en':\r\n\t\t if (vals[dIndexes.daysTenth] == 0 && vals[dIndexes.daysOnes] == 1) {\r\n\t\t $caption.eq(0).html(dictionary[lang].days[0]);\r\n\t\t } else {\r\n\t\t $caption.eq(0).html(dictionary[lang].days[1]);\r\n\t\t }\r\n\r\n\t\t if (vals[dIndexes.hoursTenth] == 0 && vals[dIndexes.hoursOnes] == 1) {\r\n\t\t $caption.eq(1).html(dictionary[lang].hours[0]);\r\n\t\t } else {\r\n\t\t $caption.eq(1).html(dictionary[lang].hours[1]);\r\n\t\t }\r\n\r\n\t\t if (vals[dIndexes.minutesTenth] == 0 && vals[dIndexes.minutesOnes] == 1) {\r\n\t\t $caption.eq(2).html(dictionary[lang].min[0]);\r\n\t\t } else {\r\n\t\t $caption.eq(2).html(dictionary[lang].min[1]);\r\n\t\t }\r\n\r\n if (vals[dIndexes.secondsTenth] == 0 && vals[dIndexes.secondsOnes] == 2) {\r\n\t\t $caption.eq(3).html(dictionary[lang].sec[0]);\r\n\t\t } else {\r\n\t\t $caption.eq(3).html(dictionary[lang].sec[1]);\r\n\t\t }\r\n\r\n\t\t break;\r\n\r\n\t\t case 'ru':\r\n\t\t case 'uk':\r\n\t\t if (vals[dIndexes.daysOnes] > 4 || vals[dIndexes.daysTenth] == 1 || vals[dIndexes.daysOnes] <= 0) {\r\n\t\t $caption.eq(0).html(dictionary[lang].days[1]);\r\n\t\t } else {\r\n\t\t if (vals[dIndexes.daysTenth] != 1) {\r\n\t\t if (vals[dIndexes.daysOnes] >= 2) {\r\n\t\t $caption.eq(0).html(dictionary[lang].days[2]);\r\n\t\t } else {\r\n\t\t $caption.eq(0).html(dictionary[lang].days[0]);\r\n\t\t }\r\n\t\t }\r\n\t\t }\r\n\r\n\t\t if (vals[dIndexes.hoursOnes] > 4 || vals[dIndexes.hoursTenth] == 1 || vals[dIndexes.hoursOnes] <= 0) {\r\n\t\t $caption.eq(1).html(dictionary[lang].hours[1]);\r\n\t\t } else {\r\n\t\t if (vals[dIndexes.hoursTenth] != 1) {\r\n\t\t if (vals[dIndexes.hoursOnes] >= 2) {\r\n\t\t $caption.eq(1).html(dictionary[lang].hours[2]);\r\n\t\t } else {\r\n\t\t $caption.eq(1).html(dictionary[lang].hours[0]);\r\n\t\t }\r\n\t\t }\r\n\t\t }\r\n\r\n\t\t if (vals[dIndexes.minutesOnes] > 4 || vals[dIndexes.minutesTenth] == 1 || vals[dIndexes.minutesOnes] <= 0) {\r\n\t\t $caption.eq(2).html(dictionary[lang].min[1]);\r\n\t\t } else {\r\n\t\t if (vals[dIndexes.minutesTenth] != 1) {\r\n\t\t if (vals[dIndexes.minutesOnes] >= 2) {\r\n\t\t $caption.eq(2).html(dictionary[lang].min[2]);\r\n\t\t } else {\r\n\t\t $caption.eq(2).html(dictionary[lang].min[0]);\r\n\t\t }\r\n\t\t }\r\n\t\t }\r\n\r\n\t\t if (vals[dIndexes.secondsOnes] > 5 || vals[dIndexes.secondsTenth] == 1 || vals[dIndexes.secondsOnes] <= 1) {\r\n\t\t $caption.eq(3).html(dictionary[lang].sec[1]);\r\n\t\t } else {\r\n\t\t if (vals[dIndexes.secondsTenth] != 1) {\r\n\t\t if (vals[dIndexes.secondsOnes] > 2) {\r\n\t\t $caption.eq(3).html(dictionary[lang].sec[2]);\r\n\t\t } else {\r\n\t\t $caption.eq(3).html(dictionary[lang].sec[0]);\r\n\t\t }\r\n\t\t }\r\n\t\t }\r\n\r\n\t\t break;\r\n\t\t }\r\n\t\t},\r\n\t\t\r\n\t\treset: function(sec) {\r\n\t\t\tvar data = methods.stop.call(this);\r\n\r\n\t\t\tthis.find('ul').parent().removeClass('timeTo-alert');\r\n\r\n\t\t\tif(typeof sec === 'undefined') {\r\n\t\t\t\tsec = data.seconds;\r\n\t\t\t}\r\n\t\t\tinit.call(this, sec, true);\r\n },\r\n\r\n\t\tdigitIndexes: {\r\n\t\t daysTenth: 1,\r\n\t\t daysOnes: 2,\r\n\t\t hoursTenth: 3,\r\n\t\t hoursOnes: 4,\r\n\t\t minutesTenth: 5,\r\n\t\t minutesOnes: 6,\r\n\t\t secondsTenth: 7,\r\n\t\t secondsOnes: 8\r\n\t\t}\r\n\t};\r\n\r\n\tvar dictionary = {\r\n\t\ten:{days:['day', 'days'], hours:['hour', 'hours'], min:['minute', 'minutes'], sec:['second', 'seconds']},\r\n\t\tru:{days:['день', 'дней', 'дня'], hours:['час', 'часов', 'часа'], min:['минута', 'минут', 'минуты'], sec:['секунда', 'секунд', 'секунды']},\r\n\t\tuk:{days:['день', 'днів', 'днi'], hours:['година', 'годин', 'години'], min:['хвилина', 'хвилин', 'хвилини'], sec:['секунда', 'секунд', 'секунди']}\r\n\t};\r\n\t\r\n\tif(typeof $.support.transition === 'undefined') {\r\n\t\t$.support.transition = (function() {\r\n\t\t\tvar thisBody = document.body || document.documentElement,\r\n\t\t\t\tthisStyle = thisBody.style,\r\n\t\t\t\tsupport = thisStyle.transition !== undefined || thisStyle.WebkitTransition !== undefined || thisStyle.MozTransition !== undefined || thisStyle.MsTransition !== undefined || thisStyle.OTransition !== undefined;\r\n\r\n\t\t\treturn support;\r\n\t\t})();\r\n\t}\r\n\r\n\r\n\t$.fn.timeTo = function() {\r\n\t\tvar method, options = {};\r\n var i, arg, num;\r\n\t var now = new Date();\r\n var time, days, nowUtc = new Date(now.getUTCFullYear(),\r\n now.getUTCMonth(),\r\n now.getUTCDate(),\r\n now.getUTCHours(),\r\n now.getUTCMinutes(),\r\n now.getUTCSeconds());\r\n\t\tvar tt, sec, m, t;\r\n\r\n\t\tfor(i = 0; arg = arguments[i]; ++i) {\r\n\t\t\tif(i == 0 && typeof arg === 'string') {\r\n\t\t\t\tmethod = arg;\r\n\t\t\t}\r\n\t\t\telse {\r\n\t\t\t\tif(typeof arg === 'object') {\r\n\t\t\t\t\t// arg is a Date object\r\n\t\t\t\t\tif(typeof arg.getTime === 'function') {\r\n\t\t\t\t\t\toptions.timeTo = arg;\r\n\t\t\t\t\t}\r\n\t\t\t\t\telse { // arg is an options object\r\n\t\t\t\t\t\toptions = $.extend(options, arg);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t\telse {\r\n\t\t\t\t\t// arg is callback\r\n\t\t\t\t\tif(typeof arg === 'function') {\r\n\t\t\t\t\t\toptions.callback = arg;\r\n\t\t\t\t\t}\r\n\t\t\t\t\telse {\r\n\t\t\t\t\t\tnum = parseInt(arg, 10);\r\n\t\t\t\t\t\t// arg is seconds of timeout\r\n\t\t\t\t\t\tif(!isNaN(num)) {\r\n\t\t\t\t\t\t\toptions.seconds = num;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t// set time to countdown to\r\n\t\tif(options.timeTo) {\r\n\t\t\tif(options.timeTo.getTime) { // set time as date object\r\n\t\t\t\ttime = options.timeTo.getTime();\r\n\t\t\t}\r\n\t\t\telse if(typeof options.timeTo === 'number') { // set time as integer in millisec\r\n\t\t\t\ttime = options.timeTo;\r\n\t\t\t}\r\n\t\t\tif(time > nowUtc) {\r\n\t\t\t\toptions.seconds = Math.floor((time - nowUtc) / 1000);\r\n\t\t\t}\r\n\t\t\telse {\r\n\t\t\t\toptions.seconds = 0;\r\n\t\t\t}\r\n\t\t} else if(options.time || !options.seconds) {\r\n\t\t\ttime = options.time;\r\n\r\n\t\t\tif(!time) {\r\n\t\t\t\ttime = new Date();\r\n\t\t\t}\r\n\r\n\t\t\tif(typeof time === 'object' && time.getTime) {\r\n\t\t\t\toptions.seconds = time.getHours()*SECONDS_PER_HOUR + time.getMinutes()*60 + time.getSeconds();\r\n\t\t\t\toptions.countdown = false;\r\n\t\t\t}\r\n\t\t\telse if(typeof time === 'string') {\r\n\t\t\t\ttt = time.split(':');\r\n\t\t\t\tsec = 0;\r\n\t\t\t\tm = 1;\r\n\r\n\t\t\t\twhile(t = tt.pop()) {\r\n\t\t\t\t\tsec += t * m;\r\n\t\t\t\t\tm *= 60;\r\n\t\t\t\t}\r\n\t\t\t\toptions.seconds = sec;\r\n\t\t\t\toptions.countdown = false;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif(options.countdown !== false && options.seconds > SECONDS_PER_DAY && typeof options.displayDays === 'undefined') {\r\n\t\t\tdays = Math.floor(options.seconds / SECONDS_PER_DAY);\r\n\t\t\toptions.displayDays = days < 10 && 1 || days < 100 && 2 || 3;\r\n\t\t}\r\n\t\telse if(options.displayDays === true) {\r\n\t\t\toptions.displayDays = 3;\r\n\t\t}\r\n\t\telse if(options.displayDays) {\r\n\t\t\toptions.displayDays = options.displayDays > 0 ? Math.floor(options.displayDays) : 3;\r\n\t\t}\r\n\r\n\t\treturn this.each(function() {\r\n\t\t\tvar $this = $(this),\r\n\t\t\t\tdata = $this.data(),\r\n\t\t\t\topt, defs = {}, i, css;\r\n\r\n\t\t\tif(data.intervalId) {\r\n\t\t\t\tclearInterval(data.intervalId);\r\n\t\t\t\tdata.intervalId = null;\r\n\t\t\t}\r\n\r\n\t\t\tif(!data.vals) { // new clock\r\n\t\t\t\tif(data.opt) {\r\n\t\t\t\t\topt = data.options;\r\n\t\t\t\t}\r\n\t\t\t\telse {\r\n\t\t\t\t\topt = options;\r\n\t\t\t\t}\r\n\r\n\t\t\t\t// clone the defaults object\r\n\t\t\t\tfor(i in defaults) {\r\n\t\t\t\t\tif($.isArray(defaults[i])) {\r\n\t\t\t\t\t\tdefs[i] = defaults[i].slice(0);\r\n\t\t\t\t\t}\r\n\t\t\t\t\telse {\r\n\t\t\t\t\t\tdefs[i] = defaults[i];\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\tdata = $.extend(defs, opt);\r\n\t\t\t\tdata.options = opt;\r\n\r\n\t\t\t\tdata.height = Math.round(data.fontSize * 100 / 90) || data.height;\r\n\t\t\t\tdata.width = Math.round(data.fontSize * 0.6) || data.width;\r\n\t\t\t\tdata.displayHours = !!(data.displayDays || data.displayHours);\r\n\r\n\t\t\t\tcss = {};\r\n\t\t\t\tif(data.fontSize > 0) {\r\n\t\t\t\t\tcss.fontSize = data.fontSize +'px';\r\n\t\t\t\t}\r\n\r\n\t\t\t\t$this.addClass('timeTo');\r\n\r\n\t\t\t\tvar left = Math.round(data.height / 10),\r\n\t\t\t\t\tulhtml = '
',\r\n\t\t\t\t\tstyle = data.fontSize ? ' style=\"width:'+ data.width +'px; height:'+ data.height +'px;\"' : ' style=\"\"',\r\n\t\t\t\t\tdhtml1 = ''+ ulhtml,\r\n\t\t\t\t\tdhtml2 = '
'+ ulhtml,\r\n\t\t\t\t\tmaxWidth = Math.round(data.width * 2 + 3),\r\n\r\n\t\t\t\t\tthtml = (data.displayCaptions ?\r\n\t\t\t\t\t\t(data.displayHours\r\n\t\t\t\t\t\t\t? '$1'\r\n\t\t\t\t\t\t\t: '') +\r\n\t\t\t\t\t\t'$1' +\r\n\t\t\t\t\t\t'$1'\r\n\t\t\t\t\t\t: (data.displayHours ? '$1' : '') +'$1' +'$1'\r\n\t\t\t\t\t).replace(/\\$1/g, dhtml1 + dhtml2);\r\n\r\n\t\t\t\tif(data.displayDays > 0) {\r\n\t\t\t\t\tvar marginRight = data.fontSize * 0.4 || defaults.gap,\r\n\t\t\t\t\t\tdhtml = dhtml1;\r\n\t\t\t\t\tfor(i = data.displayDays - 1; i > 0; i--) {\r\n\t\t\t\t\t\tdhtml += i === 1 ? dhtml2.replace('\">', '\">') : dhtml2;\r\n\t\t\t\t\t}\r\n\t\t\t\t\tthtml = (data.displayCaptions ?\r\n\t\t\t\t\t\t'$1'\r\n\t\t\t\t\t\t: '$1').replace(\r\n\t\t\t\t\t\t\t/\\$1/, dhtml\r\n\t\t\t\t\t\t) + thtml;\r\n\t\t\t\t}\r\n\t\t\t\t$this.html(thtml);\r\n\t\t\t}\r\n\t\t\telse if(method !== 'reset') { // exists clock\r\n\t\t\t\t$.extend(data, options);\r\n\t\t\t}\r\n\t\t\t\r\n\t\t\tvar $digits = $this.find('div');\r\n\r\n\t\t\tif($digits.length < data.vals.length) {\r\n\t\t\t\tvar dif = data.vals.length - $digits.length,\r\n\t\t\t\t\tvals = data.vals, limits = data.limits;\r\n\r\n\t\t\t for (var index in methods.digitIndexes) {\r\n\t\t\t methods.digitIndexes[index] = methods.digitIndexes[index] - dif;\r\n\t\t\t }\r\n\r\n\t\t\t\tdata.vals = [];\r\n\t\t\t\tdata.limits = [];\r\n\t\t\t\tfor(i = 0; i < $digits.length; i++) {\r\n\t\t\t\t\tdata.vals[i] = vals[dif + i];\r\n\t\t\t\t\tdata.limits[i] = limits[dif + i];\r\n\t\t\t\t}\r\n\t\t\t\tdata.iSec = data.vals.length - 1;\r\n\t\t\t\tdata.iHour = data.vals.length - 5;\r\n\t\t\t}\r\n\t\t\tdata.sec = data.seconds;\r\n\t\t\t$this.data(data);\r\n\t\t\t\r\n\t\t\tif(method && methods[method]) {\r\n\t\t\t\tmethods[ method ].call($this, data.seconds);\r\n\t\t\t}\r\n\t\t\telse if(data.start) {\r\n\t\t\t\tmethods.start.call($this, data.seconds);\r\n\t\t\t}\r\n\t\t\telse {\r\n\t\t\t\tinit.call($this, data.seconds);\r\n\t\t\t}\r\n\t\t});\r\n\t};\r\n\r\n\r\n\tfunction init(sec, force) {\r\n\t\tvar data = this.data(),\r\n\t\t\tholder = this,\r\n\t\t\t$digits = this.find('ul'),\r\n\t\t\tisInterval = false;\r\n\r\n\t\tif(!data.vals || $digits.length === 0) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tif(!sec) {\r\n\t\t\tsec = data.seconds;\r\n\t\t}\r\n\r\n\t\tif(data.intervalId) {\r\n\t\t\tisInterval = true;\r\n\t\t\tclearTimeout(data.intervalId);\r\n\t\t}\r\n\r\n\t\tvar days = Math.floor(sec / SECONDS_PER_DAY),\r\n\t\t\trest = days * SECONDS_PER_DAY,\r\n\t\t\th = Math.floor((sec - rest) / SECONDS_PER_HOUR);\r\n\r\n\t\trest += h * SECONDS_PER_HOUR;\r\n\r\n\t\tvar m = Math.floor((sec - rest) / 60);\r\n\t\t\r\n\t\trest += m * 60;\r\n\t\t\r\n\t\tvar s = sec - rest,\r\n\t\t\tstr = (days < 100 ? '0' + (days < 10 ? '0' : '') : '') + days + (h < 10 ? '0' : '') + h + (m < 10 ? '0' : '') + m + (s < 10 ? '0' : '') + s;\r\n\r\n\t\tfor(var i = data.vals.length - 1, j = str.length - 1, v; i >= 0; i--, j--) {\r\n\t\t\tv = parseInt(str.substr(j, 1));\r\n\t\t\tdata.vals[i] = v;\r\n\t\t\t$digits.eq(i).children().html(v);\r\n\t\t}\r\n\t\tif(isInterval || force) {\r\n\t\t\tvar me = this;\r\n\t\t\tdata.ttStartTime = $.now();\r\n\t\t\tdata.intervalId = setTimeout(function() { tick.call(me); }, 1000);\r\n\t\t\tthis.data('intervalId', data.intervalId);\r\n\t\t}\r\n\t\tmethods.format(data.lang, data.vals, holder);\r\n\t}\r\n\t\t\r\n\t/**\r\n\t * Switch specified digit by digit index\r\n\t * @param {number} - digit index\r\n\t */\r\n\tfunction tick(digit) {\r\n\t\tvar $digits = this.find('ul'),\r\n\t\t\tdata = this.data(),\r\n\t\t\tholder = this;\r\n\r\n\t\tif(!data.vals || $digits.length == 0) {\r\n\t\t\tif(data.intervalId) {\r\n\t\t\t\tclearTimeout(data.intervalId);\r\n\t\t\t\tthis.data('intervalId', null);\r\n\t\t\t}\r\n\t\t\tif(data.callback) {\r\n\t\t\t\tdata.callback();\r\n\t\t\t}\r\n\r\n\t\t\treturn;\r\n\t\t}\r\n\t\tif(digit == undefined) {\r\n\t\t\tdigit = data.iSec;\r\n\t\t}\r\n\r\n\t\tvar n = data.vals[digit],\r\n\t\t\t$ul = $digits.eq(digit),\r\n\t\t\t$li = $ul.children(),\r\n\t\t\tstep = data.countdown ? -1 : 1;\r\n\r\n\t\tmethods.format(data.lang, data.vals, holder);\r\n\t\t\r\n\t\t$li.eq(1).html(n);\r\n\t\tn += step;\r\n\r\n\t\tif(digit == data.iSec) {\r\n\t\t\tvar tickTimeout = data.tickTimeout,\r\n\t\t\t\ttimeDiff = $.now() - data.ttStartTime;\r\n\r\n\t\t\tdata.sec += step;\r\n\r\n\t\t\ttickTimeout += Math.abs(data.seconds - data.sec) * tickTimeout - timeDiff;\r\n\r\n\t\t\tdata.intervalId = setTimeout(function() { tick.call(me); }, tickTimeout);\r\n\t\t}\r\n\t\t\r\n\t\tif(n < 0 || n > data.limits[digit]) {\r\n\t\t\tif(n < 0) {\r\n\t\t\t\tn = data.limits[digit];\r\n\t\t\t\tif(digit == data.iHour && data.displayDays > 0 && digit > 0 && data.vals[digit-1] == 0) // fix for hours when day changing\r\n\t\t\t\t\tn = 3;\r\n\t\t\t}\r\n\t\t\telse {\r\n\t\t\t\tn = 0;\r\n\t\t\t}\r\n\r\n\t\t\tif(digit > 0) {\r\n\t\t\t\ttick.call(this, digit-1);\r\n\t\t\t}\r\n\t\t}\r\n\t\t$li.eq(0).html(n);\r\n\t\t\r\n\t\tvar me = this;\r\n\t\t\r\n\t\tif($.support.transition) {\r\n\t\t\t$ul.addClass('transition');\r\n\t\t\t$ul.css({top:0});\r\n\r\n\t\t\tsetTimeout(function() {\r\n\t\t\t\t$ul.removeClass('transition');\r\n\t\t\t\t$li.eq(1).html(n);\r\n\t\t\t\t$ul.css({top:\"-\"+ data.height +\"px\"});\r\n\r\n\t\t\t\tif(step > 0 || digit != data.iSec) {\r\n\t\t\t\t\treturn;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif(data.sec == data.countdownAlertLimit) {\r\n\t\t\t\t\t$digits.parent().addClass('timeTo-alert');\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif(data.sec === 0) {\r\n\t\t\t\t\t$digits.parent().removeClass('timeTo-alert');\r\n\r\n\t\t\t\t\tif(data.intervalId) {\r\n\t\t\t\t\t\tclearTimeout(data.intervalId);\r\n\t\t\t\t\t\tme.data('intervalId', null);\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tif(typeof data.callback === 'function') {\r\n\t\t\t\t\t\tdata.callback();\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}, 410);\r\n\t\t}\r\n\t\telse {\r\n\t\t\t$ul.stop().animate({top:0}, 400, digit != data.iSec ? null : function() {\r\n\t\t\t\t$li.eq(1).html(n);\r\n\t\t\t\t$ul.css({top:\"-\"+ data.height +\"px\"});\r\n\t\t\t\tif(step > 0 || digit != data.iSec) {\r\n\t\t\t\t\treturn;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif(data.sec == data.countdownAlertLimit) {\r\n\t\t\t\t\t$digits.parent().addClass('timeTo-alert');\r\n\t\t\t\t}\r\n\t\t\t\telse if(data.sec == 0) {\r\n\t\t\t\t\t$digits.parent().removeClass('timeTo-alert');\r\n\r\n\t\t\t\t\tif(data.intervalId) {\r\n\t\t\t\t\t\tclearTimeout(data.intervalId);\r\n\t\t\t\t\t\tme.data('intervalId', null);\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tif(typeof data.callback === 'function') {\r\n\t\t\t\t\t\tdata.callback();\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t}\r\n\t\tdata.vals[digit] = n;\r\n\t}\r\n\r\n\treturn jQuery;\r\n\t\r\n}));\r\n\r\n/*\r\n jQuery Masked Input Plugin\r\n Copyright (c) 2007 - 2015 Josh Bush (digitalbush.com)\r\n Licensed under the MIT license (http://digitalbush.com/projects/masked-input-plugin/#license)\r\n Version: 1.4.1\r\n*/\r\n!function(factory) {\r\n \"function\" == typeof define && define.amd ? define([ \"jquery\" ], factory) : factory(\"object\" == typeof exports ? require(\"jquery\") : jQuery);\r\n}(function($) {\r\n var caretTimeoutId, ua = navigator.userAgent, iPhone = /iphone/i.test(ua), chrome = /chrome/i.test(ua), android = /android/i.test(ua);\r\n $.mask = {\r\n definitions: {\r\n \"9\": \"[0-9]\",\r\n a: \"[A-Za-z]\",\r\n \"*\": \"[A-Za-z0-9]\"\r\n },\r\n autoclear: !0,\r\n dataName: \"rawMaskFn\",\r\n placeholder: \"_\"\r\n }, $.fn.extend({\r\n caret: function(begin, end) {\r\n var range;\r\n if (0 !== this.length && !this.is(\":hidden\")) return \"number\" == typeof begin ? (end = \"number\" == typeof end ? end : begin, \r\n this.each(function() {\r\n this.setSelectionRange ? this.setSelectionRange(begin, end) : this.createTextRange && (range = this.createTextRange(), \r\n range.collapse(!0), range.moveEnd(\"character\", end), range.moveStart(\"character\", begin), \r\n range.select());\r\n })) : (this[0].setSelectionRange ? (begin = this[0].selectionStart, end = this[0].selectionEnd) : document.selection && document.selection.createRange && (range = document.selection.createRange(), \r\n begin = 0 - range.duplicate().moveStart(\"character\", -1e5), end = begin + range.text.length), \r\n {\r\n begin: begin,\r\n end: end\r\n });\r\n },\r\n unmask: function() {\r\n return this.trigger(\"unmask\");\r\n },\r\n mask: function(mask, settings) {\r\n var input, defs, tests, partialPosition, firstNonMaskPos, lastRequiredNonMaskPos, len, oldVal;\r\n if (!mask && this.length > 0) {\r\n input = $(this[0]);\r\n var fn = input.data($.mask.dataName);\r\n return fn ? fn() : void 0;\r\n }\r\n return settings = $.extend({\r\n autoclear: $.mask.autoclear,\r\n placeholder: $.mask.placeholder,\r\n completed: null\r\n }, settings), defs = $.mask.definitions, tests = [], partialPosition = len = mask.length, \r\n firstNonMaskPos = null, $.each(mask.split(\"\"), function(i, c) {\r\n \"?\" == c ? (len--, partialPosition = i) : defs[c] ? (tests.push(new RegExp(defs[c])), \r\n null === firstNonMaskPos && (firstNonMaskPos = tests.length - 1), partialPosition > i && (lastRequiredNonMaskPos = tests.length - 1)) : tests.push(null);\r\n }), this.trigger(\"unmask\").each(function() {\r\n function tryFireCompleted() {\r\n if (settings.completed) {\r\n for (var i = firstNonMaskPos; lastRequiredNonMaskPos >= i; i++) if (tests[i] && buffer[i] === getPlaceholder(i)) return;\r\n settings.completed.call(input);\r\n }\r\n }\r\n function getPlaceholder(i) {\r\n return settings.placeholder.charAt(i < settings.placeholder.length ? i : 0);\r\n }\r\n function seekNext(pos) {\r\n for (;++pos < len && !tests[pos]; ) ;\r\n return pos;\r\n }\r\n function seekPrev(pos) {\r\n for (;--pos >= 0 && !tests[pos]; ) ;\r\n return pos;\r\n }\r\n function shiftL(begin, end) {\r\n var i, j;\r\n if (!(0 > begin)) {\r\n for (i = begin, j = seekNext(end); len > i; i++) if (tests[i]) {\r\n if (!(len > j && tests[i].test(buffer[j]))) break;\r\n buffer[i] = buffer[j], buffer[j] = getPlaceholder(j), j = seekNext(j);\r\n }\r\n writeBuffer(), input.caret(Math.max(firstNonMaskPos, begin));\r\n }\r\n }\r\n function shiftR(pos) {\r\n var i, c, j, t;\r\n for (i = pos, c = getPlaceholder(pos); len > i; i++) if (tests[i]) {\r\n if (j = seekNext(i), t = buffer[i], buffer[i] = c, !(len > j && tests[j].test(t))) break;\r\n c = t;\r\n }\r\n }\r\n function androidInputEvent() {\r\n var curVal = input.val(), pos = input.caret();\r\n if (oldVal && oldVal.length && oldVal.length > curVal.length) {\r\n for (checkVal(!0); pos.begin > 0 && !tests[pos.begin - 1]; ) pos.begin--;\r\n if (0 === pos.begin) for (;pos.begin < firstNonMaskPos && !tests[pos.begin]; ) pos.begin++;\r\n input.caret(pos.begin, pos.begin);\r\n } else {\r\n for (checkVal(!0); pos.begin < len && !tests[pos.begin]; ) pos.begin++;\r\n input.caret(pos.begin, pos.begin);\r\n }\r\n tryFireCompleted();\r\n }\r\n function blurEvent() {\r\n checkVal(), input.val() != focusText && input.change();\r\n }\r\n function keydownEvent(e) {\r\n if (!input.prop(\"readonly\")) {\r\n var pos, begin, end, k = e.which || e.keyCode;\r\n oldVal = input.val(), 8 === k || 46 === k || iPhone && 127 === k ? (pos = input.caret(), \r\n begin = pos.begin, end = pos.end, end - begin === 0 && (begin = 46 !== k ? seekPrev(begin) : end = seekNext(begin - 1), \r\n end = 46 === k ? seekNext(end) : end), clearBuffer(begin, end), shiftL(begin, end - 1), \r\n e.preventDefault()) : 13 === k ? blurEvent.call(this, e) : 27 === k && (input.val(focusText), \r\n input.caret(0, checkVal()), e.preventDefault());\r\n }\r\n }\r\n function keypressEvent(e) {\r\n if (!input.prop(\"readonly\")) {\r\n var p, c, next, k = e.which || e.keyCode, pos = input.caret();\r\n if (!(e.ctrlKey || e.altKey || e.metaKey || 32 > k) && k && 13 !== k) {\r\n if (pos.end - pos.begin !== 0 && (clearBuffer(pos.begin, pos.end), shiftL(pos.begin, pos.end - 1)), \r\n p = seekNext(pos.begin - 1), len > p && (c = String.fromCharCode(k), tests[p].test(c))) {\r\n if (shiftR(p), buffer[p] = c, writeBuffer(), next = seekNext(p), android) {\r\n var proxy = function() {\r\n $.proxy($.fn.caret, input, next)();\r\n };\r\n setTimeout(proxy, 0);\r\n } else input.caret(next);\r\n pos.begin <= lastRequiredNonMaskPos && tryFireCompleted();\r\n }\r\n e.preventDefault();\r\n }\r\n }\r\n }\r\n function clearBuffer(start, end) {\r\n var i;\r\n for (i = start; end > i && len > i; i++) tests[i] && (buffer[i] = getPlaceholder(i));\r\n }\r\n function writeBuffer() {\r\n input.val(buffer.join(\"\"));\r\n }\r\n function checkVal(allow) {\r\n var i, c, pos, test = input.val(), lastMatch = -1;\r\n for (i = 0, pos = 0; len > i; i++) if (tests[i]) {\r\n for (buffer[i] = getPlaceholder(i); pos++ < test.length; ) if (c = test.charAt(pos - 1), \r\n tests[i].test(c)) {\r\n buffer[i] = c, lastMatch = i;\r\n break;\r\n }\r\n if (pos > test.length) {\r\n clearBuffer(i + 1, len);\r\n break;\r\n }\r\n } else buffer[i] === test.charAt(pos) && pos++, partialPosition > i && (lastMatch = i);\r\n return allow ? writeBuffer() : partialPosition > lastMatch + 1 ? settings.autoclear || buffer.join(\"\") === defaultBuffer ? (input.val() && input.val(\"\"), \r\n clearBuffer(0, len)) : writeBuffer() : (writeBuffer(), input.val(input.val().substring(0, lastMatch + 1))), \r\n partialPosition ? i : firstNonMaskPos;\r\n }\r\n var input = $(this), buffer = $.map(mask.split(\"\"), function(c, i) {\r\n return \"?\" != c ? defs[c] ? getPlaceholder(i) : c : void 0;\r\n }), defaultBuffer = buffer.join(\"\"), focusText = input.val();\r\n input.data($.mask.dataName, function() {\r\n return $.map(buffer, function(c, i) {\r\n return tests[i] && c != getPlaceholder(i) ? c : null;\r\n }).join(\"\");\r\n }), input.one(\"unmask\", function() {\r\n input.off(\".mask\").removeData($.mask.dataName);\r\n }).on(\"focus.mask\", function() {\r\n if (!input.prop(\"readonly\")) {\r\n clearTimeout(caretTimeoutId);\r\n var pos;\r\n focusText = input.val(), pos = checkVal(), caretTimeoutId = setTimeout(function() {\r\n input.get(0) === document.activeElement && (writeBuffer(), pos == mask.replace(\"?\", \"\").length ? input.caret(0, pos) : input.caret(pos));\r\n }, 10);\r\n }\r\n }).on(\"blur.mask\", blurEvent).on(\"keydown.mask\", keydownEvent).on(\"keypress.mask\", keypressEvent).on(\"input.mask paste.mask\", function() {\r\n input.prop(\"readonly\") || setTimeout(function() {\r\n var pos = checkVal(!0);\r\n input.caret(pos), tryFireCompleted();\r\n }, 0);\r\n }), chrome && android && input.off(\"input.mask\").on(\"input.mask\", androidInputEvent), \r\n checkVal();\r\n });\r\n }\r\n });\r\n});\r\n/*\r\n jQuery Masked Input Plugin\r\n Copyright (c) 2007 - 2015 Josh Bush (digitalbush.com)\r\n Licensed under the MIT license (http://digitalbush.com/projects/masked-input-plugin/#license)\r\n Version: 1.4.1\r\n*/\r\n!function(a){\"function\"==typeof define&&define.amd?define([\"jquery\"],a):a(\"object\"==typeof exports?require(\"jquery\"):jQuery)}(function(a){var b,c=navigator.userAgent,d=/iphone/i.test(c),e=/chrome/i.test(c),f=/android/i.test(c);a.mask={definitions:{9:\"[0-9]\",a:\"[A-Za-z]\",\"*\":\"[A-Za-z0-9]\"},autoclear:!0,dataName:\"rawMaskFn\",placeholder:\"_\"},a.fn.extend({caret:function(a,b){var c;if(0!==this.length&&!this.is(\":hidden\"))return\"number\"==typeof a?(b=\"number\"==typeof b?b:a,this.each(function(){this.setSelectionRange?this.setSelectionRange(a,b):this.createTextRange&&(c=this.createTextRange(),c.collapse(!0),c.moveEnd(\"character\",b),c.moveStart(\"character\",a),c.select())})):(this[0].setSelectionRange?(a=this[0].selectionStart,b=this[0].selectionEnd):document.selection&&document.selection.createRange&&(c=document.selection.createRange(),a=0-c.duplicate().moveStart(\"character\",-1e5),b=a+c.text.length),{begin:a,end:b})},unmask:function(){return this.trigger(\"unmask\")},mask:function(c,g){var h,i,j,k,l,m,n,o;if(!c&&this.length>0){h=a(this[0]);var p=h.data(a.mask.dataName);return p?p():void 0}return g=a.extend({autoclear:a.mask.autoclear,placeholder:a.mask.placeholder,completed:null},g),i=a.mask.definitions,j=[],k=n=c.length,l=null,a.each(c.split(\"\"),function(a,b){\"?\"==b?(n--,k=a):i[b]?(j.push(new RegExp(i[b])),null===l&&(l=j.length-1),k>a&&(m=j.length-1)):j.push(null)}),this.trigger(\"unmask\").each(function(){function h(){if(g.completed){for(var a=l;m>=a;a++)if(j[a]&&C[a]===p(a))return;g.completed.call(B)}}function p(a){return g.placeholder.charAt(a=0&&!j[a];);return a}function s(a,b){var c,d;if(!(0>a)){for(c=a,d=q(b);n>c;c++)if(j[c]){if(!(n>d&&j[c].test(C[d])))break;C[c]=C[d],C[d]=p(d),d=q(d)}z(),B.caret(Math.max(l,a))}}function t(a){var b,c,d,e;for(b=a,c=p(a);n>b;b++)if(j[b]){if(d=q(b),e=C[b],C[b]=c,!(n>d&&j[d].test(e)))break;c=e}}function u(){var a=B.val(),b=B.caret();if(o&&o.length&&o.length>a.length){for(A(!0);b.begin>0&&!j[b.begin-1];)b.begin--;if(0===b.begin)for(;b.beging)&&g&&13!==g){if(i.end-i.begin!==0&&(y(i.begin,i.end),s(i.begin,i.end-1)),c=q(i.begin-1),n>c&&(d=String.fromCharCode(g),j[c].test(d))){if(t(c),C[c]=d,z(),e=q(c),f){var k=function(){a.proxy(a.fn.caret,B,e)()};setTimeout(k,0)}else B.caret(e);i.begin<=m&&h()}b.preventDefault()}}}function y(a,b){var c;for(c=a;b>c&&n>c;c++)j[c]&&(C[c]=p(c))}function z(){B.val(C.join(\"\"))}function A(a){var b,c,d,e=B.val(),f=-1;for(b=0,d=0;n>b;b++)if(j[b]){for(C[b]=p(b);d++e.length){y(b+1,n);break}}else C[b]===e.charAt(d)&&d++,k>b&&(f=b);return a?z():k>f+1?g.autoclear||C.join(\"\")===D?(B.val()&&B.val(\"\"),y(0,n)):z():(z(),B.val(B.val().substring(0,f+1))),k?b:l}var B=a(this),C=a.map(c.split(\"\"),function(a,b){return\"?\"!=a?i[a]?p(b):a:void 0}),D=C.join(\"\"),E=B.val();B.data(a.mask.dataName,function(){return a.map(C,function(a,b){return j[b]&&a!=p(b)?a:null}).join(\"\")}),B.one(\"unmask\",function(){B.off(\".mask\").removeData(a.mask.dataName)}).on(\"focus.mask\",function(){if(!B.prop(\"readonly\")){clearTimeout(b);var a;E=B.val(),a=A(),b=setTimeout(function(){B.get(0)===document.activeElement&&(z(),a==c.replace(\"?\",\"\").length?B.caret(0,a):B.caret(a))},10)}}).on(\"blur.mask\",v).on(\"keydown.mask\",w).on(\"keypress.mask\",x).on(\"input.mask paste.mask\",function(){B.prop(\"readonly\")||setTimeout(function(){var a=A(!0);B.caret(a),h()},0)}),e&&f&&B.off(\"input.mask\").on(\"input.mask\",u),A()})}})});\r\n(function() {\r\n var COUNT_FRAMERATE, COUNT_MS_PER_FRAME, DIGIT_FORMAT, DIGIT_HTML, DIGIT_SPEEDBOOST, DURATION, FORMAT_MARK_HTML, FORMAT_PARSER, FRAMERATE, FRAMES_PER_VALUE, MS_PER_FRAME, MutationObserver, Odometer, RIBBON_HTML, TRANSITION_END_EVENTS, TRANSITION_SUPPORT, VALUE_HTML, addClass, createFromHTML, fractionalPart, now, removeClass, requestAnimationFrame, round, transitionCheckStyles, trigger, truncate, wrapJQuery, _jQueryWrapped, _old, _ref, _ref1,\r\n __slice = [].slice;\r\n\r\n VALUE_HTML = '';\r\n\r\n RIBBON_HTML = '' + VALUE_HTML + '';\r\n\r\n DIGIT_HTML = '8' + RIBBON_HTML + '';\r\n\r\n FORMAT_MARK_HTML = '';\r\n\r\n DIGIT_FORMAT = '( ddd).dd';\r\n\r\n FORMAT_PARSER = /^\\(?([^)]*)\\)?(?:(.)(d+))?$/;\r\n\r\n FRAMERATE = 30;\r\n\r\n DURATION = 2000;\r\n\r\n COUNT_FRAMERATE = 20;\r\n\r\n FRAMES_PER_VALUE = 2;\r\n\r\n DIGIT_SPEEDBOOST = .5;\r\n\r\n MS_PER_FRAME = 1000 / FRAMERATE;\r\n\r\n COUNT_MS_PER_FRAME = 1000 / COUNT_FRAMERATE;\r\n\r\n TRANSITION_END_EVENTS = 'transitionend webkitTransitionEnd oTransitionEnd otransitionend MSTransitionEnd';\r\n\r\n transitionCheckStyles = document.createElement('div').style;\r\n\r\n TRANSITION_SUPPORT = (transitionCheckStyles.transition != null) || (transitionCheckStyles.webkitTransition != null) || (transitionCheckStyles.mozTransition != null) || (transitionCheckStyles.oTransition != null);\r\n\r\n requestAnimationFrame = window.requestAnimationFrame || window.mozRequestAnimationFrame || window.webkitRequestAnimationFrame || window.msRequestAnimationFrame;\r\n\r\n MutationObserver = window.MutationObserver || window.WebKitMutationObserver || window.MozMutationObserver;\r\n\r\n createFromHTML = function(html) {\r\n var el;\r\n el = document.createElement('div');\r\n el.innerHTML = html;\r\n return el.children[0];\r\n };\r\n\r\n removeClass = function(el, name) {\r\n return el.className = el.className.replace(new RegExp(\"(^| )\" + (name.split(' ').join('|')) + \"( |$)\", 'gi'), ' ');\r\n };\r\n\r\n addClass = function(el, name) {\r\n removeClass(el, name);\r\n return el.className += \" \" + name;\r\n };\r\n\r\n trigger = function(el, name) {\r\n var evt;\r\n if (document.createEvent != null) {\r\n evt = document.createEvent('HTMLEvents');\r\n evt.initEvent(name, true, true);\r\n return el.dispatchEvent(evt);\r\n }\r\n };\r\n\r\n now = function() {\r\n var _ref, _ref1;\r\n return (_ref = (_ref1 = window.performance) != null ? typeof _ref1.now === \"function\" ? _ref1.now() : void 0 : void 0) != null ? _ref : +(new Date);\r\n };\r\n\r\n round = function(val, precision) {\r\n if (precision == null) {\r\n precision = 0;\r\n }\r\n if (!precision) {\r\n return Math.round(val);\r\n }\r\n val *= Math.pow(10, precision);\r\n val += 0.5;\r\n val = Math.floor(val);\r\n return val /= Math.pow(10, precision);\r\n };\r\n\r\n truncate = function(val) {\r\n if (val < 0) {\r\n return Math.ceil(val);\r\n } else {\r\n return Math.floor(val);\r\n }\r\n };\r\n\r\n fractionalPart = function(val) {\r\n return val - round(val);\r\n };\r\n\r\n _jQueryWrapped = false;\r\n\r\n (wrapJQuery = function() {\r\n var property, _i, _len, _ref, _results;\r\n if (_jQueryWrapped) {\r\n return;\r\n }\r\n if (window.jQuery != null) {\r\n _jQueryWrapped = true;\r\n _ref = ['html', 'text'];\r\n _results = [];\r\n for (_i = 0, _len = _ref.length; _i < _len; _i++) {\r\n property = _ref[_i];\r\n _results.push((function(property) {\r\n var old;\r\n old = window.jQuery.fn[property];\r\n return window.jQuery.fn[property] = function(val) {\r\n var _ref1;\r\n if ((val == null) || (((_ref1 = this[0]) != null ? _ref1.odometer : void 0) == null)) {\r\n return old.apply(this, arguments);\r\n }\r\n return this[0].odometer.update(val);\r\n };\r\n })(property));\r\n }\r\n return _results;\r\n }\r\n })();\r\n\r\n setTimeout(wrapJQuery, 0);\r\n\r\n Odometer = (function() {\r\n function Odometer(options) {\r\n var e, k, property, v, _base, _i, _len, _ref, _ref1, _ref2,\r\n _this = this;\r\n this.options = options;\r\n this.el = this.options.el;\r\n if (this.el.odometer != null) {\r\n return this.el.odometer;\r\n }\r\n this.el.odometer = this;\r\n _ref = Odometer.options;\r\n for (k in _ref) {\r\n v = _ref[k];\r\n if (this.options[k] == null) {\r\n this.options[k] = v;\r\n }\r\n }\r\n if ((_base = this.options).duration == null) {\r\n _base.duration = DURATION;\r\n }\r\n this.MAX_VALUES = ((this.options.duration / MS_PER_FRAME) / FRAMES_PER_VALUE) | 0;\r\n this.resetFormat();\r\n this.value = this.cleanValue((_ref1 = this.options.value) != null ? _ref1 : '');\r\n this.renderInside();\r\n this.render();\r\n try {\r\n _ref2 = ['innerHTML', 'innerText', 'textContent'];\r\n for (_i = 0, _len = _ref2.length; _i < _len; _i++) {\r\n property = _ref2[_i];\r\n if (this.el[property] != null) {\r\n (function(property) {\r\n return Object.defineProperty(_this.el, property, {\r\n get: function() {\r\n var _ref3;\r\n if (property === 'innerHTML') {\r\n return _this.inside.outerHTML;\r\n } else {\r\n return (_ref3 = _this.inside.innerText) != null ? _ref3 : _this.inside.textContent;\r\n }\r\n },\r\n set: function(val) {\r\n return _this.update(val);\r\n }\r\n });\r\n })(property);\r\n }\r\n }\r\n } catch (_error) {\r\n e = _error;\r\n this.watchForMutations();\r\n }\r\n this;\r\n }\r\n\r\n Odometer.prototype.renderInside = function() {\r\n this.inside = document.createElement('div');\r\n this.inside.className = 'odometer-inside';\r\n this.el.innerHTML = '';\r\n return this.el.appendChild(this.inside);\r\n };\r\n\r\n Odometer.prototype.watchForMutations = function() {\r\n var e,\r\n _this = this;\r\n if (MutationObserver == null) {\r\n return;\r\n }\r\n try {\r\n if (this.observer == null) {\r\n this.observer = new MutationObserver(function(mutations) {\r\n var newVal;\r\n newVal = _this.el.innerText;\r\n _this.renderInside();\r\n _this.render(_this.value);\r\n return _this.update(newVal);\r\n });\r\n }\r\n this.watchMutations = true;\r\n return this.startWatchingMutations();\r\n } catch (_error) {\r\n e = _error;\r\n }\r\n };\r\n\r\n Odometer.prototype.startWatchingMutations = function() {\r\n if (this.watchMutations) {\r\n return this.observer.observe(this.el, {\r\n childList: true\r\n });\r\n }\r\n };\r\n\r\n Odometer.prototype.stopWatchingMutations = function() {\r\n var _ref;\r\n return (_ref = this.observer) != null ? _ref.disconnect() : void 0;\r\n };\r\n\r\n Odometer.prototype.cleanValue = function(val) {\r\n var _ref;\r\n if (typeof val === 'string') {\r\n val = val.replace((_ref = this.format.radix) != null ? _ref : '.', '');\r\n val = val.replace(/[.,]/g, '');\r\n val = val.replace('', '.');\r\n val = parseFloat(val, 10) || 0;\r\n }\r\n return round(val, this.format.precision);\r\n };\r\n\r\n Odometer.prototype.bindTransitionEnd = function() {\r\n var event, renderEnqueued, _i, _len, _ref, _results,\r\n _this = this;\r\n if (this.transitionEndBound) {\r\n return;\r\n }\r\n this.transitionEndBound = true;\r\n renderEnqueued = false;\r\n _ref = TRANSITION_END_EVENTS.split(' ');\r\n _results = [];\r\n for (_i = 0, _len = _ref.length; _i < _len; _i++) {\r\n event = _ref[_i];\r\n _results.push(this.el.addEventListener(event, function() {\r\n if (renderEnqueued) {\r\n return true;\r\n }\r\n renderEnqueued = true;\r\n setTimeout(function() {\r\n _this.render();\r\n renderEnqueued = false;\r\n return trigger(_this.el, 'odometerdone');\r\n }, 0);\r\n return true;\r\n }, false));\r\n }\r\n return _results;\r\n };\r\n\r\n Odometer.prototype.resetFormat = function() {\r\n var format, fractional, parsed, precision, radix, repeating, _ref, _ref1;\r\n format = (_ref = this.options.format) != null ? _ref : DIGIT_FORMAT;\r\n format || (format = 'd');\r\n parsed = FORMAT_PARSER.exec(format);\r\n if (!parsed) {\r\n throw new Error(\"Odometer: Unparsable digit format\");\r\n }\r\n _ref1 = parsed.slice(1, 4), repeating = _ref1[0], radix = _ref1[1], fractional = _ref1[2];\r\n precision = (fractional != null ? fractional.length : void 0) || 0;\r\n return this.format = {\r\n repeating: repeating,\r\n radix: radix,\r\n precision: precision\r\n };\r\n };\r\n\r\n Odometer.prototype.render = function(value) {\r\n var classes, cls, match, newClasses, theme, _i, _len;\r\n if (value == null) {\r\n value = this.value;\r\n }\r\n this.stopWatchingMutations();\r\n this.resetFormat();\r\n this.inside.innerHTML = '';\r\n theme = this.options.theme;\r\n classes = this.el.className.split(' ');\r\n newClasses = [];\r\n for (_i = 0, _len = classes.length; _i < _len; _i++) {\r\n cls = classes[_i];\r\n if (!cls.length) {\r\n continue;\r\n }\r\n if (match = /^odometer-theme-(.+)$/.exec(cls)) {\r\n theme = match[1];\r\n continue;\r\n }\r\n if (/^odometer(-|$)/.test(cls)) {\r\n continue;\r\n }\r\n newClasses.push(cls);\r\n }\r\n newClasses.push('odometer');\r\n if (!TRANSITION_SUPPORT) {\r\n newClasses.push('odometer-no-transitions');\r\n }\r\n if (theme) {\r\n newClasses.push(\"odometer-theme-\" + theme);\r\n } else {\r\n newClasses.push(\"odometer-auto-theme\");\r\n }\r\n this.el.className = newClasses.join(' ');\r\n this.ribbons = {};\r\n this.formatDigits(value);\r\n return this.startWatchingMutations();\r\n };\r\n\r\n Odometer.prototype.formatDigits = function(value) {\r\n var digit, valueDigit, valueString, wholePart, _i, _j, _len, _len1, _ref, _ref1;\r\n this.digits = [];\r\n if (this.options.formatFunction) {\r\n valueString = this.options.formatFunction(value);\r\n _ref = valueString.split('').reverse();\r\n for (_i = 0, _len = _ref.length; _i < _len; _i++) {\r\n valueDigit = _ref[_i];\r\n if (valueDigit.match(/0-9/)) {\r\n digit = this.renderDigit();\r\n digit.querySelector('.odometer-value').innerHTML = valueDigit;\r\n this.digits.push(digit);\r\n this.insertDigit(digit);\r\n } else {\r\n this.addSpacer(valueDigit);\r\n }\r\n }\r\n } else {\r\n wholePart = !this.format.precision || !fractionalPart(value) || false;\r\n _ref1 = value.toString().split('').reverse();\r\n for (_j = 0, _len1 = _ref1.length; _j < _len1; _j++) {\r\n digit = _ref1[_j];\r\n if (digit === '.') {\r\n wholePart = true;\r\n }\r\n this.addDigit(digit, wholePart);\r\n }\r\n }\r\n };\r\n\r\n Odometer.prototype.update = function(newValue) {\r\n var diff,\r\n _this = this;\r\n newValue = this.cleanValue(newValue);\r\n if (!(diff = newValue - this.value)) {\r\n return;\r\n }\r\n removeClass(this.el, 'odometer-animating-up odometer-animating-down odometer-animating');\r\n if (diff > 0) {\r\n addClass(this.el, 'odometer-animating-up');\r\n } else {\r\n addClass(this.el, 'odometer-animating-down');\r\n }\r\n this.stopWatchingMutations();\r\n this.animate(newValue);\r\n this.startWatchingMutations();\r\n setTimeout(function() {\r\n _this.el.offsetHeight;\r\n return addClass(_this.el, 'odometer-animating');\r\n }, 0);\r\n return this.value = newValue;\r\n };\r\n\r\n Odometer.prototype.renderDigit = function() {\r\n return createFromHTML(DIGIT_HTML);\r\n };\r\n\r\n Odometer.prototype.insertDigit = function(digit, before) {\r\n if (before != null) {\r\n return this.inside.insertBefore(digit, before);\r\n } else if (!this.inside.children.length) {\r\n return this.inside.appendChild(digit);\r\n } else {\r\n return this.inside.insertBefore(digit, this.inside.children[0]);\r\n }\r\n };\r\n\r\n Odometer.prototype.addSpacer = function(chr, before, extraClasses) {\r\n var spacer;\r\n spacer = createFromHTML(FORMAT_MARK_HTML);\r\n spacer.innerHTML = chr;\r\n if (extraClasses) {\r\n addClass(spacer, extraClasses);\r\n }\r\n return this.insertDigit(spacer, before);\r\n };\r\n\r\n Odometer.prototype.addDigit = function(value, repeating) {\r\n var chr, digit, resetted, _ref;\r\n if (repeating == null) {\r\n repeating = true;\r\n }\r\n if (value === '-') {\r\n return this.addSpacer(value, null, 'odometer-negation-mark');\r\n }\r\n if (value === '.') {\r\n return this.addSpacer((_ref = this.format.radix) != null ? _ref : '.', null, 'odometer-radix-mark');\r\n }\r\n if (repeating) {\r\n resetted = false;\r\n while (true) {\r\n if (!this.format.repeating.length) {\r\n if (resetted) {\r\n throw new Error(\"Bad odometer format without digits\");\r\n }\r\n this.resetFormat();\r\n resetted = true;\r\n }\r\n chr = this.format.repeating[this.format.repeating.length - 1];\r\n this.format.repeating = this.format.repeating.substring(0, this.format.repeating.length - 1);\r\n if (chr === 'd') {\r\n break;\r\n }\r\n this.addSpacer(chr);\r\n }\r\n }\r\n digit = this.renderDigit();\r\n digit.querySelector('.odometer-value').innerHTML = value;\r\n this.digits.push(digit);\r\n return this.insertDigit(digit);\r\n };\r\n\r\n Odometer.prototype.animate = function(newValue) {\r\n if (!TRANSITION_SUPPORT || this.options.animation === 'count') {\r\n return this.animateCount(newValue);\r\n } else {\r\n return this.animateSlide(newValue);\r\n }\r\n };\r\n\r\n Odometer.prototype.animateCount = function(newValue) {\r\n var cur, diff, last, start, tick,\r\n _this = this;\r\n if (!(diff = +newValue - this.value)) {\r\n return;\r\n }\r\n start = last = now();\r\n cur = this.value;\r\n return (tick = function() {\r\n var delta, dist, fraction;\r\n if ((now() - start) > _this.options.duration) {\r\n _this.value = newValue;\r\n _this.render();\r\n trigger(_this.el, 'odometerdone');\r\n return;\r\n }\r\n delta = now() - last;\r\n if (delta > COUNT_MS_PER_FRAME) {\r\n last = now();\r\n fraction = delta / _this.options.duration;\r\n dist = diff * fraction;\r\n cur += dist;\r\n _this.render(Math.round(cur));\r\n }\r\n if (requestAnimationFrame != null) {\r\n return requestAnimationFrame(tick);\r\n } else {\r\n return setTimeout(tick, COUNT_MS_PER_FRAME);\r\n }\r\n })();\r\n };\r\n\r\n Odometer.prototype.getDigitCount = function() {\r\n var i, max, value, values, _i, _len;\r\n values = 1 <= arguments.length ? __slice.call(arguments, 0) : [];\r\n for (i = _i = 0, _len = values.length; _i < _len; i = ++_i) {\r\n value = values[i];\r\n values[i] = Math.abs(value);\r\n }\r\n max = Math.max.apply(Math, values);\r\n return Math.ceil(Math.log(max + 1) / Math.log(10));\r\n };\r\n\r\n Odometer.prototype.getFractionalDigitCount = function() {\r\n var i, parser, parts, value, values, _i, _len;\r\n values = 1 <= arguments.length ? __slice.call(arguments, 0) : [];\r\n parser = /^\\-?\\d*\\.(\\d*?)0*$/;\r\n for (i = _i = 0, _len = values.length; _i < _len; i = ++_i) {\r\n value = values[i];\r\n values[i] = value.toString();\r\n parts = parser.exec(values[i]);\r\n if (parts == null) {\r\n values[i] = 0;\r\n } else {\r\n values[i] = parts[1].length;\r\n }\r\n }\r\n return Math.max.apply(Math, values);\r\n };\r\n\r\n Odometer.prototype.resetDigits = function() {\r\n this.digits = [];\r\n this.ribbons = [];\r\n this.inside.innerHTML = '';\r\n return this.resetFormat();\r\n };\r\n\r\n Odometer.prototype.animateSlide = function(newValue) {\r\n var boosted, cur, diff, digitCount, digits, dist, end, fractionalCount, frame, frames, i, incr, j, mark, numEl, oldValue, start, _base, _i, _j, _k, _l, _len, _len1, _len2, _m, _ref, _results;\r\n oldValue = this.value;\r\n fractionalCount = this.getFractionalDigitCount(oldValue, newValue);\r\n if (fractionalCount) {\r\n newValue = newValue * Math.pow(10, fractionalCount);\r\n oldValue = oldValue * Math.pow(10, fractionalCount);\r\n }\r\n if (!(diff = newValue - oldValue)) {\r\n return;\r\n }\r\n this.bindTransitionEnd();\r\n digitCount = this.getDigitCount(oldValue, newValue);\r\n digits = [];\r\n boosted = 0;\r\n for (i = _i = 0; 0 <= digitCount ? _i < digitCount : _i > digitCount; i = 0 <= digitCount ? ++_i : --_i) {\r\n start = truncate(oldValue / Math.pow(10, digitCount - i - 1));\r\n end = truncate(newValue / Math.pow(10, digitCount - i - 1));\r\n dist = end - start;\r\n if (Math.abs(dist) > this.MAX_VALUES) {\r\n frames = [];\r\n incr = dist / (this.MAX_VALUES + this.MAX_VALUES * boosted * DIGIT_SPEEDBOOST);\r\n cur = start;\r\n while ((dist > 0 && cur < end) || (dist < 0 && cur > end)) {\r\n frames.push(Math.round(cur));\r\n cur += incr;\r\n }\r\n if (frames[frames.length - 1] !== end) {\r\n frames.push(end);\r\n }\r\n boosted++;\r\n } else {\r\n frames = (function() {\r\n _results = [];\r\n for (var _j = start; start <= end ? _j <= end : _j >= end; start <= end ? _j++ : _j--){ _results.push(_j); }\r\n return _results;\r\n }).apply(this);\r\n }\r\n for (i = _k = 0, _len = frames.length; _k < _len; i = ++_k) {\r\n frame = frames[i];\r\n frames[i] = Math.abs(frame % 10);\r\n }\r\n digits.push(frames);\r\n }\r\n this.resetDigits();\r\n _ref = digits.reverse();\r\n for (i = _l = 0, _len1 = _ref.length; _l < _len1; i = ++_l) {\r\n frames = _ref[i];\r\n if (!this.digits[i]) {\r\n this.addDigit(' ', i >= fractionalCount);\r\n }\r\n if ((_base = this.ribbons)[i] == null) {\r\n _base[i] = this.digits[i].querySelector('.odometer-ribbon-inner');\r\n }\r\n this.ribbons[i].innerHTML = '';\r\n if (diff < 0) {\r\n frames = frames.reverse();\r\n }\r\n for (j = _m = 0, _len2 = frames.length; _m < _len2; j = ++_m) {\r\n frame = frames[j];\r\n numEl = document.createElement('div');\r\n numEl.className = 'odometer-value';\r\n numEl.innerHTML = frame;\r\n this.ribbons[i].appendChild(numEl);\r\n if (j === frames.length - 1) {\r\n addClass(numEl, 'odometer-last-value');\r\n }\r\n if (j === 0) {\r\n addClass(numEl, 'odometer-first-value');\r\n }\r\n }\r\n }\r\n if (start < 0) {\r\n this.addDigit('-');\r\n }\r\n mark = this.inside.querySelector('.odometer-radix-mark');\r\n if (mark != null) {\r\n mark.parent.removeChild(mark);\r\n }\r\n if (fractionalCount) {\r\n return this.addSpacer(this.format.radix, this.digits[fractionalCount - 1], 'odometer-radix-mark');\r\n }\r\n };\r\n\r\n return Odometer;\r\n\r\n })();\r\n\r\n Odometer.options = (_ref = window.odometerOptions) != null ? _ref : {};\r\n\r\n setTimeout(function() {\r\n var k, v, _base, _ref1, _results;\r\n if (window.odometerOptions) {\r\n _ref1 = window.odometerOptions;\r\n _results = [];\r\n for (k in _ref1) {\r\n v = _ref1[k];\r\n _results.push((_base = Odometer.options)[k] != null ? (_base = Odometer.options)[k] : _base[k] = v);\r\n }\r\n return _results;\r\n }\r\n }, 0);\r\n\r\n Odometer.init = function() {\r\n var el, elements, _i, _len, _ref1, _results;\r\n if (document.querySelectorAll == null) {\r\n return;\r\n }\r\n elements = document.querySelectorAll(Odometer.options.selector || '.odometer');\r\n _results = [];\r\n for (_i = 0, _len = elements.length; _i < _len; _i++) {\r\n el = elements[_i];\r\n _results.push(el.odometer = new Odometer({\r\n el: el,\r\n value: (_ref1 = el.innerText) != null ? _ref1 : el.textContent\r\n }));\r\n }\r\n return _results;\r\n };\r\n\r\n if ((((_ref1 = document.documentElement) != null ? _ref1.doScroll : void 0) != null) && (document.createEventObject != null)) {\r\n _old = document.onreadystatechange;\r\n document.onreadystatechange = function() {\r\n if (document.readyState === 'complete' && Odometer.options.auto !== false) {\r\n Odometer.init();\r\n }\r\n return _old != null ? _old.apply(this, arguments) : void 0;\r\n };\r\n } else {\r\n document.addEventListener('DOMContentLoaded', function() {\r\n if (Odometer.options.auto !== false) {\r\n return Odometer.init();\r\n }\r\n }, false);\r\n }\r\n\r\n if (typeof define === 'function' && define.amd) {\r\n define(['jquery'], function() {\r\n return Odometer;\r\n });\r\n } else if (typeof exports !== \"undefined\" && exports !== null) {\r\n module.exports = Odometer;\r\n } else {\r\n window.Odometer = Odometer;\r\n }\r\n\r\n}).call(this);\r\n\r\n/*\r\n * jQuery Tabs plugin\r\n */\r\n;(function($){\r\n $.fn.contentTabs = function(o){\r\n // default options\r\n var options = $.extend({\r\n activeClass:'active',\r\n addToParent:false,\r\n autoHeight:false,\r\n autoRotate:false,\r\n checkHash:false,\r\n animSpeed:400,\r\n switchTime:3000,\r\n effect: 'none', // \"fade\", \"slide\"\r\n tabLinks:'a',\r\n attrib:'href',\r\n event:'click'\r\n },o);\r\n\r\n return this.each(function(){\r\n var tabset = $(this), tabs = $();\r\n var tabLinks = tabset.find(options.tabLinks);\r\n var tabLinksParents = tabLinks.parent();\r\n var prevActiveLink = tabLinks.eq(0), currentTab, animating;\r\n var tabHolder;\r\n\r\n // handle location hash\r\n if(options.checkHash && tabLinks.filter('[' + options.attrib + '=\"' + location.hash + '\"]').length) {\r\n (options.addToParent ? tabLinksParents : tabLinks).removeClass(options.activeClass);\r\n setTimeout(function() {\r\n window.scrollTo(0,0);\r\n },1);\r\n }\r\n\r\n // init tabLinks\r\n tabLinks.each(function(){\r\n var link = $(this);\r\n var href = link.attr(options.attrib);\r\n var parent = link.parent();\r\n href = href.substr(href.lastIndexOf('#'));\r\n\r\n // get elements\r\n var tab = $(href);\r\n tabs = tabs.add(tab);\r\n link.data('cparent', parent);\r\n link.data('ctab', tab);\r\n\r\n // find tab holder\r\n if(!tabHolder && tab.length) {\r\n tabHolder = tab.parent();\r\n }\r\n\r\n // show only active tab\r\n var classOwner = options.addToParent ? parent : link;\r\n if(classOwner.hasClass(options.activeClass) || (options.checkHash && location.hash === href)) {\r\n classOwner.addClass(options.activeClass);\r\n prevActiveLink = link; currentTab = tab;\r\n tab.removeClass(tabHiddenClass).width('');\r\n contentTabsEffect[options.effect].show({tab:tab, fast:true});\r\n } else {\r\n var tabWidth = tab.width();\r\n if(tabWidth) {\r\n tab.width(tabWidth);\r\n }\r\n tab.addClass(tabHiddenClass);\r\n }\r\n\r\n // event handler\r\n link.bind(options.event, function(e){\r\n if(link !== prevActiveLink && !animating) {\r\n switchTab(prevActiveLink, link);\r\n prevActiveLink = link;\r\n }\r\n });\r\n if(options.attrib === 'href') {\r\n link.bind('click', function(e){\r\n e.preventDefault();\r\n });\r\n }\r\n });\r\n\r\n // tab switch function\r\n function switchTab(oldLink, newLink) {\r\n animating = true;\r\n var oldTab = oldLink.data('ctab');\r\n var newTab = newLink.data('ctab');\r\n prevActiveLink = newLink;\r\n currentTab = newTab;\r\n\r\n // refresh pagination links\r\n (options.addToParent ? tabLinksParents : tabLinks).removeClass(options.activeClass);\r\n (options.addToParent ? newLink.data('cparent') : newLink).addClass(options.activeClass);\r\n\r\n // hide old tab\r\n resizeHolder(oldTab, true);\r\n contentTabsEffect[options.effect].hide({\r\n speed: options.animSpeed,\r\n tab:oldTab,\r\n complete: function() {\r\n // show current tab\r\n resizeHolder(newTab.removeClass(tabHiddenClass).width(''));\r\n contentTabsEffect[options.effect].show({\r\n speed: options.animSpeed,\r\n tab:newTab,\r\n complete: function() {\r\n if(!oldTab.is(newTab)) {\r\n oldTab.width(oldTab.width()).addClass(tabHiddenClass);\r\n }\r\n animating = false;\r\n resizeHolder(newTab, false);\r\n autoRotate();\r\n }\r\n });\r\n }\r\n });\r\n }\r\n\r\n // holder auto height\r\n function resizeHolder(block, state) {\r\n var curBlock = block && block.length ? block : currentTab;\r\n if(options.autoHeight && curBlock) {\r\n tabHolder.stop();\r\n if(state === false) {\r\n tabHolder.css({height:''});\r\n } else {\r\n var origStyles = curBlock.attr('style');\r\n curBlock.show().css({width:curBlock.width()});\r\n var tabHeight = curBlock.outerHeight(true);\r\n if(!origStyles) curBlock.removeAttr('style'); else curBlock.attr('style', origStyles);\r\n if(state === true) {\r\n tabHolder.css({height: tabHeight});\r\n } else {\r\n tabHolder.animate({height: tabHeight}, {duration: options.animSpeed});\r\n }\r\n }\r\n }\r\n }\r\n if(options.autoHeight) {\r\n $(window).bind('resize orientationchange', function(){\r\n tabs.not(currentTab).removeClass(tabHiddenClass).show().each(function(){\r\n var tab = jQuery(this), tabWidth = tab.css({width:''}).width();\r\n if(tabWidth) {\r\n tab.width(tabWidth);\r\n }\r\n }).hide().addClass(tabHiddenClass);\r\n\r\n resizeHolder(currentTab, false);\r\n });\r\n }\r\n\r\n // autorotation handling\r\n var rotationTimer;\r\n function nextTab() {\r\n var activeItem = (options.addToParent ? tabLinksParents : tabLinks).filter('.' + options.activeClass);\r\n var activeIndex = (options.addToParent ? tabLinksParents : tabLinks).index(activeItem);\r\n var newLink = tabLinks.eq(activeIndex < tabLinks.length - 1 ? activeIndex + 1 : 0);\r\n prevActiveLink = tabLinks.eq(activeIndex);\r\n switchTab(prevActiveLink, newLink);\r\n }\r\n function autoRotate() {\r\n if(options.autoRotate && tabLinks.length > 1) {\r\n clearTimeout(rotationTimer);\r\n rotationTimer = setTimeout(function() {\r\n if(!animating) {\r\n nextTab();\r\n } else {\r\n autoRotate();\r\n }\r\n }, options.switchTime);\r\n }\r\n }\r\n autoRotate();\r\n });\r\n };\r\n\r\n // add stylesheet for tabs on DOMReady\r\n var tabHiddenClass = 'js-tab-hidden';\r\n $(function() {\r\n var tabStyleSheet = $('