forked from perifer/timePicker
-
Notifications
You must be signed in to change notification settings - Fork 0
/
jquery.timePicker.min.js
1 lines (1 loc) · 3.26 KB
/
jquery.timePicker.min.js
1
(function(e){e.fn.timePicker=function(h){var i=e.extend({},e.fn.timePicker.defaults,h);return this.each(function(){e.timePicker(this,i);});};e.timePicker=function(j,h){var i=e(j)[0];return i.timePicker||(i.timePicker=new jQuery._timePicker(i,h));};e._timePicker=function(r,m){var u=false;var s=false;var k=d(m.startTime,m);var p=d(m.endTime,m);e(r).attr("autocomplete","OFF");var j=[];var l=new Date(k);while(l<=p){j[j.length]=g(l,m);l=new Date(l.setMinutes(l.getMinutes()+m.step));}var t=e('<div class="time-picker'+(m.show24Hours?"":" time-picker-12hours")+'"></div>');var n=e("<ul></ul>");for(var o=0;o<j.length;o++){n.append("<li>"+j[o]+"</li>");}t.append(n);t.appendTo("body").hide();t.mouseover(function(){u=true;}).mouseout(function(){u=false;});e("li",n).mouseover(function(){if(!s){e("li.selected",t).removeClass("selected");e(this).addClass("selected");}}).mousedown(function(){u=true;}).click(function(){f(r,this,t,m);u=false;});var q=function(){if(t.is(":visible")){return false;}e("li",t).removeClass("selected");var x=e(r).offset();t.css({top:x.top+r.offsetHeight,left:x.left});t.show();var z=r.value?b(r.value,m):k;var y=k.getHours()*60+k.getMinutes();var w=(z.getHours()*60+z.getMinutes())-y;var i=Math.round(w/m.step);var v=a(new Date(0,0,0,0,(i*m.step+y),0));v=(k<v&&v<=p)?v:k;var A=e("li:contains("+g(v,m)+")",t);if(A.length){A.addClass("selected");t[0].scrollTop=A[0].offsetTop;}return true;};e(r).focus(q).click(q);e(r).blur(function(){if(!u){t.hide();}});var h=(e.browser.opera||e.browser.mozilla)?"keypress":"keydown";e(r)[h](function(z){var i;s=true;var y=t[0].scrollTop;switch(z.keyCode){case 38:if(q()){return false;}i=e("li.selected",n);var w=i.prev().addClass("selected")[0];if(w){i.removeClass("selected");if(w.offsetTop<y){t[0].scrollTop=y-w.offsetHeight;}}else{i.removeClass("selected");w=e("li:last",n).addClass("selected")[0];t[0].scrollTop=w.offsetTop-w.offsetHeight;}return false;break;case 40:if(q()){return false;}i=e("li.selected",n);var v=i.next().addClass("selected")[0];if(v){i.removeClass("selected");if(v.offsetTop+v.offsetHeight>y+t[0].offsetHeight){t[0].scrollTop=y+v.offsetHeight;}}else{i.removeClass("selected");v=e("li:first",n).addClass("selected")[0];t[0].scrollTop=0;}return false;break;case 13:if(t.is(":visible")){var x=e("li.selected",n)[0];f(r,x,t,m);}return false;break;case 27:t.hide();return false;break;}return true;});e(r).keyup(function(i){s=false;});this.getTime=function(){return b(r.value,m);};this.setTime=function(i){r.value=g(a(i),m);e(r).change();};};e.fn.timePicker.defaults={step:30,startTime:new Date(0,0,0,0,0,0),endTime:new Date(0,0,0,23,30,0),separator:":",show24Hours:true};function f(k,j,h,i){k.value=e(j).text();e(k).change();if(!e.browser.msie){k.focus();}h.hide();}function g(m,l){var k=m.getHours();var i=l.show24Hours?k:(((k+11)%12)+1);var j=m.getMinutes();return c(i)+l.separator+c(j)+(l.show24Hours?"":((k<12)?" AM":" PM"));}function c(h){return(h<10?"0":"")+h;}function d(h,i){return(typeof h=="object")?a(h):b(h,i);}function b(i,k){if(i){var m=i.split(k.separator);var h=parseFloat(m[0]);var j=parseFloat(m[1]);if(!k.show24Hours){if(h===12&&i.indexOf("AM")!==-1){h=0;}else{if(h!==12&&i.indexOf("PM")!==-1){h+=12;}}}var l=new Date(0,0,0,h,j,0);return a(l);}return null;}function a(h){h.setFullYear(2001);h.setMonth(0);h.setDate(0);return h;}})(jQuery);