forked from jonthornton/jquery-timepicker
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathjquery.timepicker.min.js
1 lines (1 loc) · 6.48 KB
/
jquery.timepicker.min.js
1
!function(a){function f(b){var d=b.data("settings"),e=b.siblings(".ui-timepicker-list");e&&e.length&&e.remove(),e=a("<ul />"),e.attr("tabindex",-1),e.addClass("ui-timepicker-list"),d.className&&e.addClass(d.className);var f=b.css("zIndex");f=f+0==f?f+2:2,e.css({display:"none",position:"absolute",left:b.position().left,zIndex:f}),d.minTime!==null&&d.showDuration&&e.addClass("ui-timepicker-with-duration");var g=d.durationTime!==null?d.durationTime:d.minTime,i=d.minTime!==null?d.minTime:0,m=d.maxTime!==null?d.maxTime:i+c-1;m<=i&&(m+=c);for(var n=i;n<=m;n+=d.step*60){var o=n%c,p=a("<li />");p.data("time",o),p.text(l(o,d.timeFormat));if(d.minTime!==null&&d.showDuration){var q=a("<span />");q.addClass("ui-timepicker-duration"),q.text(" ("+k(n-g)+")"),p.append(q)}e.append(p)}b.after(e),h(b,e),e.delegate("li","click",{timepicker:b},function(c){b.addClass("ui-timepicker-hideme"),b[0].focus(),e.find("li").removeClass("ui-timepicker-selected"),a(this).addClass("ui-timepicker-selected"),j(b),e.hide()})}function g(b,c,d){if(!d&&d!==0)return!1;var e=b.data("settings"),f=!1;return c.find("li").each(function(b,c){var g=a(c);if(Math.abs(g.data("time")-d)<=e.step*30)return f=g,!1}),f}function h(a,b){var c=m(a.val()),d=g(a,b,c);d&&d.data("time")==c&&d.addClass("ui-timepicker-selected")}function i(b){var c=a(this),d=c.siblings(".ui-timepicker-list");if(!d.is(":visible")){if(b.keyCode!=40)return!0;c.focus()}switch(b.keyCode){case 13:return j(c),e.hide.apply(this),b.preventDefault(),!1;case 38:var f=d.find(".ui-timepicker-selected");if(!f.length){var f;d.children().each(function(b,c){if(a(c).position().top>0)return f=a(c),!1}),f.addClass("ui-timepicker-selected")}else f.is(":first-child")||(f.removeClass("ui-timepicker-selected"),f.prev().addClass("ui-timepicker-selected"),f.prev().position().top<f.outerHeight()&&d.scrollTop(d.scrollTop()-f.outerHeight()));break;case 40:var f=d.find(".ui-timepicker-selected");if(f.length==0){var f;d.children().each(function(b,c){if(a(c).position().top>0)return f=a(c),!1}),f.addClass("ui-timepicker-selected")}else f.is(":last-child")||(f.removeClass("ui-timepicker-selected"),f.next().addClass("ui-timepicker-selected"),f.next().position().top+2*f.outerHeight()>d.outerHeight()&&d.scrollTop(d.scrollTop()+f.outerHeight()));break;case 27:d.find("li").removeClass("ui-timepicker-selected"),d.hide();break;case 9:case 16:case 17:case 18:case 19:case 20:case 33:case 34:case 35:case 36:case 37:case 39:case 45:return;default:d.find("li").removeClass("ui-timepicker-selected");return}}function j(a){var b=a.data("settings"),c=a.siblings(".ui-timepicker-list"),d=null,e=c.find(".ui-timepicker-selected");if(e.length)var d=e.data("time");else if(a.val()){var d=m(a.val());h(a,c)}if(d!==null){var f=l(d,b.timeFormat);a.attr("value",f)}a.trigger("change").trigger("changeTime")}function k(a){var b=Math.round(a/60);if(b<60)return b+" mins";if(b==60)return"1 hr";var c=b/60;return c.toFixed(1)+" hrs"}function l(a,c){var d=new Date(b.valueOf()+a*1e3),e="";for(var f=0;f<c.length;f++){var g=c.charAt(f);switch(g){case"a":e+=d.getHours()>11?"pm":"am";break;case"A":e+=d.getHours()>11?"PM":"AM";break;case"g":var h=d.getHours()%12;e+=h==0?"12":h;break;case"G":e+=d.getHours();break;case"h":var h=d.getHours()%12;h!=0&&h<10&&(h="0"+h),e+=h==0?"12":h;break;case"H":var h=d.getHours();e+=h>9?h:"0"+h;break;case"i":var i=d.getMinutes();e+=i>9?i:"0"+i;break;case"s":var a=d.getSeconds();e+=a>9?a:"0"+a;break;default:e+=g}}return e}function m(a){if(a=="")return null;if(a+0==a)return a;typeof a=="object"&&(a=a.getHours()+":"+a.getMinutes());var b=new Date(0),c=a.toLowerCase().match(/(\d+)(?::(\d\d))?\s*([pa]?)/);if(!c)return null;var d=parseInt(c[1]*1);if(c[3])if(d==12)var e=c[3]=="p"?12:0;else var e=d+(c[3]=="p"?12:0);else var e=d;var f=c[2]*1||0;return e*3600+f*60}var b=new Date;b.setHours(0),b.setMinutes(0),b.setSeconds(0);var c=86400,d={className:null,minTime:null,maxTime:null,durationTime:null,step:30,showDuration:!1,timeFormat:"g:ia",scrollDefaultNow:!1,scrollDefaultTime:!1},e={init:function(b){return this.each(function(){var c=a(this);if(c[0].tagName=="SELECT"){var f=a("<input />"),g={type:"text",value:c.val()},h=c[0].attributes;for(var j=0;j<h.length;j++)g[h[j].nodeName]=h[j].nodeValue;f.attr(g),c.replaceWith(f),c=f}var k=a.extend({},d);b&&(k=a.extend(k,b)),k.minTime&&(k.minTime=m(k.minTime)),k.maxTime&&(k.maxTime=m(k.maxTime)),k.durationTime&&(k.durationTime=m(k.durationTime)),c.data("settings",k),c.attr("autocomplete","off"),c.click(e.show).focus(e.show).keydown(i),c.addClass("ui-timepicker-input");if(c.val()){var n=l(m(c.val()),k.timeFormat);c.val(n)}var o=a('<span class="ui-timepicker-container" />');c.wrap(o),a("body").attr("tabindex",-1).focusin(function(b){a(b.target).closest(".ui-timepicker-container").length==0&&e.hide()})})},show:function(b){var c=a(this),d=c.siblings(".ui-timepicker-list");if(c.hasClass("ui-timepicker-hideme")){c.removeClass("ui-timepicker-hideme"),d.hide();return}if(d.is(":visible"))return;e.hide(),d.length==0&&(f(c),d=c.siblings(".ui-timepicker-list"));var h=parseInt(c.css("marginTop").slice(0,-2));c.offset().top+c.outerHeight(!0)+d.outerHeight()>a(window).height()+a(window).scrollTop()?d.css({top:c.position().top+h-d.outerHeight()}):d.css({top:c.position().top+h+c.outerHeight()}),d.show();var i=c.data("settings"),j=d.find(".ui-timepicker-selected");j.length||(c.val()?j=g(c,d,m(c.val())):i.minTime===null&&i.scrollDefaultNow?j=g(c,d,m(new Date)):i.scrollDefaultTime!==!1&&(j=g(c,d,m(i.scrollDefaultTime))));if(j&&j.length){var k=d.scrollTop()+j.position().top-j.outerHeight();d.scrollTop(k)}else d.scrollTop(0);c.trigger("showTimepicker")},hide:function(b){a(".ui-timepicker-list:visible").each(function(){var b=a(this),c=b.siblings(".ui-timepicker-input");j(c),b.hide(),c.trigger("hideTimepicker")})},option:function(b,c){var d=a(this),e=d.data("settings"),f=d.siblings(".ui-timepicker-list");if(typeof b=="object")e=a.extend(e,b);else if(typeof b=="string"&&typeof c!="undefined")e[b]=c;else if(typeof b=="string")return e[b];e.minTime&&(e.minTime=m(e.minTime)),e.maxTime&&(e.maxTime=m(e.maxTime)),e.durationTime&&(e.durationTime=m(e.durationTime)),d.data("settings",e),f.remove()},getSecondsFromMidnight:function(){return m(a(this).val())},getTime:function(){return new Date(b.valueOf()+m(a(this).val())*1e3)},setTime:function(b){var c=a(this),d=l(m(b),c.data("settings").timeFormat);c.val(d)}};a.fn.timepicker=function(b){if(e[b])return e[b].apply(this,Array.prototype.slice.call(arguments,1));if(typeof b=="object"||!b)return e.init.apply(this,arguments);a.error("Method "+b+" does not exist on jQuery.timepicker")}}(jQuery)