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