UNPKG

persiandate-picker

Version:
6 lines 42 kB
/* persiandate-picker - v0.5.1 https://persiandate.github.io */ !function(){!function(a){a.fn.persianDatepicker=a.fn.pDatepicker=function(b){var c=Array.prototype.slice.call(arguments),d=this;return this||a.error("Invalid selector"),a(this).each(function(){var e=new Array,f=c.concat(e),g=a(this).data("datepicker");if(g&&"string"==typeof f[0]){var h=f[0];f.splice(0,1);d=g[h](f[0])}else this.pDatePicker=new q(this,b)}),d}}(jQuery);var a={persianDigit:!0,viewMode:!1,position:"auto",autoClose:!1,format:!1,observer:!1,inputDelay:800,formatter:function(a){var b=this,c=new persianDate(a);return c.formatPersian=!1,c.format(b.format)},altField:!1,altFormat:"unix",altFieldFormatter:function(a){var b=this,c=b.altFormat.toLowerCase();return"gregorian"===c|"g"===c?new Date(a):"unix"===c|"u"===c?a:new persianDate(a).format(b.altFormat)},show:function(){return this.view.fixPosition(this),this.element.main.show(),this.onShow(this),this._viewed=!0,this},hide:function(){return this._viewed&&(this.element.main.hide(),this.onHide(this),this._viewed=!1),this},destroy:function(){this.inputElem.removeClass(self.cssClass),this.element.main.remove()},onShow:function(a){},onHide:function(a){},onSelect:function(a){return this},navigator:{enabled:!0,text:{btnNextText:"<",btnPrevText:">"},onNext:function(a){},onPrev:function(a){},onSwitch:function(a){}},toolbox:{enabled:!0,text:{btnToday:"امروز"},onToday:function(a){}},timePicker:{enabled:!1,showSeconds:!0,showMeridian:!0,secondStep:1,minuteStep:1,hourStep:1,scrollEnabled:!0,changeOnScroll:!0},dayPicker:{enabled:!0,scrollEnabled:!0,titleFormat:"YYYY MMMM",titleFormatter:function(a,b){0==this.datepicker.persianDigit&&(window.formatPersian=!1);var c=new persianDate([a,b]).format(this.titleFormat);return window.formatPersian=!0,c},onSelect:function(a){}},monthPicker:{enabled:!0,scrollEnabled:!0,titleFormat:"YYYY",titleFormatter:function(a){0==this.datepicker.persianDigit&&(window.formatPersian=!1);var b=new persianDate(a).format(this.titleFormat);return window.formatPersian=!0,b},onSelect:function(a){}},yearPicker:{enabled:!0,scrollEnabled:!0,titleFormat:"YYYY",titleFormatter:function(a){var b=12*parseInt(a/12);return b+"-"+(b+11)},onSelect:function(a){}},onlyTimePicker:!1,justSelectOnDate:!0,minDate:!1,maxDate:!1,checkDate:function(a){return!0},checkMonth:function(a){return!0},checkYear:function(a){return!0}},b={monthRange:{1:{name:{fa:"فروردین"},abbr:{fa:"فرو"}},2:{name:{fa:"اردیبهشت"},abbr:{fa:"ارد"}},3:{name:{fa:"خرداد"},abbr:{fa:"خرد"}},4:{name:{fa:"تیر"},abbr:{fa:"تیر"}},5:{name:{fa:"مرداد"},abbr:{fa:"مرد"}},6:{name:{fa:"شهریور"},abbr:{fa:"شهر"}},7:{name:{fa:"مهر"},abbr:{fa:"مهر"}},8:{name:{fa:"آبان"},abbr:{fa:"آبا"}},9:{name:{fa:"آذر"},abbr:{fa:"آذر"}},10:{name:{fa:"دی"},abbr:{fa:"دی"}},11:{name:{fa:"بهمن"},abbr:{fa:"بهم"}},12:{name:{fa:"اسفند"},abbr:{fa:"اسف"}}},weekRange:{0:{name:{fa:"شنبه"},abbr:{fa:"ش"}},1:{name:{fa:"یکشنبه"},abbr:{fa:"ی"}},2:{name:{fa:"دوشنبه"},abbr:{fa:"د"}},3:{name:{fa:"سه شنبه"},abbr:{fa:"س"}},4:{name:{fa:"چهار شنبه"},abbr:{fa:"چ"}},5:{name:{fa:"پنج شنبه"},abbr:{fa:"پ"}},6:{name:{fa:"جمعه"},abbr:{fa:"ج"}}},persianDaysName:["اورمزد","بهمن","اوردیبهشت","شهریور","سپندارمذ","خورداد","امرداد","دی به آذز","آذز","آبان","خورشید","ماه","تیر","گوش","دی به مهر","مهر","سروش","رشن","فروردین","بهرام","رام","باد","دی به دین","دین","ارد","اشتاد","آسمان","زامیاد","مانتره سپند","انارام","زیادی"]},c={datepciker:"<div class='{{css.datePickerPlotArea}}' ><div class='{{css.navigator}}' ></div> <div class='{{css.dayView}}' ></div><div class='{{css.monthView}}' ></div><div class='{{css.yearView}}' ></div><div class='{{css.timeView}}' ></div><div class='{{css.toolbox}}' ></div></div>",navigator:"<div class='{{css.datpickerHeader}}' ><div class='{{css.btnNext}}' >{{btnNextText}}</div><div class='{{css.btnSwitch}}' >{{btnSwitchText}}</div><div class='{{css.btnPrev}}' >{{btnPrevText}}</div></div>",timepicker:"<div class='hour time-segment' data-time-key='hour' ><div class='up-btn' >&#9650;</div><input type='text' placeholder='hour' class='hour-input' /><div class='down-btn' >&#9660;</div></div><div class='divider' >:</div><div class='minute time-segment' data-time-key='minute' ><div class='up-btn' >&#9650;</div><input type='text' placeholder='minute' class='minute-input' /><div class='down-btn' >&#9660;</div></div><div class='divider second-divider' >:</div><div class='second time-segment' data-time-key='second' ><div class='up-btn' >&#9650;</div><input type='text' placeholder='second' class='second-input' /><div class='down-btn' >&#9660;</div></div><div class='divider meridian-divider' ></div><div class='divider meridian-divider' ></div><div class='meridian time-segment' data-time-key='meridian' ><div class='up-btn' >&#9650;</div><input type='text' placeholder='meridian&' class='meridian-input' /><div class='down-btn' >&#9660;</div></div>",monthGrid:"<div class='{{css.main}}' ><div class='{{css.header}}' ><div class='{{css.headerTitle}}' ></div><div class='{{css.headerRow}}' ></div></div><table cellspacing='0' class='{{css.daysTable}}' ><tbody><tr><td /><td/><td/><td/><td/><td/><td/></tr><tr><td/><td/><td/><td/><td/><td/><td/></tr><tr><td/><td/><td/><td/><td/><td/><td/></tr><tr><td/><td/><td/><td/><td/><td/><td/></tr><tr><td/><td/><td/><td/><td/><td/><td/></tr><tr><td/><td/><td/><td/><td/><td/><td/></tr></tbody></table></div>"},d={init:function(){this.isInstance=!0,this.raiseEvent("init")},publishInDic:function(a,b){return $.each(a,function(a,c){c[b]()}),a},callOfDict:function(a,b,c){},isSameDay:function(a,b){var c=new pDate(a),d=new pDate(b);return c&&d&&c.year()===d.year()&&c.month()===d.month()&&c.date()===d.date()},isValidGreguranDate:function(a){return a&&"Invalid Date"!=new Date(a)&&"undefined"!=new Date(a)},validatePersianDateString:function(a){var b=new Date(a),c=a.split("/");if(3===c.length)var d=c[0].toString().length<=4&&c[0].toString().length>=1,e=c[1].toString().length<=2&&c[1].toString().length>=1,f=c[2].toString().length<=2&&c[2].toString().length>=1;return $.each(c,function(a,b){c[a]=parseInt(b)}),d&&e&&f&&"Invalid Date"!==b?c:null},fullHeight:function(a){return $(a).height()+parseInt($(a).css("padding-top"))+parseInt($(a).css("padding-bottom"))+parseInt($(a).css("borderTopWidth"))+parseInt($(a).css("borderBottomWidth"))},attachEvent:function(a,b){this.events[a]||(this.events[a]=[]);var c;for(c in this.events[a])this.events[a][c].toString()==b.toString()&&$.error("The function {0} was already added to event's chain.".format(b.toString));return this.events[a].push(b),this},dettachEvent:function(a,b){this.events[a]||$.error("The event's chain is empty.");var c;for(c in this.events[a])this.events[a][c].toString()==b.toString()&&delete this.events[a][c];return this},clearEvent:function(a){return this.events[a]=null,this},raiseEvent:function(a,b){if(a&&this.events){b||(b=[]);var c=this.events[a];if(c){if("function"==typeof c)c.apply(this,b);else{var d;for(d in c)c[d].apply(this,b)}return this}}}},e={defaultView:"default",events:{init:function(){this.render()},render:null},views:{default:{render:function(){}}},element:{main:null},createElementByClass:function(a){return this.element.find("."+a)},render:function(a){return a||(a="default"),this.raiseEvent("render"),this.view=this.views[a],this.view.render(this)}},f={compatConfig:function(){return this.viewMode===!1&&(this.yearPicker.enabled&&(this.viewMode="year"),this.monthPicker.enabled&&(this.viewMode="month"),this.dayPicker.enabled?this.viewMode="day":this.justSelectOnDate=!1),this.minDate|this.maxDate?(this.state.setFilterDate("unix",this.minDate,this.maxDate),this.state._filetredDate=!0):this.state._filetredDate=!1,this}};Object.keys=Object.keys||function(){var a=Object.prototype.hasOwnProperty,b=!{toString:null}.propertyIsEnumerable("toString"),c=["toString","toLocaleString","valueOf","hasOwnProperty","isPrototypeOf","propertyIsEnumerable","constructor"],d=c.length;return function(e){if("object"!=typeof e&&"function"!=typeof e||null===e)throw new TypeError("Object.keys called on a non-object");var f=[];for(var g in e)a.call(e,g)&&f.push(g);if(b)for(var h=0;h<d;h++)a.call(e,c[h])&&f.push(c[h]);return f}}(),$.event.special.textchange={setup:function(a,b){$.event.special.textchange.saveLastValue(this),$(this).bind("keyup.textchange",$.event.special.textchange.handler),$(this).bind("cut.textchange paste.textchange input.textchange",$.event.special.textchange.delayedHandler)},teardown:function(a){$(this).unbind(".textchange")},handler:function(a){$.event.special.textchange.triggerIfChanged($(this))},delayedHandler:function(a){var b=$(this);setTimeout(function(){$.event.special.textchange.triggerIfChanged(b)},25)},triggerIfChanged:function(a){var b="true"===a[0].contentEditable?a.html():a.val();b!==a.data("lastValue")&&a.trigger("textchange",a.data("lastValue"))},saveLastValue:function(a){$(a).data("lastValue","true"===a.contentEditable?$(a).html():$(a).val())}},$.event.special.hastext={setup:function(a,b){$(this).bind("textchange",$.event.special.hastext.handler)},teardown:function(a){$(this).unbind("textchange",$.event.special.hastext.handler)},handler:function(a,b){""===b&&b!==$(this).val()&&$(this).trigger("hastext")}},$.event.special.notext={setup:function(a,b){$(this).bind("textchange",$.event.special.notext.handler)},teardown:function(a){$(this).unbind("textchange",$.event.special.notext.handler)},handler:function(a,b){""===$(this).val()&&$(this).val()!==b&&$(this).trigger("notext")}};var g=$.fn.val;$.fn.val=function(){var a=g.apply(this,arguments);return arguments.length&&this.each(function(){$.event.special.textchange.triggerIfChanged($(this))}),a},$.tmplMustache=function(a,b){return String.prototype.format=function(a){function b(b){var c=b.slice(2,-2).split("."),d=c[0],e=c[1];return a[d]instanceof Object?a[d][e]:a[d]}return this.replace(/{{\s*[\w\.]+\s*}}/g,b)},$(a.format(b))},String.prototype.toPersianDigit=function(a){return this.replace(/\d+/g,function(b){for(var c=[],d=[],e=0;e<b.length;e++)c.push(b.charCodeAt(e));for(var f=0;f<c.length;f++)d.push(String.fromCharCode(c[f]+(a&&1==a?1584:1728)));return d.join("")})},String.prototype.toEngilshDigit=function(a){return this.replace(/\d+/g,function(b){for(var c=[],d=[],e=0;e<b.length;e++)c.push(b.charCodeAt(e));for(var f=0;f<c.length;f++)d.push(String.fromCharCode(c[f]-(a&&1==a?1584:1728)));return c.join("")})};var h=function(a,b){clearTimeout(window.datepickerTimer),window.datepickerTimer=setTimeout(a,b)},i=function(a){for(var b=[],c=0;c<=a-1;)b.push(c),c++;return b},j=function(a,b){var c=function(a){return $.extend(!0,{},a)},e=[!0,a,c(d)],f=[];for(var g in b){var h=c(b[g]);h&&(h.events&&Object.keys(h.events).length>0&&f.push(h.events),h.events={},e.push(h))}$.extend.apply(a,e);for(var g in f){var i=f[g],j=Object.keys(i);for(var k in j){var l=j[k],m=i[l];l&&m&&a.attachEvent(l,m)}}return a.init(),a};if(jQuery.uaMatch=function(a){a=a.toLowerCase();var b=/(chrome)[ \/]([\w.]+)/.exec(a)||/(webkit)[ \/]([\w.]+)/.exec(a)||/(opera)(?:.*version|)[ \/]([\w.]+)/.exec(a)||/(msie) ([\w.]+)/.exec(a)||a.indexOf("compatible")<0&&/(mozilla)(?:.*? rv:([\w.]+)|)/.exec(a)||[];return{browser:b[1]||"",version:b[2]||"0"}},!jQuery.browser){var k=jQuery.uaMatch(window.navigator.userAgent),l={};k.browser&&(l[k.browser]=!0,l.version=k.version),l.chrome?l.webkit=!0:l.webkit&&(l.safari=!0),jQuery.browser=l}var m={state:{year:null,month:null,date:null,firstWeekDayOfMonth:null,daysCount:null},persianDigit:!0,_formatDigit:function(a){return this.persianDigit?a.toString().toPersianDigit():a},events:{init:function(){},render:function(){this.state.month=this.month,this.state.year=this.year},reRender:function(){this._markToday()},selectDay:function(a){}},_markToday:function(){var a=this,b=new persianDate;return $(a.element).removeClass(a.cssClass.today),$.each(a.daysList,function(c,d){var e=$(this).data().day,f=$(this).data().month,g=$(this).data().year;e==b.date()&&f==b.month()&&g==b.year()&&($(this).addClass(a.cssClass.today),$(a.element).addClass(a.cssClass.today))}),this},_updateState:function(){var a=this,b=new persianDate;return a.daysCount=b.daysInMonth(a.state.year,a.state.month),a.firstWeekDayOfMonth=b.getFirstWeekDayOfMonth(a.state.year,a.state.month),this},selectDate:function(a){var b,c=this,d=new persianDate(a);return b=c.state.year!=d.year()||c.state.month!=d.month(),c.state.year=d.year(),c.state.month=d.month(),c.state.date=d.date(),b&&c.view.renderDays(c),c.markSelectedDate(a),this},markSelectedDate:function(a){var b=this;$.each(b.daysList,function(c,d){var e=parseInt($(d).attr("unixDate"));b.isSameDay(e,a)?$(this).addClass(b.cssClass.selected):$(this).removeClass(b.cssClass.selected)})},updateAs:function(a,b){var c=this;return c.state.year=a,c.state.month=b,c.view.renderDays(c),this},goToNextMonth:function(){var a=this;return 12===a.state.month?(a.state.month=1,a.state.viewYear+=1):a.state.month+=1,a.updateAs(a.state.year,a.state.month),!1},goToPrevMonth:function(){},goToYear:function(a){this.updateAs(a,this.state.month)},applyStory:function(){}};MonthGrid=function(a){return j(this,[e,n,b,m,a]),this};var n={cssClass:{main:"month-grid-box",header:"header",headerTitle:"title",headerRow:"header-row",headerRowCell:"header-row-cell",daysTable:"table-days",currentMonth:"current-month",today:"today",selected:"selected",disbaled:"disabled"},views:{default:{render:function(a){a.viewData={css:a.cssClass},a.element=$.tmplMustache(c.monthGrid,a.viewData).appendTo(a.container),a.header=a.createElementByClass(a.cssClass.header),a.headerRow=a.createElementByClass(a.cssClass.headerRow);var b;for(b in a.weekRange)$("<div/>").text(a.weekRange[b].abbr.fa).addClass(a.cssClass.headerRowCell).appendTo(a.headerRow)[0];a.daysBox=a.createElementByClass(a.cssClass.daysTable),this.renderDays(a)},renderDays:function(a){a._updateState(),a.daysList=[];var b=function(b,c,d,e){var f=new persianDate([d,c,b]).valueOf(),g=$("<span/>").text(a._formatDigit(b)).attr("unixDate",f).data({day:b,month:c,year:d,unixDate:f}).addClass(e).appendTo($(this))[0];a.daysList.push(g)},c=new persianDate;a.daysCount=c.daysInMonth(a.state.year,a.state.month),a.firstWeekDayOfMonth=c.getFirstWeekDayOfMonth(a.state.year,a.state.month);var d=1,e=1;$(a.daysBox).find("td").each(function(f){if($(this).empty(),a.firstWeekDayOfMonth>1&&f+1<a.firstWeekDayOfMonth){if(1===a.state.month)var g=12,h=parseInt(a.state.year)-1;else var g=parseInt(a.state.month)-1,h=parseInt(a.state.year);var i=c.daysInMonth(h,g),j=parseInt(i-a.firstWeekDayOfMonth+(f+2));b.apply(this,[j,g,h,"other-month"])}else if(f+2===d+a.firstWeekDayOfMonth&&d<=a.daysCount){var j=d;b.apply(this,[j,parseInt(a.state.month),parseInt(a.state.year)]),d++}else{if(12===a.state.month)var k=1,l=parseInt(a.state.year)+1;else var k=parseInt(a.state.month)+1,l=a.state.year;var j=e;b.apply(this,[j,k,l,"other-month"]),e+=1}var m=$(this).children("span").data("unixDate");a.datepicker.state._filetredDate?a.minDate&&a.maxDate?m>=a.minDate&&m<=a.maxDate?$(this).addClass(a.cssClass.disbaled):$(this).removeClass(a.cssClass.disbaled):a.minDate?m>=a.minDate&&$(this).addClass(a.cssClass.disbaled):a.maxDate&&m<=a.maxDate&&$(this).removeClass(a.cssClass.disbaled):a.datepicker.checkDate(m)?$(this).removeClass(a.cssClass.disbaled):$(this).addClass(a.cssClass.disbaled)}),$(a.daysBox).find("td").not(".disabled").children("span").click(function(){var b=$(this).data("unixDate");return a.raiseEvent("selectDay",[b]),!1}),$(a.daysBox).find("td.disabled").children("span").click(function(){return!1}),a.raiseEvent("reRender")}}}},o={cssClass:{datePickerPlotArea:"datepicker-plot-area",yearView:"datepicker-year-view",monthView:"datepicker-month-view",dayView:"datepicker-day-view",timeView:"datepicker-time-view",navigator:"navigator",toolbox:"toolbox "},container:{},views:{default:{render:function(a){var b={css:a.cssClass};return a.element={},a.element.main=$.tmplMustache(c.datepciker,b).appendTo(a.$container),a._inlineView?(a.element.main.addClass("datepicker-plot-area-inline-view"),a.element.main.show()):a.element.main.hide(),a.view.fixPosition(a),a.container.navigator=$(a.element.main).children("."+a.cssClass.navigator),a.container.dayView=$(a.element.main).children("."+a.cssClass.dayView),a.container.monthView=$(a.element.main).children("."+a.cssClass.monthView),a.container.yearView=$(a.element.main).children("."+a.cssClass.yearView),a.container.timeView=$(a.element.main).children("."+a.cssClass.timeView),a.container.toolbox=$(a.element.main).children("."+a.cssClass.toolbox),a.navigator.enabled&&0==a.onlyTimePicker?a.navigator=new s($.extend(!0,a.navigator,{datepicker:a}),a.container.navigator):(a.container.navigator.remove(),a.navigator=!1),a.toolbox.enabled&&a.onlyTimePicker===!1?a.toolbox=new A($.extend(!0,a.toolbox,{datepicker:a}),a.container.toolbox):(a.container.toolbox.remove(),a.toolbox=!1),a.dayPicker.enabled&&a.onlyTimePicker===!1?(a.dayPicker=new u($.extend(!0,a.dayPicker,{datepicker:a}),a.container.dayView),a._pickers.day=a.dayPicker):(a.container.dayView.hide(),a.dayPicker=!1),a.monthPicker.enabled&&a.onlyTimePicker===!1?(a.monthPicker=new w($.extend(!0,a.monthPicker,{datepicker:a}),a.container.monthView),a._pickers.month=a.monthPicker):(a.monthPicker=!1,a.container.monthView.hide()),a.yearPicker.enabled&&a.onlyTimePicker===!1?(a.yearPicker=new y($.extend(!0,a.yearPicker,{datepicker:a}),a.container.yearView),a._pickers.year=a.yearPicker):(a.yearPicker=!1,a.container.yearView.hide()),a.timePicker.enabled|a.onlyTimePicker===!0?a.timePicker=new C($.extend(!0,a.timePicker,{datepicker:a}),a.container.timeView):a.container.timeView.hide(),a.changeView(a.viewMode),a._syncWithImportData(a.state.unixDate),this},fixPosition:function(a){if(!a._inlineView){var b=a.inputElem.offset().top,c=a.inputElem.offset().left;if("auto"===a.position){var d=a.fullHeight(a.inputElem);a.element.main.css({top:b+d+"px",left:c+"px"})}else a.element.main.css({top:b+a.position[0]+"px",left:c+a.position[1]+"px"})}return this}}}},p={_pickers:{},_viewed:!1,_inlineView:!1,_getNextState:function(a){var b=this.currentView,c=this.currentView;return"next"===a?("month"===b&&this.dayPicker&&(c="day"),"year"===b&&(this.monthPicker?c="month":this.dayPicker&&(c="day"))):"prev"===a&&("month"===b&&this.yearPicker&&(c="year"),"day"===b&&(this.monthPicker?c="month":this.yearPicker&&(c="year"))),this._checkNextStateAvalibility(c)},_checkNextStateAvalibility:function(a){return this._pickers[a]?a:(this.element.main.hide(),!1)},updateNavigator:function(a){return this.navigator&&this.navigator.updateSwitchBtn(this._formatDigit(a)),this},switchNavigatorRelation:function(a){return this.navigator&&this.navigator.switchRelation(a),this},changeView:function(a,b){var c,d=this;return c=b?this._getNextState(b):this._checkNextStateAvalibility(a),c&&(d.publishInDic(d._pickers,"hide"),d._pickers[c].show(),d.switchNavigatorRelation(c),d.currentView=c),this},_flagSelfManipulate:!0,selectTime:function(a,b){this.state.setTime(a,b),this._updateInputElement(),this.onSelect(a,this)},selectDate:function(a){var b=this;switch(b.state.setSelected("unix",a),this.state.syncViewWithelected(),b.currentView){case"month":b.monthPicker.selectMonth();break;case"year":b.yearPicker.selectYear();break;case"day":b.dayPicker.selectDay()}return b._updateInputElement(),b.onSelect(a,this),b.autoClose&&b.element.main.hide(),this},selectDateTime:function(a){var b=this;switch(b.state.setSelectedDateTime("unix",a),this.state.syncViewWithelected(),b.currentView){case"month":b.monthPicker.selectMonth();break;case"year":b.yearPicker.selectYear();break;case"day":b.dayPicker.selectDay()}return b._updateInputElement(),b.onSelect(a,this),b.autoClose&&b.element.main.hide(),this},selectMonth:function(a){var b=this;return this.justSelectOnDate?b.state.setView("month",a):(b.state.setSelected("month",a),b.state.setSelected("year",b.state.view.year),b.state.syncViewWithelected()),b._updateInputElement(),b.changeView(b.currentView,"next"),this},selectYear:function(a){var b=this;return this.justSelectOnDate?b.state.setView("year",a):(b.state.setSelected("year",a),b.state.syncViewWithelected()),b._updateInputElement(),b.changeView(b.currentView,"next"),this},_formatDigit:function(a){return this.persianDigit&&a?a.toString().toPersianDigit():a},_syncWithImportData:function(a){if(a){var b=this;if(jQuery.isNumeric(a)){var c=new persianDate(a);b.state.setSelected("unix",c),b._updateInputElement()}else{var d=b.validatePersianDateString(a);null!=d&&h(function(){var a=new persianDate(d);b.selectDate(a.valueOf())},b.inputDelay)}}return this},_attachEvents:function(){var a=this;if($(window).resize(function(){a.view.fixPosition(a)}),a.observer){a.inputElem.bind("paste",function(b){h(function(){a._syncWithImportData(b.target.value)},60)}),$(a.altField).bind("change",function(){if(!a._flagSelfManipulate){var b=new Date($(this).val());if("Invalid Date"!==b){var c=new persianDate(b);a.selectDate(c.valueOf())}}});var b=!1,c=[17,91],d=86;$(document).keydown(function(a){$.inArray(a.keyCode,c)>0&&(b=!0)}).keyup(function(a){$.inArray(a.keyCode,c)>0&&(b=!1)}),a.inputElem.bind("keyup",function(e){var f=$(this);if(!a._flagSelfManipulate){var g=!1;(8===e.keyCode||e.keyCode<105&&e.keyCode>96||e.keyCode<58&&e.keyCode>47||b&&(e.keyCode==d||$.inArray(e.keyCode,c)>0))&&(g=!0),g&&a._syncWithImportData(f.val())}})}return a.inputElem.focus(function(){a.show()}),a.inputElem.click(function(a){return a.stopPropagation(),!1}),a.inputElem.blur(function(){$.browser.msie||a.hide()}),$(document).not(".datepicker-plot-area,.datepicker-plot-area > *").click(function(b){a.inputElem.blur(),a.hide()}),$(a.element.main).mousedown(function(a){return a.stopPropagation(),!1}),this},_updateInputElement:function(){var a=this;return a._flagSelfManipulate=!0,a.altField.val(a.altFieldFormatter(a.state.selected.unixDate)).trigger("change"),a.inputElem.val(a.formatter(a.state.selected.unixDate)).trigger("change"),a._flagSelfManipulate=!1,a},_defineOnInitState:function(){if("INPUT"==$(this.$container)[0].nodeName){var a=new Date(this.inputElem.val()).valueOf();this.$container=$("body")}else{var a=new Date($(this.$container).data("date")).valueOf();this._inlineView=!0}return a&&"undefined"!=a?this.state.unixDate=a:this.state.unixDate=(new Date).valueOf(),this.altField=$(this.altField),this.state.setSelectedDateTime("unix",this.state.unixDate),this.state.setTime("unix",this.state.unixDate),this.state.setView("unix",this.state.unixDate),this},setTime:function(){this.timePicker.setTime(this.state.selected.unixDate)},setDate:function(a){var b=new persianDate(a);return this.selectDateTime(b.valueOf()),this.timePicker.enabled&&this.setTime(),this},init:function(){var a=this;return this.state=new E({datepicker:a}),this.compatConfig(),this._defineOnInitState(),this._updateInputElement(),this.view=this.views.default,this.view.render(this),this.inputElem.data("datepicker",this),this.inputElem.addClass(a.cssClass),this._attachEvents(),this}},q=function(b,c){return j(this,[e,f,p,o,a,c,{$container:b,inputElem:$(b)}])},r={enabled:!0,text:{btnNextText:"<",btnPrevText:">"},cssClass:{datpickerHeader:"datepicker-header",btnNext:"btn-next",btnSwitch:"btn-switch",btnPrev:"btn-prev"},relation:"day",switchRelation:function(a){return this.relation=a,this.onSwitch(a),this},updateSwitchBtn:function(a){return $(this.element).children("."+this.cssClass.btnSwitch).text(a),this},_next:function(){return this.datepicker[this.relation+"Picker"].next(),this.onNext(this),this},_prev:function(){return this.datepicker[this.relation+"Picker"].prev(),this.onPrev(this),this},_switch:function(){return this.datepicker.changeView(this.relation,"prev"),this},_render:function(){var a=this;a.viewData={css:a.cssClass,btnNextText:a.text.btnNextText,btnPrevText:a.text.btnPrevText},a.element=$.tmplMustache(c.navigator,a.viewData).appendTo(a.$container)},_attachEvents:function(){var a=this;a.element.children("."+a.cssClass.btnPrev).click(function(){return a._prev(),!1}),a.element.children("."+a.cssClass.btnNext).click(function(){return a._next(),!1}),a.element.children("."+a.cssClass.btnSwitch).click(function(){return a._switch(),!1})},init:function(){var a=this;return a._render(),a._attachEvents(),this}},s=function(a,b){return j(this,[e,r,a,{$container:b}])},t={next:function(){var a=this;return 12===a.datepicker.state.view.month?(a.datepicker.state.setView("month",1),a.datepicker.state.setView("year",parseInt(a.datepicker.state.view.year)+1)):a.datepicker.state.setView("month",parseInt(a.datepicker.state.view.month)+1),a._updateView(),this},prev:function(){var a=this;return 1===a.datepicker.state.view.month?(a.datepicker.state.setView("month",12),a.datepicker.state.setView("year",parseInt(a.datepicker.state.view.year)-1)):a.datepicker.state.setView("month",parseInt(a.datepicker.state.view.month)-1),a._updateView(),this},updateView:function(){return this._updateView(),this},_updateView:function(){var a=this;return a.mGrid.updateAs(a.datepicker.state.view.year,a.datepicker.state.view.month),a._updateNavigator(a.datepicker.state.view.year,a.datepicker.state.view.month),this._updateSelectedDay(a.datepicker.state.selected.unixDate),this},selectDay:function(){var a=this;return a.mGrid.updateAs(a.datepicker.state.selected.year,a.datepicker.state.selected.month),a._updateNavigator(a.datepicker.state.selected.year,a.datepicker.state.selected.month),this._updateSelectedDay(a.datepicker.state.selected.unixDate),this._updateView(),this},_updateNavigator:function(a,b){var c=this,d=this.titleFormatter(a,b);return c.datepicker.updateNavigator(d),this},hide:function(){return this.container.hide(),this},show:function(){return this.container.show(),this._updateView(),this},_updateSelectedDay:function(a){return this.mGrid.markSelectedDate(a),this},_attachEvents:function(){var a=this;return this.scrollEnabled&&($(this.container).mousewheel(function(b){b.deltaY>0?a.next():a.prev()}),$(this.container).bind("mousewheel DOMMouseScroll",function(a){var b=null;"mousewheel"==a.type?b=a.originalEvent.wheelDelta*-1:"DOMMouseScroll"==a.type&&(b=40*a.originalEvent.detail),b&&(a.preventDefault(),$(this).scrollTop(b+$(this).scrollTop()))})),this},_render:function(){var a=this;this.mGrid=new MonthGrid({container:a.container,persianDigit:a.datepicker.persianDigit,month:a.datepicker.state.selected.month,year:a.datepicker.state.selected.year,minDate:a.datepicker.state.filterDate.start.unixDate,maxDate:a.datepicker.state.filterDate.end.unixDate,datepicker:a.datepicker}),this.mGrid.attachEvent("selectDay",function(b){a.datepicker.selectDate(b),a.onSelect(b),a.mGrid.selectDate(a.datepicker.state.selected.unixDate)}),this._updateSelectedDay(a.datepicker.state.selected.unixDate)},init:function(){var a=this;return this._render(),this._attachEvents(),this._updateNavigator(a.datepicker.state.selected.year,a.datepicker.state.selected.month),this}},u=function(a,b){return j(this,[e,t,a,{container:b}])},v={cssClass:{selectedMonth:"selected",monthItem:"month-item",disbaleItem:"month-item-disable"},monthRange:b.monthRange,_updateNavigator:function(){var a=this;return a.datepicker.updateNavigator(this.titleFormatter(a.datepicker.state.view.unixDate)),this},hide:function(){return this.container.hide(),this},show:function(){return this.container.show(),this._updateNavigator(),this._render(),this},selectMonth:function(){this.defineSelectedMonth(),this._updateNavigator()},defineSelectedMonth:function(){var a=this;return a.container.children("."+a.cssClass.monthItem).removeClass(a.cssClass.selectedMonth),a.datepicker.state.view.year===a.datepicker.state.selected.year&&a.container.children(".month"+a.datepicker.state.selected.month).addClass(a.cssClass.selectedMonth),this},next:function(){var a=this;return a.datepicker.state.setView("year",a.datepicker.state.view.year+1),a.updateView(),a._render(),this},prev:function(){var a=this;return a.datepicker.state.setView("year",a.datepicker.state.view.year-1),a.updateView(),a._render(),this},updateView:function(){return this.defineSelectedMonth(),this._updateNavigator(),this},_checkMonthAccess:function(a){if(this.datepicker.state._filetredDate){var b=this.datepicker.state.view.year,c=1e3*new pDate([b,a]).unix();return c>=this.datepicker.state.filterDate.start.unixDate&&c<=this.datepicker.state.filterDate.end.unixDate}return this.datepicker.checkMonth(a)},_attachEvents:function(){var a=this;return this.scrollEnabled&&($(this.container).mousewheel(function(b){b.deltaY>0?a.next():a.prev()}),$(this.container).bind("mousewheel DOMMouseScroll",function(a){var b=null;"mousewheel"==a.type?b=a.originalEvent.wheelDelta*-1:"DOMMouseScroll"==a.type&&(b=40*a.originalEvent.detail),b&&(a.preventDefault(),$(this).scrollTop(b+$(this).scrollTop()))})),this},_render:function(){var a,b=this;b.container.empty();for(a in this.monthRange){var c=$("<div/>").data({monthIndex:a}).addClass("month"+a).addClass(b.cssClass.monthItem).text(b.monthRange[a].name.fa).appendTo(b.container);b._checkMonthAccess(a)?c.click(function(){return b.onSelect($(this).data().monthIndex),b.datepicker.selectMonth(parseInt($(this).data().monthIndex)),!1}):(c.addClass(b.cssClass.disbaleItem),c.click(function(){return!1}))}return this.defineSelectedMonth(),this},init:function(){return this._render(),this._attachEvents(),this}},w=function(a,b){return j(this,[e,v,a,{container:b}])},x={cssClass:{selectedYear:"selected",yearItem:"year-item",disbaleItem:"year-item-disable"},events:{select:function(){}},_updateNavigator:function(){var a=this,b=a.datepicker.state.view.year;return a.datepicker.updateNavigator(a.titleFormatter(b)),this},hide:function(){return this.container.hide(),this},show:function(){return this.container.show(),this.updateView(),this},next:function(){var a=this;return a.datepicker.state.view.year+=12,a._render().updateView(),this},prev:function(){var a=this;return a.datepicker.state.view.year-=12,a._render().updateView(),this},selectYear:function(){this.updateView()},updateView:function(){var a=this;return a._render(),a.container.children("."+a.cssClass.yearItem).each(function(){$(this).removeClass(a.cssClass.selectedYear),$(this).data().year===a.datepicker.state.selected.year&&$(this).addClass(a.cssClass.selectedYear)}),a._updateNavigator(),this},_checkYearAccess:function(a){if(this.datepicker.state._filetredDate){var b=this.datepicker.state.filterDate.start.year,c=this.datepicker.state.filterDate.end.year;return!!(b<=a&a<=c)}return this.datepicker.checkYear(a)},_attachEvents:function(){var a=this;return this.scrollEnabled&&($(this.container).mousewheel(function(b){b.deltaY>0?a.next():a.prev()}),$(this.container).bind("mousewheel DOMMouseScroll",function(a){var b=null;"mousewheel"==a.type?b=a.originalEvent.wheelDelta*-1:"DOMMouseScroll"==a.type&&(b=40*a.originalEvent.detail),b&&(a.preventDefault(),$(this).scrollTop(b+$(this).scrollTop()))})),this},_render:function(){var a,b=this,c=b.datepicker.state.view.year,d=12*parseInt(c/12);b.container.children("."+b.cssClass.yearItem).remove();var e;for(e in i(12))a=$("<div/>").addClass(b.cssClass.yearItem).data({year:d+parseInt(e)}).text(b.datepicker._formatDigit(d+parseInt(e))).appendTo(b.container),c===d+parseInt(e)&&a.addClass(b.cssClass.selectedYear),b._checkYearAccess(d+parseInt(e))?a.click(function(){var a=$(this).data().year;return b.datepicker.selectYear(parseInt(a)),b.onSelect(a),!1}):(a.addClass(b.cssClass.disbaleItem),a.click(function(){return!1}));return this},init:function(){return this._render(),this._attachEvents(),this}},y=function(a,b){return j(this,[e,x,a,{container:b}])},z={text:{btnToday:"امروز"},enabled:!0,cssClass:{btnToday:"btn-today"},_goToday:function(){var a=this,b=(new Date).valueOf();return a.datepicker.selectDate(b),this.onToday(this),this},_render:function(){var a=this;return this.todayBtn=$("<div></div>").text(a.text.btnToday).addClass(a.cssClass.btnToday).click(function(){return a._goToday(),!1}).appendTo(this.$container),this},init:function(){return this._render()}},A=function(a,b){return j(this,[e,z,a,{$container:b}])},B={secondStep:1,minuteStep:1,hourStep:1,cssClss:{timepicker:"viewModel"},show:function(){"use strict";return this.container.show(), this},hide:function(){"use strict";return this.container.hide(),this},_render:function(){var a=this,b={css:a.cssClass};return $.tmplMustache(c.timepicker,b).appendTo(this.container),this},_currentMeridian:null,convert24hTo12:function(a){var b=a,c="AM";return a>=12&&(b=a-12,c="PM"),0===a&&(b=12),[b,c]},convert12hTo24:function(a){var b=a;return"PM"===this._currentMeridian&&a<12&&(b=a+12),"AM"===this._currentMeridian&&12===a&&(b=a-12),b},_updateTime:function(a){var b=a.selected,c=this.convert24hTo12(b.hour);return this.hourInput.val(b.hour),this.minuteInput.val(b.minute),this.secondInput.val(b.second),this.meridianInput.val(b.dateObj.format("a")),this._currentMeridian=c[1],this.meridianInput.attr({"data-meridian-mode":this._currentMeridian}),this},_updateMeridian:function(a){var b=a.selected;return this.meridianInput.val(b.dateObj.format("a")),this},_toggleMeridian:function(){return"AM"===this._currentMeridian?(this._currentMeridian="PM",this.meridianInput.val("PM")):"PM"===this._currentMeridian&&(this._currentMeridian="AM",this.meridianInput.val("AM")),this},_movehour:function(a){var b=parseInt(this.hourInput.val());return"up"===a?b>=12?b=this.hourStep:b+=this.hourStep:b<=1?b=12:b-=this.hourStep,this.hourInput.val(b),this._updateState("hour",this.convert12hTo24(b)),this},_moveminute:function(a){var b=parseInt(this.minuteInput.val());return"up"===a?59===b?b=0:b+=this.minuteStep:0===b?b=59:b-=this.minuteStep,this.minuteInput.val(b),this._updateState("minute",b),this},_movesecond:function(a){var b=parseInt(this.secondInput.val());return"up"===a?59===b?b=0:b+=this.secondStep:0===b?b=59:b-=this.secondStep,this.secondInput.val(b),this._updateState("second",b),this},_movemeridian:function(){return this._toggleMeridian(),this._updateState("hour",this.convert12hTo24(parseInt(this.hourInput.val()))),this},_updateState:function(a,b){return this.datepicker.selectTime(a,b),this._updateMeridian(this.datepicker.state),this},_attachEvent:function(){var a=this;return $(".up-btn",this.container).click(function(){return a["_move"+$(this).parent().attr("data-time-key")]("up"),!1}),$(".down-btn",this.container).click(function(){return a["_move"+$(this).parent().attr("data-time-key")]("down"),!1}),this.scrollEnabled&&($("> div.time-segment",this.container).mousewheel(function(b){var c="down";b.deltaY>0&&(c="up"),a["_move"+$(this).attr("data-time-key")](c)}),$("> div.time-segment",this.container).bind("mousewheel DOMMouseScroll",function(a){var b=null;"mousewheel"==a.type?b=a.originalEvent.wheelDelta*-1:"DOMMouseScroll"==a.type&&(b=40*a.originalEvent.detail),b&&(a.preventDefault(),$(this).scrollTop(b+$(this).scrollTop()))})),this},_bootstrap:function(){return this.showMeridian===!1&&($(".meridian",this.container).hide(),$(".meridian-divider",this.container).hide(),$(".time-segment",this.container).css({width:"31%"})),this.showSeconds===!1&&($(".second",this.container).hide(),$(".second-divider",this.container).hide(),$(".time-segment",this.container).css({width:"31%"})),this.showMeridian===!1&&this.showSeconds===!1&&$(".time-segment",this.container).css({width:"47%"}),this.hourInput=$(".hour-input",this.container),this.minuteInput=$(".minute-input",this.container),this.secondInput=$(".second-input",this.container),this.meridianInput=$(".meridian-input",this.container),this._updateTime(this.datepicker.state),this},setTime:function(a){var b=new persianDate(a);this._updateState("hour",b.hour()),this._updateState("minute",b.minute()),this._updateState("second",b.second()),this.minuteInput.val(b.minute()),this.secondInput.val(b.second()),this.hourInput.val(b.hour())},init:function(){return this._render()._bootstrap()._attachEvent(),this}},C=function(a,b){return j(this,[e,B,a,{container:b}])},D={filterDate:{start:{year:0,month:0,date:0,hour:0,minute:0,second:0,unixDate:0},end:{year:0,month:0,date:0,hour:0,minute:0,second:0,unixDate:100}},view:{year:0,month:0,date:0,hour:0,minute:0,second:0,unixDate:0},selected:{year:0,month:0,date:0,hour:0,minute:0,second:0,unixDate:0},setFilterDate:function(a,b,c){var d=this;b||(b=-99999999999999);var e=new persianDate(b);d.filterDate.start.unixDate=b,d.filterDate.start.hour=e.hour(),d.filterDate.start.minute=e.minute(),d.filterDate.start.second=e.second(),d.filterDate.start.month=e.month(),d.filterDate.start.date=e.date(),d.filterDate.start.year=e.year(),c||(c=99999999999999);var e=new persianDate(c);d.filterDate.end.unixDate=c,d.filterDate.end.hour=e.hour(),d.filterDate.end.minute=e.minute(),d.filterDate.end.second=e.second(),d.filterDate.end.month=e.month(),d.filterDate.end.date=e.date(),d.filterDate.end.year=e.year()},_updateSelectedUnix:function(){return this.selected.dateObj=new persianDate([this.selected.year,this.selected.month,this.selected.date,this.selected.hour,this.selected.minute,this.selected.second]),this.selected.unixDate=this.selected.dateObj.valueOf(),this},setTime:function(a,b){var c=this;switch(a){case"unix":c.selected.unixDate=b;var d=new persianDate(b);c.selected.hour=d.hour(),c.selected.minute=d.minute(),c.selected.second=d.second(),c._updateSelectedUnix();break;case"hour":this.selected.hour=b,c._updateSelectedUnix();break;case"minute":this.selected.minute=b,c._updateSelectedUnix();break;case"second":this.selected.second=b,c._updateSelectedUnix()}return this},setSelected:function(a,b){var c=this;switch(a){case"unix":c.selected.unixDate=b;var d=new persianDate(b);c.selected.year=d.year(),c.selected.month=d.month(),c.selected.date=d.date(),c._updateSelectedUnix();break;case"year":this.selected.year=b,c._updateSelectedUnix();break;case"month":this.selected.month=b,c._updateSelectedUnix();break;case"date":this.selected.month=b,c._updateSelectedUnix()}return this},setSelectedDateTime:function(a,b){var c=this;switch(a){case"unix":c.selected.unixDate=b;var d=new persianDate(b);c.selected.year=d.year(),c.selected.month=d.month(),c.selected.date=d.date(),c.selected.hour=d.hour(),c.selected.minute=d.minute(),c.selected.second=d.second(),c._updateSelectedUnix();break;case"year":this.selected.year=b,c._updateSelectedUnix();break;case"month":this.selected.month=b,c._updateSelectedUnix();break;case"date":this.selected.month=b,c._updateSelectedUnix()}return this},syncViewWithelected:function(){return this.view.year=this.selected.year,this.view.month=this.selected.month,this.view.date=this.selected.date,this.view.unixDate=this.selected.unixDate,this},_updateViewUnix:function(){return this.view.dateObj=new persianDate([this.view.year,this.view.month,this.view.date,this.view.hour,this.view.minute,this.view.second]),this.view.unixDate=this.view.dateObj.valueOf(),this},setView:function(a,b){var c=this;switch(a){case"unix":var d=new persianDate(b);c.view.year=d.year(),c.view.month=d.month(),c.view.date=d.date(),c.view.unixDate=b;break;case"year":this.view.year=b,this._updateViewUnix();break;case"month":this.view.month=b,this._updateViewUnix();break;case"date":this.view.month=b,this._updateViewUnix()}return this}},E=function(a){return j(this,[D,a])};!function(a){"function"==typeof define&&define.amd?define(["jquery"],a):"object"==typeof exports?module.exports=a:a(jQuery)}(function(a){function b(b){var g=b||window.event,h=i.call(arguments,1),j=0,l=0,m=0,n=0,o=0,p=0;if(b=a.event.fix(g),b.type="mousewheel","detail"in g&&(m=g.detail*-1),"wheelDelta"in g&&(m=g.wheelDelta),"wheelDeltaY"in g&&(m=g.wheelDeltaY),"wheelDeltaX"in g&&(l=g.wheelDeltaX*-1),"axis"in g&&g.axis===g.HORIZONTAL_AXIS&&(l=m*-1,m=0),j=0===m?l:m,"deltaY"in g&&(m=g.deltaY*-1,j=m),"deltaX"in g&&(l=g.deltaX,0===m&&(j=l*-1)),0!==m||0!==l){if(1===g.deltaMode){var q=a.data(this,"mousewheel-line-height");j*=q,m*=q,l*=q}else if(2===g.deltaMode){var r=a.data(this,"mousewheel-page-height");j*=r,m*=r,l*=r}if(n=Math.max(Math.abs(m),Math.abs(l)),(!f||n<f)&&(f=n,d(g,n)&&(f/=40)),d(g,n)&&(j/=40,l/=40,m/=40),j=Math[j>=1?"floor":"ceil"](j/f),l=Math[l>=1?"floor":"ceil"](l/f),m=Math[m>=1?"floor":"ceil"](m/f),k.settings.normalizeOffset&&this.getBoundingClientRect){var s=this.getBoundingClientRect();o=b.clientX-s.left,p=b.clientY-s.top}return b.deltaX=l,b.deltaY=m,b.deltaFactor=f,b.offsetX=o,b.offsetY=p,b.deltaMode=0,h.unshift(b,j,l,m),e&&clearTimeout(e),e=setTimeout(c,200),(a.event.dispatch||a.event.handle).apply(this,h)}}function c(){f=null}function d(a,b){return k.settings.adjustOldDeltas&&"mousewheel"===a.type&&b%120===0}var e,f,g=["wheel","mousewheel","DOMMouseScroll","MozMousePixelScroll"],h="onwheel"in document||document.documentMode>=9?["wheel"]:["mousewheel","DomMouseScroll","MozMousePixelScroll"],i=Array.prototype.slice;if(a.event.fixHooks)for(var j=g.length;j;)a.event.fixHooks[g[--j]]=a.event.mouseHooks;var k=a.event.special.mousewheel={version:"3.1.12",setup:function(){if(this.addEventListener)for(var c=h.length;c;)this.addEventListener(h[--c],b,!1);else this.onmousewheel=b;a.data(this,"mousewheel-line-height",k.getLineHeight(this)),a.data(this,"mousewheel-page-height",k.getPageHeight(this))},teardown:function(){if(this.removeEventListener)for(var c=h.length;c;)this.removeEventListener(h[--c],b,!1);else this.onmousewheel=null;a.removeData(this,"mousewheel-line-height"),a.removeData(this,"mousewheel-page-height")},getLineHeight:function(b){var c=a(b),d=c["offsetParent"in a.fn?"offsetParent":"parent"]();return d.length||(d=a("body")),parseInt(d.css("fontSize"),10)||parseInt(c.css("fontSize"),10)||16},getPageHeight:function(b){return a(b).height()},settings:{adjustOldDeltas:!0,normalizeOffset:!0}};a.fn.extend({mousewheel:function(a){return a?this.bind("mousewheel",a):this.trigger("mousewheel")},unmousewheel:function(a){return this.unbind("mousewheel",a)}})})}();