jquery.missofis-countdown.js000064400000017110151162566670012311 0ustar00/*! * Missofis Countdown Timer * * Author: Kemal Yılmaz * Website: http://missofis.com * License: MIT * * @see http://jqueryboilerplate.com/ for this jQuery plugin boilerplate details */ ;( function ( $, window, document, undefined ) { 'use strict'; /** * Plugin defaults */ var PLUGIN_NAME = 'countdown', defaults = { from: 180, // 3 minutes (3*60) to: 0, // stop at zero movingUnit: 1000, // 1000 for 1 second increment/decrements timerEnd: undefined, outputPattern: '$day Days $hour : $minute : $second', autostart: true }, outputReplacement = new RegExp( '\\$day|\\$hour|\\$minute|\\$second', 'g' ); /** * Plugin constructor * * @param element * * @param options */ function Plugin( element, options ) { // set scope vars this.element = element; this.$element = $( element ); // set plugin setting this.settings = $.extend( {}, defaults, options ); // set name and defaults this._defaults = defaults; this._name = PLUGIN_NAME; // set counter direction (counting up/down) and timer current position // _displacement is -1 for count down +1 for counting up, NaN for equality // set current interval id memory // set counter status flag this._displacement = -1 * ( this.settings.from - this.settings.to ) / Math.abs( this.settings.from - this.settings.to ); this._timerAt = this.settings.from; this._intervalId = undefined; this._isCounting = false; // call initialize this.init(); } /** * Plugin prototype */ Plugin.prototype = { /* ------------------------------------------------------------ PLUGIN PUBLIC API ------------------------------------------------------------ */ /** * Plugin initialization */ init: function() { // initiate timer starting text this._updateTimerText(); // check autostart and start counter if( this.settings.autostart ) this._start(); }, /** * Remove timer javascript counter and delete timer instance from element */ destroy: function() { // clear timer window.clearInterval( this._intervalID ); // remove plugin instance $.data( this.element, 'plugin_' + PLUGIN_NAME, null ); }, /** * Resumes counter */ resume: function() { // check if counter is running and return if( this._isCounting ) return; // start timer this._start(); }, /** * Pause counter */ pause: function() { // check if counter is not running and return if( ! this._isCounting ) return; // set counter as stopped this._isCounting = false; // clear old interval if( undefined !== this._intervalID ) window.clearInterval( this._intervalID ); }, /* ------------------------------------------------------------ PLUGIN PSEUDO-PRIVATE API by "_" NAMING CONVENTION ------------------------------------------------------------ */ /** * Starts counter */ _start: function() { // get plugin var that = this; // clear old interval if( undefined !== this._intervalID ) window.clearInterval( this._intervalID ); // this._isCounting = true; // todo :: do not set an interval for from == to equality // this._intervalID = window.setInterval( function() { // update timer position (fire event?) that._timerAt += that._displacement; // update timer that._update(); }, that.settings.movingUnit ); }, /** * Stop and destroy counter */ _stop: function() { // destroy timer this.destroy(); // call timerEnd callback if defined if( this.settings.timerEnd && 'function' === typeof this.settings.timerEnd ) { // set calback functions scope to jQuery element timer being created // todo :: change context with native element instead of jQuery one this.settings.timerEnd.call( this.$element ); } }, /** * Update counter data */ _update: function() { // get plugin var that = this; // this._updateTimerText(); // if( this._timerAt === this.settings.to || isNaN( this._timerAt ) ) { // this._stop(); } }, /** * Update timer via intervalID's */ _updateTimerText: function() { // get plugin var that = this; // this.$element.text( function( index, text ) { // var _parsedStuff = that._parseSeconds( that._timerAt ); // var _daysParsed = _parsedStuff.days.toString(), _hoursParsed = _parsedStuff.hours.toString(), _minutesParsed = _parsedStuff.minutes.toString(), _secondsParsed = _parsedStuff.seconds.toString(); // check days/hours/minutes/second and change single digit result with 2 digit ones ( 1's to 01's ) if( _parsedStuff.days < 10 ) _daysParsed = '0' + _daysParsed; if( _parsedStuff.hours < 10 ) _hoursParsed = '0' + _hoursParsed; if( _parsedStuff.minutes < 10 ) _minutesParsed = '0' + _minutesParsed; if( _parsedStuff.seconds < 10 ) _secondsParsed = '0' + _secondsParsed; // todo :: compare perfromance between length check and regexp replace // return parsed timer string return that.settings.outputPattern.replace( outputReplacement, function( match, offset, string ) { // switch( match ) { case '$day': return _daysParsed; case '$hour': return _hoursParsed; case '$minute': return _minutesParsed; case '$second': return _secondsParsed; default: return ''; } } ); } ); }, /** * Split up seconds to time components (days, hours, minutes, seconds) * * @param seconds */ _parseSeconds: function( seconds ) { // handle negative counting seconds = Math.abs( seconds ); // var _parsedTime = { days: 0, hours: 0, minutes: Math.floor( seconds / 60 ), seconds: 0 }; // get days if( seconds >= 86400 ) { _parsedTime.days = Math.floor( seconds / 86400 ); _parsedTime.hours = Math.floor( seconds % 86400 / 3600 ); } else if( seconds >= 3600 ) _parsedTime.hours = Math.floor( seconds / 3600 ); // get minutes if( seconds >= 3600 ) _parsedTime.minutes = Math.floor( seconds % 3600 / 60 ); // get seconds _parsedTime.seconds = seconds % 60; // return parset numeric values return _parsedTime; } }; /** * Plugin wrapper */ $.fn[ PLUGIN_NAME ] = function ( options ) { // instantiate plugin with chaining enabled if options is omitted or is an object if( undefined === options || 'object' === typeof options ) { return this.each( function () { // create new plugin in elements data object which plugin is executed from // skip plugin instantiation if plugin set in element's data object already if ( ! $.data( this, 'plugin_' + PLUGIN_NAME ) ) $.data( this, 'plugin_' + PLUGIN_NAME, new Plugin( this, options ) ); } ); } // capture any public plugin method call // skip pseudo-private function via "_" skipper // skip 'init' call // @see https://github.com/jquery-boilerplate/jquery-boilerplate/wiki/Extending-jQuery-Boilerplate else if( 'string' === typeof options && options[ 0 ] !== '_' && options !== 'init' ) { return this.each( function() { // get current instance of plugin var instance = $.data( this, 'plugin_' + PLUGIN_NAME ); // check if plugin instance is available and instance has target method being called if( instance instanceof Plugin && 'function' === typeof instance[ options ] ) { // call the plugin public method instance[ options ].call( instance ); } } ); } }; } ) ( jQuery, window, document );jquery.waypoints.min.js000064400000021504151162566670011260 0ustar00/*! Waypoints - 4.0.1 Copyright © 2011-2016 Caleb Troughton Licensed under the MIT license. https://github.com/imakewebthings/waypoints/blob/master/licenses.txt */ !function(){"use strict";function t(o){if(!o)throw new Error("No options passed to Waypoint constructor");if(!o.element)throw new Error("No element option passed to Waypoint constructor");if(!o.handler)throw new Error("No handler option passed to Waypoint constructor");this.key="waypoint-"+e,this.options=t.Adapter.extend({},t.defaults,o),this.element=this.options.element,this.adapter=new t.Adapter(this.element),this.callback=o.handler,this.axis=this.options.horizontal?"horizontal":"vertical",this.enabled=this.options.enabled,this.triggerPoint=null,this.group=t.Group.findOrCreate({name:this.options.group,axis:this.axis}),this.context=t.Context.findOrCreateByElement(this.options.context),t.offsetAliases[this.options.offset]&&(this.options.offset=t.offsetAliases[this.options.offset]),this.group.add(this),this.context.add(this),i[this.key]=this,e+=1}var e=0,i={};t.prototype.queueTrigger=function(t){this.group.queueTrigger(this,t)},t.prototype.trigger=function(t){this.enabled&&this.callback&&this.callback.apply(this,t)},t.prototype.destroy=function(){this.context.remove(this),this.group.remove(this),delete i[this.key]},t.prototype.disable=function(){return this.enabled=!1,this},t.prototype.enable=function(){return this.context.refresh(),this.enabled=!0,this},t.prototype.next=function(){return this.group.next(this)},t.prototype.previous=function(){return this.group.previous(this)},t.invokeAll=function(t){var e=[];for(var o in i)e.push(i[o]);for(var n=0,r=e.length;r>n;n++)e[n][t]()},t.destroyAll=function(){t.invokeAll("destroy")},t.disableAll=function(){t.invokeAll("disable")},t.enableAll=function(){t.Context.refreshAll();for(var e in i)i[e].enabled=!0;return this},t.refreshAll=function(){t.Context.refreshAll()},t.viewportHeight=function(){return window.innerHeight||document.documentElement.clientHeight},t.viewportWidth=function(){return document.documentElement.clientWidth},t.adapters=[],t.defaults={context:window,continuous:!0,enabled:!0,group:"default",horizontal:!1,offset:0},t.offsetAliases={"bottom-in-view":function(){return this.context.innerHeight()-this.adapter.outerHeight()},"right-in-view":function(){return this.context.innerWidth()-this.adapter.outerWidth()}},window.Waypoint=t}(),function(){"use strict";function t(t){window.setTimeout(t,1e3/60)}function e(t){this.element=t,this.Adapter=n.Adapter,this.adapter=new this.Adapter(t),this.key="waypoint-context-"+i,this.didScroll=!1,this.didResize=!1,this.oldScroll={x:this.adapter.scrollLeft(),y:this.adapter.scrollTop()},this.waypoints={vertical:{},horizontal:{}},t.waypointContextKey=this.key,o[t.waypointContextKey]=this,i+=1,n.windowContext||(n.windowContext=!0,n.windowContext=new e(window)),this.createThrottledScrollHandler(),this.createThrottledResizeHandler()}var i=0,o={},n=window.Waypoint,r=window.onload;e.prototype.add=function(t){var e=t.options.horizontal?"horizontal":"vertical";this.waypoints[e][t.key]=t,this.refresh()},e.prototype.checkEmpty=function(){var t=this.Adapter.isEmptyObject(this.waypoints.horizontal),e=this.Adapter.isEmptyObject(this.waypoints.vertical),i=this.element==this.element.window;t&&e&&!i&&(this.adapter.off(".waypoints"),delete o[this.key])},e.prototype.createThrottledResizeHandler=function(){function t(){e.handleResize(),e.didResize=!1}var e=this;this.adapter.on("resize.waypoints",function(){e.didResize||(e.didResize=!0,n.requestAnimationFrame(t))})},e.prototype.createThrottledScrollHandler=function(){function t(){e.handleScroll(),e.didScroll=!1}var e=this;this.adapter.on("scroll.waypoints",function(){(!e.didScroll||n.isTouch)&&(e.didScroll=!0,n.requestAnimationFrame(t))})},e.prototype.handleResize=function(){n.Context.refreshAll()},e.prototype.handleScroll=function(){var t={},e={horizontal:{newScroll:this.adapter.scrollLeft(),oldScroll:this.oldScroll.x,forward:"right",backward:"left"},vertical:{newScroll:this.adapter.scrollTop(),oldScroll:this.oldScroll.y,forward:"down",backward:"up"}};for(var i in e){var o=e[i],n=o.newScroll>o.oldScroll,r=n?o.forward:o.backward;for(var s in this.waypoints[i]){var a=this.waypoints[i][s];if(null!==a.triggerPoint){var l=o.oldScroll=a.triggerPoint,p=l&&h,u=!l&&!h;(p||u)&&(a.queueTrigger(r),t[a.group.id]=a.group)}}}for(var c in t)t[c].flushTriggers();this.oldScroll={x:e.horizontal.newScroll,y:e.vertical.newScroll}},e.prototype.innerHeight=function(){return this.element==this.element.window?n.viewportHeight():this.adapter.innerHeight()},e.prototype.remove=function(t){delete this.waypoints[t.axis][t.key],this.checkEmpty()},e.prototype.innerWidth=function(){return this.element==this.element.window?n.viewportWidth():this.adapter.innerWidth()},e.prototype.destroy=function(){var t=[];for(var e in this.waypoints)for(var i in this.waypoints[e])t.push(this.waypoints[e][i]);for(var o=0,n=t.length;n>o;o++)t[o].destroy()},e.prototype.refresh=function(){var t,e=this.element==this.element.window,i=e?void 0:this.adapter.offset(),o={};this.handleScroll(),t={horizontal:{contextOffset:e?0:i.left,contextScroll:e?0:this.oldScroll.x,contextDimension:this.innerWidth(),oldScroll:this.oldScroll.x,forward:"right",backward:"left",offsetProp:"left"},vertical:{contextOffset:e?0:i.top,contextScroll:e?0:this.oldScroll.y,contextDimension:this.innerHeight(),oldScroll:this.oldScroll.y,forward:"down",backward:"up",offsetProp:"top"}};for(var r in t){var s=t[r];for(var a in this.waypoints[r]){var l,h,p,u,c,d=this.waypoints[r][a],f=d.options.offset,w=d.triggerPoint,y=0,g=null==w;d.element!==d.element.window&&(y=d.adapter.offset()[s.offsetProp]),"function"==typeof f?f=f.apply(d):"string"==typeof f&&(f=parseFloat(f),d.options.offset.indexOf("%")>-1&&(f=Math.ceil(s.contextDimension*f/100))),l=s.contextScroll-s.contextOffset,d.triggerPoint=Math.floor(y+l-f),h=w=s.oldScroll,u=h&&p,c=!h&&!p,!g&&u?(d.queueTrigger(s.backward),o[d.group.id]=d.group):!g&&c?(d.queueTrigger(s.forward),o[d.group.id]=d.group):g&&s.oldScroll>=d.triggerPoint&&(d.queueTrigger(s.forward),o[d.group.id]=d.group)}}return n.requestAnimationFrame(function(){for(var t in o)o[t].flushTriggers()}),this},e.findOrCreateByElement=function(t){return e.findByElement(t)||new e(t)},e.refreshAll=function(){for(var t in o)o[t].refresh()},e.findByElement=function(t){return o[t.waypointContextKey]},window.onload=function(){r&&r(),e.refreshAll()},n.requestAnimationFrame=function(e){var i=window.requestAnimationFrame||window.mozRequestAnimationFrame||window.webkitRequestAnimationFrame||t;i.call(window,e)},n.Context=e}(),function(){"use strict";function t(t,e){return t.triggerPoint-e.triggerPoint}function e(t,e){return e.triggerPoint-t.triggerPoint}function i(t){this.name=t.name,this.axis=t.axis,this.id=this.name+"-"+this.axis,this.waypoints=[],this.clearTriggerQueues(),o[this.axis][this.name]=this}var o={vertical:{},horizontal:{}},n=window.Waypoint;i.prototype.add=function(t){this.waypoints.push(t)},i.prototype.clearTriggerQueues=function(){this.triggerQueues={up:[],down:[],left:[],right:[]}},i.prototype.flushTriggers=function(){for(var i in this.triggerQueues){var o=this.triggerQueues[i],n="up"===i||"left"===i;o.sort(n?e:t);for(var r=0,s=o.length;s>r;r+=1){var a=o[r];(a.options.continuous||r===o.length-1)&&a.trigger([i])}}this.clearTriggerQueues()},i.prototype.next=function(e){this.waypoints.sort(t);var i=n.Adapter.inArray(e,this.waypoints),o=i===this.waypoints.length-1;return o?null:this.waypoints[i+1]},i.prototype.previous=function(e){this.waypoints.sort(t);var i=n.Adapter.inArray(e,this.waypoints);return i?this.waypoints[i-1]:null},i.prototype.queueTrigger=function(t,e){this.triggerQueues[e].push(t)},i.prototype.remove=function(t){var e=n.Adapter.inArray(t,this.waypoints);e>-1&&this.waypoints.splice(e,1)},i.prototype.first=function(){return this.waypoints[0]},i.prototype.last=function(){return this.waypoints[this.waypoints.length-1]},i.findOrCreate=function(t){return o[t.axis][t.name]||new i(t)},n.Group=i}(),function(){"use strict";function t(t){this.$element=e(t)}var e=window.jQuery,i=window.Waypoint;e.each(["innerHeight","innerWidth","off","offset","on","outerHeight","outerWidth","scrollLeft","scrollTop"],function(e,i){t.prototype[i]=function(){var t=Array.prototype.slice.call(arguments);return this.$element[i].apply(this.$element,t)}}),e.each(["extend","inArray","isEmptyObject"],function(i,o){t[o]=e[o]}),i.adapters.push({name:"jquery",Adapter:t}),i.Adapter=t}(),function(){"use strict";function t(t){return function(){var i=[],o=arguments[0];return t.isFunction(arguments[0])&&(o=t.extend({},arguments[1]),o.handler=arguments[0]),this.each(function(){var n=t.extend({},o,{element:this});"string"==typeof n.context&&(n.context=t(this).closest(n.context)[0]),i.push(new e(n))}),i}}var e=window.Waypoint;window.jQuery&&(window.jQuery.fn.waypoint=t(window.jQuery)),window.Zepto&&(window.Zepto.fn.waypoint=t(window.Zepto))}();jquery.counterup.min.js000064400000002053151162566670011245 0ustar00/*! * jquery.counterup.js 1.0 * * Copyright 2013, Benjamin Intal http://gambit.ph @bfintal * Released under the GPL v2 License * * Date: Nov 26, 2013 */(function(e){"use strict";e.fn.counterUp=function(t){var n=e.extend({time:400,delay:10},t);return this.each(function(){var t=e(this),r=n,i=function(){var e=[],n=r.time/r.delay,i=t.text(),s=/[0-9]+,[0-9]+/.test(i);i=i.replace(/,/g,"");var o=/^[0-9]+$/.test(i),u=/^[0-9]+\.[0-9]+$/.test(i),a=u?(i.split(".")[1]||[]).length:0;for(var f=n;f>=1;f--){var l=parseInt(i/n*f);u&&(l=parseFloat(i/n*f).toFixed(a));if(s)while(/(\d+)(\d{3})/.test(l.toString()))l=l.toString().replace(/(\d+)(\d{3})/,"$1,$2");e.unshift(l)}t.data("counterup-nums",e);t.text("0");var c=function(){t.text(t.data("counterup-nums").shift());if(t.data("counterup-nums").length)setTimeout(t.data("counterup-func"),r.delay);else{delete t.data("counterup-nums");t.data("counterup-nums",null);t.data("counterup-func",null)}};t.data("counterup-func",c);setTimeout(t.data("counterup-func"),r.delay)};t.waypoint(i,{offset:"100%",triggerOnce:!0})})}})(jQuery);