(function(d){function q(){this.regional=[];this.regional[""]={currentText:"Now",closeText:"Done",ampm:false,timeFormat:"hh:mm tt",timeOnlyTitle:"Choose Time",timeText:"Time",hourText:"Hour",minuteText:"Minute",secondText:"Second"};this._defaults={showButtonPanel:true,timeOnly:false,showHour:true,showMinute:true,showSecond:false,showTime:true,stepHour:0.05,stepMinute:0.05,stepSecond:0.05,hour:0,minute:0,second:0,hourMin:0,minuteMin:0,secondMin:0,hourMax:23,minuteMax:59,secondMax:59,hourGrid:0,minuteGrid:0,
secondGrid:0,alwaysSetTime:true};d.extend(this._defaults,this.regional[""])}d.extend(d.ui,{timepicker:{version:"0.9.1"}});d.extend(q.prototype,{$input:null,$altInput:null,$timeObj:null,inst:null,hour_slider:null,minute_slider:null,second_slider:null,hour:0,minute:0,second:0,ampm:"",formattedDate:"",formattedTime:"",formattedDateTime:"",setDefaults:function(b){var a=this._defaults;b=b||{};d.extend(a,b);for(var c in b)if(b[c]===null||b[c]===undefined)a[c]=b[c];return this},_newInst:function(b,a){var c=
new q,e={},f;for(f in this._defaults){var j=b.attr("time:"+f);if(j)try{e[f]=eval(j)}catch(g){e[f]=j}}c._defaults=d.extend({},this._defaults,e,a,{beforeShow:function(h,k){c.hour=c._defaults.hour;c.minute=c._defaults.minute;c.second=c._defaults.second;c.ampm="";c.$input=d(h);if(a.altField)c.$altInput=d(d.datepicker._get(k,"altField")).css({cursor:"pointer"}).focus(function(){b.trigger("focus")});c.inst=k;c._addTimePicker();d.isFunction(a.beforeShow)&&a.beforeShow(h,k)},onChangeMonthYear:function(h,
k,n){c._updateDateTime(n);d.isFunction(a.onChangeMonthYear)&&a.onChangeMonthYear(h,k,n)},onClose:function(h,k){c.timeDefined===true&&b.val()!=""&&c._updateDateTime(k);d.isFunction(a.onClose)&&a.onClose(h,k)},timepicker:c});return c},_addTimePicker:function(){this.timeDefined=this._parseTime(this.$altInput?this.$input.val()+" "+this.$altInput.val():this.$input.val())?true:false;this._injectTimePicker()},_parseTime:function(b,a){var c=this._defaults.timeFormat.toString().replace(/h{1,2}/ig,"(\\d?\\d)").replace(/m{1,2}/ig,
"(\\d?\\d)").replace(/s{1,2}/ig,"(\\d?\\d)").replace(/t{1,2}/ig,"(am|pm|a|p)?").replace(/\s/g,"\\s?")+"$";c=b.match(RegExp(c,"i"));var e=this._getFormatPositions();if(a||!this._defaults.timeOnly)d.datepicker._get(this.inst,"dateFormat");if(c){if(e.t!==-1)this.ampm=(c[e.t]===undefined||c[e.t].length===0?"":c[e.t].charAt(0).toUpperCase()=="A"?"AM":"PM").toUpperCase();if(e.h!==-1)this.hour=this.ampm=="AM"&&c[e.h]=="12"?0:this.ampm=="PM"&&c[e.h]!="12"?(parseFloat(c[e.h])+12).toFixed(0):c[e.h];if(e.m!==
-1)this.minute=c[e.m];if(e.s!==-1)this.second=c[e.s]}},_getFormatPositions:function(){var b=this._defaults.timeFormat.toLowerCase().match(/(h{1,2}|m{1,2}|s{1,2}|t{1,2})/g),a={h:-1,m:-1,s:-1,t:-1};if(b)for(var c=0;c<b.length;c++)if(a[b[c].toString().charAt(0)]==-1)a[b[c].toString().charAt(0)]=c+1;return a},_injectTimePicker:function(){var b=this.inst.dpDiv,a=this._defaults,c=this,e=(a.hourMax-a.hourMax%a.stepHour).toFixed(0),f=(a.minuteMax-a.minuteMax%a.stepMinute).toFixed(0),j=(a.secondMax-a.secondMax%
a.stepSecond).toFixed(0),g=this.inst.id.toString().replace(/([^A-Za-z0-9_])/g,"");if(b.find("div#ui-timepicker-div-"+g).length===0){var h='<div class="ui-timepicker-div" id="ui-timepicker-div-'+g+'"><dl><dt class="ui_tpicker_time_label" id="ui_tpicker_time_label_'+g+'"'+(a.showTime?"":' style="display:none;"')+">"+a.timeText+'</dt><dd class="ui_tpicker_time" id="ui_tpicker_time_'+g+'"'+(a.showTime?"":' style="display:none;"')+'></dd><dt class="ui_tpicker_hour_label" id="ui_tpicker_hour_label_'+g+
'"'+(a.showHour?"":' style="display:none;"')+">"+a.hourText+"</dt>",k=0,n=0,r=0,m;if(a.showHour&&a.hourGrid>0){h+='<dd class="ui_tpicker_hour"><div id="ui_tpicker_hour_'+g+'"'+(a.showHour?"":' style="display:none;"')+'></div><div style="padding-left: 1px"><table><tr>';for(var i=a.hourMin;i<e;i+=a.hourGrid){k++;var p=a.ampm&&i>12?i-12:i;if(p<10)p="0"+p;if(a.ampm)if(i==0)p="12a";else p+=i<12?"a":"p";h+="<td>"+p+"</td>"}h+="</tr></table></div></dd>"}else h+='<dd class="ui_tpicker_hour" id="ui_tpicker_hour_'+
g+'"'+(a.showHour?"":' style="display:none;"')+"></dd>";h+='<dt class="ui_tpicker_minute_label" id="ui_tpicker_minute_label_'+g+'"'+(a.showMinute?"":' style="display:none;"')+">"+a.minuteText+"</dt>";if(a.showMinute&&a.minuteGrid>0){h+='<dd class="ui_tpicker_minute ui_tpicker_minute_'+a.minuteGrid+'"><div id="ui_tpicker_minute_'+g+'"'+(a.showMinute?"":' style="display:none;"')+'></div><div style="padding-left: 1px"><table><tr>';for(i=a.minuteMin;i<f;i+=a.minuteGrid){n++;h+="<td>"+(i<10?"0":"")+i+
"</td>"}h+="</tr></table></div></dd>"}else h+='<dd class="ui_tpicker_minute" id="ui_tpicker_minute_'+g+'"'+(a.showMinute?"":' style="display:none;"')+"></dd>";h+='<dt class="ui_tpicker_second_label" id="ui_tpicker_second_label_'+g+'"'+(a.showSecond?"":' style="display:none;"')+">"+a.secondText+"</dt>";if(a.showSecond&&a.secondGrid>0){h+='<dd class="ui_tpicker_second ui_tpicker_second_'+a.secondGrid+'"><div id="ui_tpicker_second_'+g+'"'+(a.showSecond?"":' style="display:none;"')+'></div><div style="padding-left: 1px"><table><tr>';
for(i=a.secondMin;i<j;i+=a.secondGrid){r++;h+="<td>"+(i<10?"0":"")+i+"</td>"}h+="</tr></table></div></dd>"}else h+='<dd class="ui_tpicker_second" id="ui_tpicker_second_'+g+'"'+(a.showSecond?"":' style="display:none;"')+"></dd>";h+="</dl></div>";$tp=d(h);if(a.timeOnly===true){$tp.prepend('<div class="ui-widget-header ui-helper-clearfix ui-corner-all"><div class="ui-datepicker-title">'+a.timeOnlyTitle+"</div></div>");b.find(".ui-datepicker-header, .ui-datepicker-calendar").hide()}this.hour_slider=$tp.find("#ui_tpicker_hour_"+
g).slider({orientation:"horizontal",value:this.hour,min:a.hourMin,max:e,step:a.stepHour,slide:function(l,o){c.hour_slider.slider("option","value",o.value);c._onTimeChange()}});this.minute_slider=$tp.find("#ui_tpicker_minute_"+g).slider({orientation:"horizontal",value:this.minute,min:a.minuteMin,max:f,step:a.stepMinute,slide:function(l,o){c.minute_slider.slider("option","value",o.value);c._onTimeChange()}});this.second_slider=$tp.find("#ui_tpicker_second_"+g).slider({orientation:"horizontal",value:this.second,
min:a.secondMin,max:j,step:a.stepSecond,slide:function(l,o){c.second_slider.slider("option","value",o.value);c._onTimeChange()}});if(a.showHour&&a.hourGrid>0){m=100*k*a.hourGrid/(e-a.hourMin);$tp.find(".ui_tpicker_hour table").css({width:m+"%",marginLeft:m/(-2*k)+"%",borderCollapse:"collapse"}).find("td").each(function(){d(this).click(function(){var l=d(this).html();if(a.ampm){var o=l.substring(2).toLowerCase();l=parseInt(l.substring(0,2));l=o=="a"?l==12?0:l:l==12?12:l+12}c.hour_slider.slider("option",
"value",l);c._onTimeChange()}).css({cursor:"pointer",width:100/k+"%",textAlign:"center",overflow:"hidden"})})}if(a.showMinute&&a.minuteGrid>0){m=100*n*a.minuteGrid/(f-a.minuteMin);$tp.find(".ui_tpicker_minute table").css({width:m+"%",marginLeft:m/(-2*n)+"%",borderCollapse:"collapse"}).find("td").each(function(){d(this).click(function(){c.minute_slider.slider("option","value",d(this).html());c._onTimeChange()}).css({cursor:"pointer",width:100/n+"%",textAlign:"center",overflow:"hidden"})})}a.showSecond&&
a.secondGrid>0&&$tp.find(".ui_tpicker_second table").css({width:m+"%",marginLeft:m/(-2*r)+"%",borderCollapse:"collapse"}).find("td").each(function(){d(this).click(function(){c.second_slider.slider("option","value",d(this).html());c._onTimeChange()}).css({cursor:"pointer",width:100/r+"%",textAlign:"center",overflow:"hidden"})});e=b.find(".ui-datepicker-buttonpane");e.length?e.before($tp):b.append($tp);this.$timeObj=d("#ui_tpicker_time_"+g);if(this.inst!==null){b=this.timeDefined;this._onTimeChange();
this.timeDefined=b}}},_onTimeChange:function(b){var a=this.hour_slider?this.hour_slider.slider("value"):this.hour,c=this.minute_slider?this.minute_slider.slider("value"):this.minute,e=this.second_slider?this.second_slider.slider("value"):this.second,f=a<11.5?"AM":"PM",j=false;a=a>=11.5&&a<12?12:a;if(b||this.hour!=a||this.minute!=c||this.second!=e||this.ampm.length>0&&this.ampm!=f)j=true;this.hour=parseFloat(a).toFixed(0);this.minute=parseFloat(c).toFixed(0);this.second=parseFloat(e).toFixed(0);this.ampm=
f;this._formatTime();this.$timeObj&&this.$timeObj.text(this.formattedTime);if(j){this._updateDateTime();this.timeDefined=true}},_formatTime:function(b,a,c){if(c==undefined)c=this._defaults.ampm;b=b||{hour:this.hour,minute:this.minute,second:this.second,ampm:this.ampm};var e=a||this._defaults.timeFormat.toString();if(c){var f=b.ampm=="AM"?b.hour:b.hour%12;f=Number(f)===0?12:f;e=e.toString().replace(/hh/g,(f<10?"0":"")+f).replace(/h/g,f).replace(/mm/g,(b.minute<10?"0":"")+b.minute).replace(/m/g,b.minute).replace(/ss/g,
(b.second<10?"0":"")+b.second).replace(/s/g,b.second).replace(/TT/g,b.ampm.toUpperCase()).replace(/tt/g,b.ampm.toLowerCase()).replace(/T/g,b.ampm.charAt(0).toUpperCase()).replace(/t/g,b.ampm.charAt(0).toLowerCase())}else{e=e.toString().replace(/hh/g,(b.hour<10?"0":"")+b.hour).replace(/h/g,b.hour).replace(/mm/g,(b.minute<10?"0":"")+b.minute).replace(/m/g,b.minute).replace(/ss/g,(b.second<10?"0":"")+b.second).replace(/s/g,b.second);e=d.trim(e.replace(/t/gi,""))}if(arguments.length)return e;else this.formattedTime=
e},_updateDateTime:function(){var b=this.inst,a=new Date(b.selectedYear,b.selectedMonth,b.selectedDay),c=d.datepicker._get(b,"dateFormat"),e=d.datepicker._getFormatConfig(b),f=a!==null&&this.timeDefined;a=this.formattedDate=d.datepicker.formatDate(c,a===null?new Date:a,e);if(!(b.lastVal!==undefined&&b.lastVal.length>0&&this.$input.val().length===0)){if(this._defaults.timeOnly===true)a=this.formattedTime;else if(this._defaults.timeOnly!==true&&(this._defaults.alwaysSetTime||f))if(this.$altInput)this.$altInput.val(this.formattedTime);
else a+=" "+this.formattedTime;this.formattedDateTime=a;this.$input.val(a).trigger("change")}}});d.fn.extend({timepicker:function(b){b=b||{};var a=arguments;if(typeof b=="object")a[0]=d.extend(b,{timeOnly:true});return d(this).each(function(){d.fn.datetimepicker.apply(d(this),a)})},datetimepicker:function(b){b=b||{};var a=this,c=arguments;return typeof b=="string"?b=="getDate"?d.fn.datepicker.apply(d(this),c):this.each(function(){d.fn.datepicker.apply(d(this),c)}):this.each(function(){d(this).datepicker(d.timepicker._newInst(a,
b)._defaults)})}});d.datepicker._base_selectDate=d.datepicker._selectDate;d.datepicker._selectDate=function(b,a){var c=this._getInst(d(b)[0]);if(this._get(c,"timepicker")){c.inline=c.stay_open=true;this._base_selectDate(b,a);c.inline=c.stay_open=false;this._notifyChange(c);this._updateDatepicker(c)}else this._base_selectDate(b,a)};d.datepicker._base_updateDatepicker=d.datepicker._updateDatepicker;d.datepicker._updateDatepicker=function(b){if(typeof b.stay_open!=="boolean"||b.stay_open===false){this._base_updateDatepicker(b);
this._beforeShow(b.input,b)}};d.datepicker._beforeShow=function(b,a){var c=this._get(a,"beforeShow");if(c){a.stay_open=true;c.apply(a.input?a.input[0]:null,[a.input,a]);a.stay_open=false}};d.datepicker._base_doKeyPress=d.datepicker._doKeyPress;d.datepicker._doKeyPress=function(b){var a=d.datepicker._getInst(b.target),c=d.datepicker._get(a,"timepicker");if(c){if(d.datepicker._get(a,"constrainInput")){var e=c._defaults.ampm;a=c._defaults.timeFormat.toString().replace(/[hms]/g,"").replace(/TT/g,e?"APM":
"").replace(/T/g,e?"AP":"").replace(/tt/g,e?"apm":"").replace(/t/g,e?"ap":"")+" "+d.datepicker._possibleChars(d.datepicker._get(a,"dateFormat"));c=String.fromCharCode(b.charCode===undefined?b.keyCode:b.charCode);return b.ctrlKey||c<" "||!a||a.indexOf(c)>-1}}else return d.datepicker._base_doKeyPress(b)};d.datepicker._base_doKeyUp=d.datepicker._doKeyUp;d.datepicker._doKeyUp=function(b){var a=d.datepicker._getInst(b.target),c=d.datepicker._get(a,"timepicker");if(c)if(c._defaults.timeOnly&&a.input.val()!=
a.lastVal)try{d.datepicker._updateDatepicker(a)}catch(e){d.datepicker.log(e)}return d.datepicker._base_doKeyUp(b)};d.datepicker._base_gotoToday=d.datepicker._gotoToday;d.datepicker._gotoToday=function(b){this._base_gotoToday(b);this._setTime(this._getInst(d(b)[0]),new Date)};d.datepicker._setTime=function(b,a){var c=this._get(b,"timepicker");if(c){var e=c._defaults,f=a?a.getHours():e.hour,j=a?a.getMinutes():e.minute,g=a?a.getSeconds():e.second;if(f<e.hourMin||f>e.hourMax||j<e.minuteMin||j>e.minuteMax||
g<e.secondMin||g>e.secondMax){f=e.hourMin;j=e.minuteMin;g=e.secondMin}if(c.hour_slider)c.hour_slider.slider("value",f);else c.hour=f;if(c.minute_slider)c.minute_slider.slider("value",j);else c.minute=j;if(c.second_slider)c.second_slider.slider("value",g);else c.second=g;c._onTimeChange(true)}};d.datepicker._setTimeDatepicker=function(b,a,c){b=this._getInst(b);var e=this._get(b,"timepicker");if(e){var f;if(a){if(typeof a=="string"){e._parseTime(a,c);f=new Date;f.setHours(e.hour,e.minute,e.second)}else f=
new Date(a.getTime());if(f.toString()=="Invalid Date")f=undefined}this._setTime(b,f)}};d.datepicker._base_setDateDatepicker=d.datepicker._setDateDatepicker;d.datepicker._setDateDatepicker=function(b,a){var c=this._getInst(b),e=new Date(a.getTime());this._updateDatepicker(c);this._base_setDateDatepicker.apply(this,arguments);this._setTimeDatepicker(b,e,true)};d.datepicker._base_getDateDatepicker=d.datepicker._getDateDatepicker;d.datepicker._getDateDatepicker=function(b){b=this._getInst(b);var a=this._get(b,
"timepicker");return a?!b.currentYear||b.input&&b.input.val()==""?null:new Date(b.currentYear,b.currentMonth,b.currentDay,a.hour,a.minute,a.second):this._base_getDateDatepicker(b)};d.timepicker=new q;d.timepicker.version="0.9.1"})(jQuery);
