diff --git a/dist/jquery.nepaliDatePicker.min.js b/dist/jquery.nepaliDatePicker.min.js index 261a911..859c314 100644 --- a/dist/jquery.nepaliDatePicker.min.js +++ b/dist/jquery.nepaliDatePicker.min.js @@ -1 +1 @@ -var calenderFunctions={};!function($){var calenderData={bsMonths:["बैशाख","जेठ","असार","सावन","भदौ","असोज","कार्तिक","मंसिर","पौष","माघ","फागुन","चैत"],bsDays:["आईत","सोम","मंगल","बुध","बिही","शुक्र","शनि"],nepaliNumbers:["०","१","२","३","४","५","६","७","८","९"],bsMonthUpperDays:[[30,31],[31,32],[31,32],[31,32],[31,32],[30,31],[29,30],[29,30],[29,30],[29,30],[29,30],[30,31]],extractedBsMonthData:[[1,3,1,22,1,3,1,3,1,22,1,3,1,19,1,3,1,1,3],[0,1,2,2,2,1,3,1,3,1,2,2,2,2,2,2,2,2,2,2,2,1,3,1,2,2,2,2,2,2,2,2,2,2,2,1,3,1,2,2,2,2,2,1,1,1,2,2,2,2],[1,2,2,2,2,2,2,2,2,1,3,1,3,1,2,2,2,2,2,2,2,2,2,1,3,1,3,1,2,2,2,2,2,2,2,2,2,1,3,1,3,1,1,1,1,2,2,2,2],[0,1,1,3,1,3,1,3,1,3,1,3,1,3,1,2,2,2,1,3,1,3,1,3,1,3,1,3,1,2,2,2,1,3,1,3,1,3,1,3,1,3,1,3,2,2,1,3],[29,1,26,1,28,1,2,1,2],[1,1,3,1,2,2,2,2,2,2,2,2,2,2,2,1,3,1,2,2,2,2,2,2,2,2,2,2,2,1,3,1,2,2,2,2,2,2,2,2,2,2,5,1,1,2,2],[0,8,1,3,1,3,1,18,1,3,1,3,1,18,1,3,1,3,1,20],[0,1,2,2,2,2,2,2,2,2,2,1,2,2,2,2,2,2,2,2,2,2,2,2,2,1,2,2,2,2,2,2,2,2,2,2,2,2,2,1,2,2,2,11],[1,2,2,2,1,3,1,3,1,3,1,2,2,2,2,2,2,2,1,3,1,3,1,3,1,2,2,2,2,2,2,2,2,2,1,3,1,3,1,2,2,2,11],[0,1,3,1,14,1,3,1,3,1,3,1,18,1,3,1,3,1,3,1,14,1,3,10],[1,3,1,3,1,10,1,3,1,3,1,3,1,3,1,14,1,3,1,3,1,3,1,3,1,10,1,13],[0,1,2,2,2,2,2,1,3,1,3,1,3,1,2,2,2,2,2,2,2,1,3,1,3,1,3,1,3,1,2,2,2,2,2,2,2,1,3,1,3,1,13]],minBsYear:2e3,maxBsYear:2090,minAdDateEqBsDate:{ad:{year:1943,month:3,date:14},bs:{year:2e3,month:1,date:1}}},validationFunctions={validateRequiredParameters:function(requiredParameters){$.each(requiredParameters,function(key,value){if("undefined"==typeof value||null===value)throw new ReferenceError("Missing required parameters: "+Object.keys(requiredParameters).join(", "))})},validateBsYear:function(bsYear){if("number"!=typeof bsYear||null===bsYear)throw new TypeError("Invalid parameter bsYear value");if(bsYearcalenderData.maxBsYear)throw new RangeError("Parameter bsYear value should be in range of "+calenderData.minBsYear+" to "+calenderData.maxBsYear)},validateBsMonth:function(bsMonth){if("number"!=typeof bsMonth||null===bsMonth)throw new TypeError("Invalid parameter bsMonth value");if(bsMonth<0||bsMonth>11)throw new RangeError("Parameter bsMonth value should be in range of 0 to 11")},validateBsDate:function(bsDate){if("number"!=typeof bsDate||null===bsDate)throw new TypeError("Invalid parameter bsDate value");if(bsDate<1||bsDate>32)throw new RangeError("Parameter bsDate value should be in range of 1 to 32")},validatePositiveNumber:function(numberParameters){$.each(numberParameters,function(key,value){if("number"!=typeof value||null===value||value<0)throw new ReferenceError("Invalid parameters: "+Object.keys(numberParameters).join(", "));if("yearDiff"===key&&value>calenderData.maxBsYear-calenderData.minBsYear+1)throw new RangeError("Parameter yearDiff value should be in range of 0 to "+(calenderData.maxBsYear-calenderData.minBsYear+1))})}};$.extend(calenderFunctions,{getNepaliNumber:function(number){if("undefined"==typeof number)throw new Error("Parameter number is required");if("number"!=typeof number||number<0)throw new Error("Number should be positive integer");var prefixNum=Math.floor(number/10),suffixNum=number%10;return 0!==prefixNum?calenderFunctions.getNepaliNumber(prefixNum)+calenderData.nepaliNumbers[suffixNum]:calenderData.nepaliNumbers[suffixNum]},getNumberByNepaliNumber:function(nepaliNumber){if("undefined"==typeof nepaliNumber)throw new Error("Parameter nepaliNumber is required");if("string"!=typeof nepaliNumber)throw new Error("Parameter nepaliNumber should be in string");for(var number=0,i=0;ibsMonthDays?bsMonthDays:bsDate;var eqAdDate=calenderFunctions.getAdDateByBsDate(bsYear,bsMonth,bsDate),weekDay=eqAdDate.getDay(),formattedDate=calenderFunctions.bsDateFormat(dateFormatPattern,bsYear,bsMonth,bsDate,weekDay);return{bsYear:bsYear,bsMonth:bsMonth,bsDate:bsDate,weekDay:weekDay,formattedDate:formattedDate,adDate:eqAdDate,bsMonthFirstAdDate:bsMonthFirstAdDate,bsMonthDays:bsMonthDays}},getAdDateByBsDate:function(bsYear,bsMonth,BsDate){var daysNumFromMinBsYear=calenderFunctions.getTotalDaysNumFromMinBsYear(bsYear,bsMonth,BsDate),adDate=new Date(calenderData.minAdDateEqBsDate.ad.year,calenderData.minAdDateEqBsDate.ad.month,calenderData.minAdDateEqBsDate.ad.date-1);return adDate.setDate(adDate.getDate()+daysNumFromMinBsYear),adDate},getTotalDaysNumFromMinBsYear:function(bsYear,bsMonth,bsDate){if(bsYearcalenderData.maxBsYear)return null;for(var daysNumFromMinBsYear=0,diffYears=bsYear-calenderData.minBsYear,monthIndex=0;monthIndex<12;monthIndex++)daysNumFromMinBsYear+=monthIndex2085&&bsYear<2088?bsDate-2:bsYear>2088&&bsMonth>4?bsDate-4:bsDate},getMonthDaysNumFormMinBsYear:function(bsMonth,yearDiff){validationFunctions.validateRequiredParameters({bsMonth:bsMonth,yearDiff:yearDiff}),validationFunctions.validateBsMonth(bsMonth),validationFunctions.validatePositiveNumber({yearDiff:yearDiff});var yearCount=0,monthDaysFromMinBsYear=0;if(0===yearDiff)return 0;for(var bsMonthData=calenderData.extractedBsMonthData[bsMonth],i=0;iyearCount+bsMonthData[i])){monthDaysFromMinBsYear+=calenderData.bsMonthUpperDays[bsMonth][bsMonthUpperDaysIndex]*(yearDiff-yearCount),yearCount=yearDiff-yearCount;break}yearCount+=bsMonthData[i],monthDaysFromMinBsYear+=calenderData.bsMonthUpperDays[bsMonth][bsMonthUpperDaysIndex]*bsMonthData[i]}return monthDaysFromMinBsYear},getBsMonthDays:function(bsYear,bsMonth){validationFunctions.validateRequiredParameters({bsYear:bsYear,bsMonth:bsMonth}),validationFunctions.validateBsYear(bsYear),validationFunctions.validateBsMonth(bsMonth);for(var yearCount=0,totalYears=bsYear+1-calenderData.minBsYear,bsMonthData=calenderData.extractedBsMonthData[bsMonth],i=0;i=1&&adDate');$("body").append($nepaliDatePicker),""!==$element.val()?datePickerPlugin.renderFormattedSpecificDateCalender($nepaliDatePicker,datePickerPlugin.options.dateFormat,$element.val()):datePickerPlugin.renderCurrentMonthCalender($nepaliDatePicker),datePickerPlugin.addEventHandler($element,$nepaliDatePicker),datePickerPlugin.addCommonEventHandler($nepaliDatePicker)},addCommonEventHandler:function(){$(document).click(function(event){if(datePickerPlugin._currentInstance){var $targetElement=$(event.target),inst=datePickerPlugin.getInstance($targetElement[0]);inst[0]===datePickerPlugin._currentInstance[0]||$targetElement.parents(".nepali-date-picker").length||($nepaliDatePicker.hide(),$nepaliDatePicker.find(".drop-down-content").hide())}})},addEventHandler:function($element,$nepaliDatePicker){$element.focus(function(){$(".nepali-date-picker").hide();var inputFieldPosition=$(this).offset();$nepaliDatePicker.css({top:inputFieldPosition.top+$(this).outerHeight(!0),left:inputFieldPosition.left}),$nepaliDatePicker.show(),datePickerPlugin.eventFire($element,$nepaliDatePicker,"show")}),$element.click(function(){$(".nepali-date-picker").hide();var inputFieldPosition=$(this).offset();$nepaliDatePicker.css({top:inputFieldPosition.top+$(this).outerHeight(!0),left:inputFieldPosition.left}),$nepaliDatePicker.show(),datePickerPlugin.eventFire($element,$nepaliDatePicker,"show")}),$nepaliDatePicker.on("click",".next-btn",function(event){event.preventDefault();var preCalenderData={bsYear:$nepaliDatePicker.data().bsYear,bsMonth:$nepaliDatePicker.data().bsMonth,bsDate:$nepaliDatePicker.data().bsDate};datePickerPlugin.renderNextMonthCalender($nepaliDatePicker),datePickerPlugin.triggerChangeEvent($element,$nepaliDatePicker,preCalenderData),$nepaliDatePicker.show()}),$nepaliDatePicker.on("click",".prev-btn",function(event){event.preventDefault();var preCalenderData={bsYear:$nepaliDatePicker.data().bsYear,bsMonth:$nepaliDatePicker.data().bsMonth,bsDate:$nepaliDatePicker.data().bsDate};datePickerPlugin.renderPreviousMonthCalender($nepaliDatePicker);$nepaliDatePicker.data();datePickerPlugin.triggerChangeEvent($element,$nepaliDatePicker,preCalenderData),$nepaliDatePicker.show()}),$nepaliDatePicker.on("click",".today-btn",function(event){event.preventDefault();var preCalenderData={bsYear:$nepaliDatePicker.data().bsYear,bsMonth:$nepaliDatePicker.data().bsMonth,bsDate:$nepaliDatePicker.data().bsDate};datePickerPlugin.renderCurrentMonthCalender($nepaliDatePicker);$nepaliDatePicker.data();datePickerPlugin.triggerChangeEvent($element,$nepaliDatePicker,preCalenderData),$nepaliDatePicker.show()}),$nepaliDatePicker.on("click",".current-year-txt, .current-month-txt",function(){if($(this).find(".drop-down-content").is(":visible"))$(this).find(".drop-down-content").hide();else{$nepaliDatePicker.find(".drop-down-content").hide(),$(this).find(".drop-down-content").show();var $optionWrapper=$(this).find(".option-wrapper");$optionWrapper.scrollTop(0);var scrollTopTo=$optionWrapper.find(".active").position().top;$optionWrapper.scrollTop(scrollTopTo)}}),$nepaliDatePicker.on("click",".current-month-date",function(){if(!$(this).hasClass("disable")){var datePickerData=$nepaliDatePicker.data(),bsYear=datePickerData.bsYear,bsMonth=datePickerData.bsMonth,preDate=datePickerData.bsDate,bsDate=$(this).data("date"),weekDay=$(this).data("weekday"),dateText=calenderFunctions.bsDateFormat(datePickerPlugin.options.dateFormat,bsYear,bsMonth,bsDate,weekDay);$element.val(dateText),datePickerPlugin.setCalenderDate($nepaliDatePicker,bsYear,bsMonth,bsDate),datePickerPlugin.renderMonthCalender($nepaliDatePicker),datePickerPlugin.eventFire($element,$nepaliDatePicker,"select"),preDate!=bsDate&&datePickerPlugin.eventFire($element,$nepaliDatePicker,"dateChange"),datePickerPlugin.options.closeOnDateSelect?$nepaliDatePicker.hide():$nepaliDatePicker.show()}}),$nepaliDatePicker.on("click",".drop-down-content li",function(){var $dropDown=$(this).parents(".drop-down-content");$dropDown.data("value",$(this).data("value")),$dropDown.attr("data-value",$(this).data("value"));var preCalenderData={bsYear:$nepaliDatePicker.data().bsYear,bsMonth:$nepaliDatePicker.data().bsMonth,bsDate:$nepaliDatePicker.data().bsDate},bsMonth=$nepaliDatePicker.find(".month-drop-down").data("value"),bsYear=$nepaliDatePicker.find(".year-drop-down").data("value"),bsDate=preCalenderData.bsDate;datePickerPlugin.setCalenderDate($nepaliDatePicker,bsYear,bsMonth,bsDate),datePickerPlugin.renderMonthCalender($nepaliDatePicker);$nepaliDatePicker.data();datePickerPlugin.triggerChangeEvent($element,$nepaliDatePicker,preCalenderData),$nepaliDatePicker.show()})},triggerChangeEvent:function($element,$nepaliDatePicker,preCalenderData){var calenderData=$nepaliDatePicker.data();preCalenderData.bsYear!=calenderData.bsYear&&datePickerPlugin.eventFire($element,$nepaliDatePicker,"yearChange"),preCalenderData.bsMonth!=calenderData.bsMonth&&datePickerPlugin.eventFire($element,$nepaliDatePicker,"monthChange"),preCalenderData.bsDate!=calenderData.bsDate&&datePickerPlugin.eventFire($element,$nepaliDatePicker,"dateChange")},eventFire:function($element,$nepaliDatePicker,eventType){switch(eventType){case"generate":$element.trigger({type:eventType,message:"Nepali date picker initialize",datePickerData:$nepaliDatePicker.data(),time:new Date});break;case"show":$element.trigger({type:eventType,message:"Show nepali date picker",datePickerData:$nepaliDatePicker.data(),time:new Date});break;case"close":$element.trigger({type:eventType,message:"close nepali date picker",datePickerData:$nepaliDatePicker.data(),time:new Date});break;case"select":$element.trigger({type:eventType,message:"Select date",datePickerData:$nepaliDatePicker.data(),time:new Date});break;case"dateChange":$element.trigger({type:eventType,message:"Change date",datePickerData:$nepaliDatePicker.data(),time:new Date});break;case"monthChange":$element.trigger({type:eventType,message:"Change month",datePickerData:$nepaliDatePicker.data(),time:new Date});break;case"yearChange":$element.trigger({type:eventType,message:"Change year",datePickerData:$nepaliDatePicker.data(),time:new Date})}},setCalenderDate:function($nepaliDatePicker,bsYear,bsMonth,BsDate){$nepaliDatePicker.data(calenderFunctions.getBsMonthInfoByBsDate(bsYear,bsMonth,BsDate,datePickerPlugin.options.dateFormat))},renderMonthCalender:function($nepaliDatePicker){$nepaliDatePicker.find(".calender-wrapper").remove(),$nepaliDatePicker.append(datePickerPlugin.getCalender($nepaliDatePicker)).hide()},getCalender:function($nepaliDatePicker){var calenderWrapper=$('
');calenderWrapper.append(datePickerPlugin.getCalenderController($nepaliDatePicker));var calenderTable=$("");return calenderTable.append(datePickerPlugin.getCalenderHeader()),calenderTable.append(datePickerPlugin.getCalenderBody($nepaliDatePicker)),calenderWrapper.append(calenderTable),calenderWrapper},getCalenderController:function($nepaliDatePicker){var calenderController=$("
");return calenderController.append(''),calenderController.append(''),calenderController.append(datePickerPlugin.getMonthDropOption($nepaliDatePicker)),calenderController.append(datePickerPlugin.getYearDropOption($nepaliDatePicker)),calenderController.append(''),calenderController},getMonthDropOption:function($nepaliDatePicker){var datePickerData=$nepaliDatePicker.data(),$monthSpan=$('
');$monthSpan.text(calenderData.bsMonths[datePickerData.bsMonth]),$monthSpan.append('');for(var data=[],i=0;i<12;i++)data.push({label:calenderData.bsMonths[i],value:i});var $monthDropOption=datePickerPlugin.getCustomSelectOption(data,datePickerData.bsMonth).addClass("month-drop-down");return $monthSpan.append($monthDropOption),$monthSpan},getYearDropOption:function($nepaliDatePicker){var datePickerData=$nepaliDatePicker.data(),$yearSpan=$('
');$yearSpan.text(calenderFunctions.getNepaliNumber(datePickerData.bsYear)),$yearSpan.append('');for(var data=[],i=datePickerPlugin.options.yearStart;i<=datePickerPlugin.options.yearEnd;i++)data.push({label:calenderFunctions.getNepaliNumber(i),value:i});var $yearDropOption=datePickerPlugin.getCustomSelectOption(data,datePickerData.bsYear).addClass("year-drop-down");return $yearSpan.append($yearDropOption),$yearSpan},getCustomSelectOption:function(datas,activeValue){var $dropDown=$('
"),tableRow=$(""),i=0;i<7;i++)tableRow.append("");return calenderHeader.append(tableRow),calenderHeader},getCalenderBody:function($nepaliDatePicker){var datePickerData=$nepaliDatePicker.data(),weekCoverInMonth=Math.ceil((datePickerData.bsMonthFirstAdDate.getDay()+datePickerData.bsMonthDays)/7),preMonth=datePickerData.bsMonth-1!=-1?datePickerData.bsMonth-1:11,preYear=11==preMonth?datePickerData.bsYear-1:datePickerData.bsYear,preMonthDays=calenderFunctions.getBsMonthDays(preYear,preMonth),minBsDate=null,maxBsDate=null;null!==datePickerPlugin.options.minDate&&(minBsDate=calenderFunctions.parseFormattedBsDate(datePickerPlugin.options.dateFormat,datePickerPlugin.options.minDate)),null!==datePickerPlugin.options.maxDate&&(maxBsDate=calenderFunctions.parseFormattedBsDate(datePickerPlugin.options.dateFormat,datePickerPlugin.options.maxDate));for(var calenderBody=$(""),i=0;i"),k=1;k<=7;k++){var calenderDate=7*i+k-datePickerData.bsMonthFirstAdDate.getDay(),isCurrentMonthDate=!0;if(calenderDate<=0?(calenderDate=preMonthDays+calenderDate,isCurrentMonthDate=!1):calenderDate>datePickerData.bsMonthDays&&(calenderDate-=datePickerData.bsMonthDays,isCurrentMonthDate=!1),isCurrentMonthDate){var $td=$('");calenderDate==datePickerData.bsDate&&$td.addClass("active"),datePickerPlugin.disableIfOutOfRange($td,datePickerData,minBsDate,maxBsDate,calenderDate),tableRow.append($td)}else tableRow.append('")}calenderBody.append(tableRow)}return calenderBody},disableIfOutOfRange:function($td,datePickerData,minBsDate,maxBsDate,calenderDate){return null!==minBsDate&&(datePickerData.bsYearmaxBsDate.bsYear?$td.addClass("disable"):datePickerData.bsYear==maxBsDate.bsYear&&datePickerData.bsMonth>maxBsDate.bsMonth?$td.addClass("disable"):datePickerData.bsYear==maxBsDate.bsYear&&datePickerData.bsMonth==maxBsDate.bsMonth&&calenderDate>maxBsDate.bsDate&&$td.addClass("disable")),$td},renderCurrentMonthCalender:function($nepaliDatePicker){var currentDate=new Date,currentBsDate=calenderFunctions.getBsDateByAdDate(currentDate.getFullYear(),currentDate.getMonth(),currentDate.getDate()),bsYear=currentBsDate.bsYear,bsMonth=currentBsDate.bsMonth,bsDate=currentBsDate.bsDate;datePickerPlugin.setCalenderDate($nepaliDatePicker,bsYear,bsMonth,bsDate),datePickerPlugin.renderMonthCalender($nepaliDatePicker)},renderPreviousMonthCalender:function($nepaliDatePicker){var datePickerData=$nepaliDatePicker.data(),prevMonth=datePickerData.bsMonth-1>=0?datePickerData.bsMonth-1:11,prevYear=11!=prevMonth?datePickerData.bsYear:datePickerData.bsYear-1,prevDate=datePickerData.bsDate;return prevYeardatePickerPlugin.options.yearEnd?null:(datePickerPlugin.setCalenderDate($nepaliDatePicker,prevYear,prevMonth,prevDate),void datePickerPlugin.renderMonthCalender($nepaliDatePicker))},renderNextMonthCalender:function($nepaliDatePicker){var datePickerData=$nepaliDatePicker.data(),nextMonth=datePickerData.bsMonth+1<=11?datePickerData.bsMonth+1:0,nextYear=0!==nextMonth?datePickerData.bsYear:datePickerData.bsYear+1,nextDate=datePickerData.bsDate;return nextYeardatePickerPlugin.options.yearEnd?null:(datePickerPlugin.setCalenderDate($nepaliDatePicker,nextYear,nextMonth,nextDate),void datePickerPlugin.renderMonthCalender($nepaliDatePicker))},renderFormattedSpecificDateCalender:function($nepaliDatePicker,dateFormat,dateFormattedText){var datePickerDate=calenderFunctions.parseFormattedBsDate(dateFormat,dateFormattedText);datePickerPlugin.setCalenderDate($nepaliDatePicker,datePickerDate.bsYear,datePickerDate.bsMonth,datePickerDate.bsDate),datePickerPlugin.renderMonthCalender($nepaliDatePicker)}};return this.each(function(){var $element=$(this);datePickerPlugin.init($element)}),this}}(jQuery,calenderFunctions); \ No newline at end of file +var calenderFunctions={};!function($){var calenderData={bsMonths:["बैशाख","जेठ","असार","सावन","भदौ","असोज","कार्तिक","मंसिर","पौष","माघ","फागुन","चैत"],bsDays:["आईत","सोम","मंगल","बुध","बिही","शुक्र","शनि"],nepaliNumbers:["०","१","२","३","४","५","६","७","८","९"],bsMonthUpperDays:[[30,31],[31,32],[31,32],[31,32],[31,32],[30,31],[29,30],[29,30],[29,30],[29,30],[29,30],[30,31]],extractedBsMonthData:[[1,3,1,22,1,3,1,3,1,22,1,3,1,19,1,3,1,1,3],[0,1,2,2,2,1,3,1,3,1,2,2,2,2,2,2,2,2,2,2,2,1,3,1,2,2,2,2,2,2,2,2,2,2,2,1,3,1,2,2,2,2,2,1,1,1,2,2,2,2],[1,2,2,2,2,2,2,2,2,1,3,1,3,1,2,2,2,2,2,2,2,2,2,1,3,1,3,1,2,2,2,2,2,2,2,2,2,1,3,1,3,1,1,1,1,2,2,2,2],[0,1,1,3,1,3,1,3,1,3,1,3,1,3,1,2,2,2,1,3,1,3,1,3,1,3,1,3,1,2,2,2,1,3,1,3,1,3,1,3,1,3,1,3,2,2,1,3],[29,1,26,1,28,1,2,1,2],[1,1,3,1,2,2,2,2,2,2,2,2,2,2,2,1,3,1,2,2,2,2,2,2,2,2,2,2,2,1,3,1,2,2,2,2,2,2,2,2,2,2,5,1,1,2,2],[0,8,1,3,1,3,1,18,1,3,1,3,1,18,1,3,1,3,1,20],[0,1,2,2,2,2,2,2,2,2,2,1,2,2,2,2,2,2,2,2,2,2,2,2,2,1,2,2,2,2,2,2,2,2,2,2,2,2,2,1,2,2,2,11],[1,2,2,2,1,3,1,3,1,3,1,2,2,2,2,2,2,2,1,3,1,3,1,3,1,2,2,2,2,2,2,2,2,2,1,3,1,3,1,2,2,2,11],[0,1,3,1,14,1,3,1,3,1,3,1,18,1,3,1,3,1,3,1,14,1,3,10],[1,3,1,3,1,10,1,3,1,3,1,3,1,3,1,14,1,3,1,3,1,3,1,3,1,10,1,13],[0,1,2,2,2,2,2,1,3,1,3,1,3,1,2,2,2,2,2,2,2,1,3,1,3,1,3,1,3,1,2,2,2,2,2,2,2,1,3,1,3,1,13]],minBsYear:2e3,maxBsYear:2090,minAdDateEqBsDate:{ad:{year:1943,month:3,date:14},bs:{year:2e3,month:1,date:1}}},validationFunctions={validateRequiredParameters:function(requiredParameters){$.each(requiredParameters,function(key,value){if("undefined"==typeof value||null===value)throw new ReferenceError("Missing required parameters: "+Object.keys(requiredParameters).join(", "))})},validateBsYear:function(bsYear){if("number"!=typeof bsYear||null===bsYear)throw new TypeError("Invalid parameter bsYear value");if(bsYearcalenderData.maxBsYear)throw new RangeError("Parameter bsYear value should be in range of "+calenderData.minBsYear+" to "+calenderData.maxBsYear)},validateBsMonth:function(bsMonth){if("number"!=typeof bsMonth||null===bsMonth)throw new TypeError("Invalid parameter bsMonth value");if(0>bsMonth||bsMonth>11)throw new RangeError("Parameter bsMonth value should be in range of 0 to 11")},validateBsDate:function(bsDate){if("number"!=typeof bsDate||null===bsDate)throw new TypeError("Invalid parameter bsDate value");if(1>bsDate||bsDate>32)throw new RangeError("Parameter bsDate value should be in range of 1 to 32")},validatePositiveNumber:function(numberParameters){$.each(numberParameters,function(key,value){if("number"!=typeof value||null===value||0>value)throw new ReferenceError("Invalid parameters: "+Object.keys(numberParameters).join(", "));if("yearDiff"===key&&value>calenderData.maxBsYear-calenderData.minBsYear+1)throw new RangeError("Parameter yearDiff value should be in range of 0 to "+(calenderData.maxBsYear-calenderData.minBsYear+1))})}};$.extend(calenderFunctions,{getNepaliNumber:function(number){if("undefined"==typeof number)throw new Error("Parameter number is required");if("number"!=typeof number||0>number)throw new Error("Number should be positive integer");var prefixNum=Math.floor(number/10),suffixNum=number%10;return 0!==prefixNum?calenderFunctions.getNepaliNumber(prefixNum)+calenderData.nepaliNumbers[suffixNum]:calenderData.nepaliNumbers[suffixNum]},getNumberByNepaliNumber:function(nepaliNumber){if("undefined"==typeof nepaliNumber)throw new Error("Parameter nepaliNumber is required");if("string"!=typeof nepaliNumber)throw new Error("Parameter nepaliNumber should be in string");for(var number=0,i=0;ibsMonthDays?bsMonthDays:bsDate;var eqAdDate=calenderFunctions.getAdDateByBsDate(bsYear,bsMonth,bsDate),weekDay=eqAdDate.getDay(),formattedDate=calenderFunctions.bsDateFormat(dateFormatPattern,bsYear,bsMonth,bsDate,weekDay);return{bsYear:bsYear,bsMonth:bsMonth,bsDate:bsDate,weekDay:weekDay,formattedDate:formattedDate,adDate:eqAdDate,bsMonthFirstAdDate:bsMonthFirstAdDate,bsMonthDays:bsMonthDays}},getAdDateByBsDate:function(bsYear,bsMonth,BsDate){var daysNumFromMinBsYear=calenderFunctions.getTotalDaysNumFromMinBsYear(bsYear,bsMonth,BsDate),adDate=new Date(calenderData.minAdDateEqBsDate.ad.year,calenderData.minAdDateEqBsDate.ad.month,calenderData.minAdDateEqBsDate.ad.date-1);return adDate.setDate(adDate.getDate()+daysNumFromMinBsYear),adDate},getTotalDaysNumFromMinBsYear:function(bsYear,bsMonth,bsDate){if(bsYearcalenderData.maxBsYear)return null;for(var daysNumFromMinBsYear=0,diffYears=bsYear-calenderData.minBsYear,monthIndex=0;12>monthIndex;monthIndex++)daysNumFromMinBsYear+=bsMonth>monthIndex?calenderFunctions.getMonthDaysNumFormMinBsYear(monthIndex,diffYears+1):calenderFunctions.getMonthDaysNumFormMinBsYear(monthIndex,diffYears);return daysNumFromMinBsYear+=bsYear>2085&&2088>bsYear?bsDate-2:bsYear>2088&&bsMonth>4?bsDate-4:bsDate},getMonthDaysNumFormMinBsYear:function(bsMonth,yearDiff){validationFunctions.validateRequiredParameters({bsMonth:bsMonth,yearDiff:yearDiff}),validationFunctions.validateBsMonth(bsMonth),validationFunctions.validatePositiveNumber({yearDiff:yearDiff});var yearCount=0,monthDaysFromMinBsYear=0;if(0===yearDiff)return 0;for(var bsMonthData=calenderData.extractedBsMonthData[bsMonth],i=0;iyearCount+bsMonthData[i])){monthDaysFromMinBsYear+=calenderData.bsMonthUpperDays[bsMonth][bsMonthUpperDaysIndex]*(yearDiff-yearCount),yearCount=yearDiff-yearCount;break}yearCount+=bsMonthData[i],monthDaysFromMinBsYear+=calenderData.bsMonthUpperDays[bsMonth][bsMonthUpperDaysIndex]*bsMonthData[i]}return monthDaysFromMinBsYear},getBsMonthDays:function(bsYear,bsMonth){validationFunctions.validateRequiredParameters({bsYear:bsYear,bsMonth:bsMonth}),validationFunctions.validateBsYear(bsYear),validationFunctions.validateBsMonth(bsMonth);for(var yearCount=0,totalYears=bsYear+1-calenderData.minBsYear,bsMonthData=calenderData.extractedBsMonthData[bsMonth],i=0;i=totalYears)return 2085==bsYear&&4==bsMonth||2088==bsYear&&4==bsMonth?calenderData.bsMonthUpperDays[bsMonth][bsMonthUpperDaysIndex]-2:calenderData.bsMonthUpperDays[bsMonth][bsMonthUpperDaysIndex]}return null},getBsDateByAdDate:function(adYear,adMonth,adDate){var bsYear=adYear+57,bsMonth=(adMonth+9)%12,bsDate=1;if(3>adMonth)bsYear-=1;else if(3==adMonth){var bsYearFirstAdDate=calenderFunctions.getAdDateByBsDate(bsYear,0,1);adDate=1&&adDate');$("body").append($nepaliDatePicker),""!==$element.val()?datePickerPlugin.renderFormattedSpecificDateCalender($nepaliDatePicker,datePickerPlugin.options.dateFormat,$element.val()):datePickerPlugin.renderCurrentMonthCalender($nepaliDatePicker),datePickerPlugin.addEventHandler($element,$nepaliDatePicker),datePickerPlugin.addCommonEventHandler($nepaliDatePicker)},addCommonEventHandler:function(){$(document).click(function(event){if(datePickerPlugin._currentInstance){var $targetElement=$(event.target),inst=datePickerPlugin.getInstance($targetElement[0]);inst[0]===datePickerPlugin._currentInstance[0]||$targetElement.parents(".nepali-date-picker").length||($nepaliDatePicker.hide(),$nepaliDatePicker.find(".drop-down-content").hide())}})},addEventHandler:function($element,$nepaliDatePicker){$element.focus(function(){$(".nepali-date-picker").hide();var inputFieldPosition=$(this).offset();$nepaliDatePicker.css({top:inputFieldPosition.top+$(this).outerHeight(!0),left:inputFieldPosition.left}),$nepaliDatePicker.show(),datePickerPlugin.eventFire($element,$nepaliDatePicker,"show")}),$element.click(function(){$(".nepali-date-picker").hide();var inputFieldPosition=$(this).offset();$nepaliDatePicker.css({top:inputFieldPosition.top+$(this).outerHeight(!0),left:inputFieldPosition.left}),$nepaliDatePicker.show(),datePickerPlugin.eventFire($element,$nepaliDatePicker,"show")}),$nepaliDatePicker.on("click",".next-btn",function(event){event.preventDefault();var preCalenderData={bsYear:$nepaliDatePicker.data().bsYear,bsMonth:$nepaliDatePicker.data().bsMonth,bsDate:$nepaliDatePicker.data().bsDate};datePickerPlugin.renderNextMonthCalender($nepaliDatePicker),datePickerPlugin.triggerChangeEvent($element,$nepaliDatePicker,preCalenderData),$nepaliDatePicker.show()}),$nepaliDatePicker.on("click",".prev-btn",function(event){event.preventDefault();var preCalenderData={bsYear:$nepaliDatePicker.data().bsYear,bsMonth:$nepaliDatePicker.data().bsMonth,bsDate:$nepaliDatePicker.data().bsDate};datePickerPlugin.renderPreviousMonthCalender($nepaliDatePicker);$nepaliDatePicker.data();datePickerPlugin.triggerChangeEvent($element,$nepaliDatePicker,preCalenderData),$nepaliDatePicker.show()}),$nepaliDatePicker.on("click",".today-btn",function(event){event.preventDefault();var preCalenderData={bsYear:$nepaliDatePicker.data().bsYear,bsMonth:$nepaliDatePicker.data().bsMonth,bsDate:$nepaliDatePicker.data().bsDate};datePickerPlugin.renderCurrentMonthCalender($nepaliDatePicker);$nepaliDatePicker.data();datePickerPlugin.triggerChangeEvent($element,$nepaliDatePicker,preCalenderData),$nepaliDatePicker.show()}),$nepaliDatePicker.on("click",".current-year-txt, .current-month-txt",function(){if($(this).find(".drop-down-content").is(":visible"))$(this).find(".drop-down-content").hide();else{$nepaliDatePicker.find(".drop-down-content").hide(),$(this).find(".drop-down-content").show();var $optionWrapper=$(this).find(".option-wrapper");$optionWrapper.scrollTop(0);var scrollTopTo=$optionWrapper.find(".active").position().top;$optionWrapper.scrollTop(scrollTopTo)}}),$nepaliDatePicker.on("click",".current-month-date",function(){if(!$(this).hasClass("disable")){var datePickerData=$nepaliDatePicker.data(),bsYear=datePickerData.bsYear,bsMonth=datePickerData.bsMonth,preDate=datePickerData.bsDate,bsDate=$(this).data("date"),weekDay=$(this).data("weekday"),dateText=calenderFunctions.bsDateFormat(datePickerPlugin.options.dateFormat,bsYear,bsMonth,bsDate,weekDay);$element.val(dateText),datePickerPlugin.setCalenderDate($nepaliDatePicker,bsYear,bsMonth,bsDate),datePickerPlugin.renderMonthCalender($nepaliDatePicker),datePickerPlugin.eventFire($element,$nepaliDatePicker,"select"),preDate!=bsDate&&datePickerPlugin.eventFire($element,$nepaliDatePicker,"dateChange"),datePickerPlugin.options.closeOnDateSelect?$nepaliDatePicker.hide():$nepaliDatePicker.show()}}),$nepaliDatePicker.on("click",".drop-down-content li",function(){var $dropDown=$(this).parents(".drop-down-content");$dropDown.data("value",$(this).data("value")),$dropDown.attr("data-value",$(this).data("value"));var preCalenderData={bsYear:$nepaliDatePicker.data().bsYear,bsMonth:$nepaliDatePicker.data().bsMonth,bsDate:$nepaliDatePicker.data().bsDate},bsMonth=$nepaliDatePicker.find(".month-drop-down").data("value"),bsYear=$nepaliDatePicker.find(".year-drop-down").data("value"),bsDate=preCalenderData.bsDate;datePickerPlugin.setCalenderDate($nepaliDatePicker,bsYear,bsMonth,bsDate),datePickerPlugin.renderMonthCalender($nepaliDatePicker);$nepaliDatePicker.data();datePickerPlugin.triggerChangeEvent($element,$nepaliDatePicker,preCalenderData),$nepaliDatePicker.show()})},triggerChangeEvent:function($element,$nepaliDatePicker,preCalenderData){var calenderData=$nepaliDatePicker.data();preCalenderData.bsYear!=calenderData.bsYear&&datePickerPlugin.eventFire($element,$nepaliDatePicker,"yearChange"),preCalenderData.bsMonth!=calenderData.bsMonth&&datePickerPlugin.eventFire($element,$nepaliDatePicker,"monthChange"),preCalenderData.bsDate!=calenderData.bsDate&&datePickerPlugin.eventFire($element,$nepaliDatePicker,"dateChange")},eventFire:function($element,$nepaliDatePicker,eventType){switch(eventType){case"generate":$element.trigger({type:eventType,message:"Nepali date picker initialize",datePickerData:$nepaliDatePicker.data(),time:new Date});break;case"show":$element.trigger({type:eventType,message:"Show nepali date picker",datePickerData:$nepaliDatePicker.data(),time:new Date});break;case"close":$element.trigger({type:eventType,message:"close nepali date picker",datePickerData:$nepaliDatePicker.data(),time:new Date});break;case"select":$element.trigger({type:eventType,message:"Select date",datePickerData:$nepaliDatePicker.data(),time:new Date});break;case"dateChange":$element.trigger({type:eventType,message:"Change date",datePickerData:$nepaliDatePicker.data(),time:new Date});break;case"monthChange":$element.trigger({type:eventType,message:"Change month",datePickerData:$nepaliDatePicker.data(),time:new Date});break;case"yearChange":$element.trigger({type:eventType,message:"Change year",datePickerData:$nepaliDatePicker.data(),time:new Date})}},setCalenderDate:function($nepaliDatePicker,bsYear,bsMonth,BsDate){$nepaliDatePicker.data(calenderFunctions.getBsMonthInfoByBsDate(bsYear,bsMonth,BsDate,datePickerPlugin.options.dateFormat))},renderMonthCalender:function($nepaliDatePicker){$nepaliDatePicker.find(".calender-wrapper").remove(),$nepaliDatePicker.append(datePickerPlugin.getCalender($nepaliDatePicker)).hide()},getCalender:function($nepaliDatePicker){var calenderWrapper=$('
');calenderWrapper.append(datePickerPlugin.getCalenderController($nepaliDatePicker));var calenderTable=$("
"+calenderData.bsDays[i]+"
'+calenderFunctions.getNepaliNumber(calenderDate)+"'+calenderFunctions.getNepaliNumber(calenderDate)+"
");return calenderTable.append(datePickerPlugin.getCalenderHeader()),calenderTable.append(datePickerPlugin.getCalenderBody($nepaliDatePicker)),calenderWrapper.append(calenderTable),calenderWrapper},getCalenderController:function($nepaliDatePicker){var calenderController=$("
");return calenderController.append(''),calenderController.append(''),calenderController.append(datePickerPlugin.getMonthDropOption($nepaliDatePicker)),calenderController.append(datePickerPlugin.getYearDropOption($nepaliDatePicker)),calenderController.append(''),calenderController},getMonthDropOption:function($nepaliDatePicker){var datePickerData=$nepaliDatePicker.data(),$monthSpan=$('
');$monthSpan.text(calenderData.bsMonths[datePickerData.bsMonth]),$monthSpan.append('');for(var data=[],i=0;12>i;i++)data.push({label:calenderData.bsMonths[i],value:i});var $monthDropOption=datePickerPlugin.getCustomSelectOption(data,datePickerData.bsMonth).addClass("month-drop-down");return $monthSpan.append($monthDropOption),$monthSpan},getYearDropOption:function($nepaliDatePicker){var datePickerData=$nepaliDatePicker.data(),$yearSpan=$('
');$yearSpan.text(calenderFunctions.getNepaliNumber(datePickerData.bsYear)),$yearSpan.append('');for(var data=[],i=datePickerPlugin.options.yearStart;i<=datePickerPlugin.options.yearEnd;i++)data.push({label:calenderFunctions.getNepaliNumber(i),value:i});var $yearDropOption=datePickerPlugin.getCustomSelectOption(data,datePickerData.bsYear).addClass("year-drop-down");return $yearSpan.append($yearDropOption),$yearSpan},getCustomSelectOption:function(datas,activeValue){var $dropDown=$('
"),tableRow=$(""),i=0;7>i;i++)tableRow.append("");return calenderHeader.append(tableRow),calenderHeader},getCalenderBody:function($nepaliDatePicker){var datePickerData=$nepaliDatePicker.data(),weekCoverInMonth=Math.ceil((datePickerData.bsMonthFirstAdDate.getDay()+datePickerData.bsMonthDays)/7),preMonth=datePickerData.bsMonth-1!=-1?datePickerData.bsMonth-1:11,preYear=11==preMonth?datePickerData.bsYear-1:datePickerData.bsYear,preMonthDays=calenderFunctions.getBsMonthDays(preYear,preMonth),minBsDate=null,maxBsDate=null;null!==datePickerPlugin.options.minDate&&(minBsDate=calenderFunctions.parseFormattedBsDate(datePickerPlugin.options.dateFormat,datePickerPlugin.options.minDate)),null!==datePickerPlugin.options.maxDate&&(maxBsDate=calenderFunctions.parseFormattedBsDate(datePickerPlugin.options.dateFormat,datePickerPlugin.options.maxDate));for(var calenderBody=$(""),i=0;weekCoverInMonth>i;i++){for(var tableRow=$(""),k=1;7>=k;k++){var calenderDate=7*i+k-datePickerData.bsMonthFirstAdDate.getDay(),isCurrentMonthDate=!0;if(0>=calenderDate?(calenderDate=preMonthDays+calenderDate,isCurrentMonthDate=!1):calenderDate>datePickerData.bsMonthDays&&(calenderDate-=datePickerData.bsMonthDays,isCurrentMonthDate=!1),isCurrentMonthDate){var $td=$('");calenderDate==datePickerData.bsDate&&$td.addClass("active"),datePickerPlugin.disableIfOutOfRange($td,datePickerData,minBsDate,maxBsDate,calenderDate),tableRow.append($td)}else tableRow.append('")}calenderBody.append(tableRow)}return calenderBody},disableIfOutOfRange:function($td,datePickerData,minBsDate,maxBsDate,calenderDate){return null!==minBsDate&&(datePickerData.bsYearmaxBsDate.bsYear?$td.addClass("disable"):datePickerData.bsYear==maxBsDate.bsYear&&datePickerData.bsMonth>maxBsDate.bsMonth?$td.addClass("disable"):datePickerData.bsYear==maxBsDate.bsYear&&datePickerData.bsMonth==maxBsDate.bsMonth&&calenderDate>maxBsDate.bsDate&&$td.addClass("disable")),$td},renderCurrentMonthCalender:function($nepaliDatePicker){var currentDate=new Date,currentBsDate=calenderFunctions.getBsDateByAdDate(currentDate.getFullYear(),currentDate.getMonth(),currentDate.getDate()),bsYear=currentBsDate.bsYear,bsMonth=currentBsDate.bsMonth,bsDate=currentBsDate.bsDate;datePickerPlugin.setCalenderDate($nepaliDatePicker,bsYear,bsMonth,bsDate),datePickerPlugin.renderMonthCalender($nepaliDatePicker)},renderPreviousMonthCalender:function($nepaliDatePicker){var datePickerData=$nepaliDatePicker.data(),prevMonth=datePickerData.bsMonth-1>=0?datePickerData.bsMonth-1:11,prevYear=11!=prevMonth?datePickerData.bsYear:datePickerData.bsYear-1,prevDate=datePickerData.bsDate;return prevYeardatePickerPlugin.options.yearEnd?null:(datePickerPlugin.setCalenderDate($nepaliDatePicker,prevYear,prevMonth,prevDate),void datePickerPlugin.renderMonthCalender($nepaliDatePicker))},renderNextMonthCalender:function($nepaliDatePicker){var datePickerData=$nepaliDatePicker.data(),nextMonth=datePickerData.bsMonth+1<=11?datePickerData.bsMonth+1:0,nextYear=0!==nextMonth?datePickerData.bsYear:datePickerData.bsYear+1,nextDate=datePickerData.bsDate;return nextYeardatePickerPlugin.options.yearEnd?null:(datePickerPlugin.setCalenderDate($nepaliDatePicker,nextYear,nextMonth,nextDate),void datePickerPlugin.renderMonthCalender($nepaliDatePicker))},renderFormattedSpecificDateCalender:function($nepaliDatePicker,dateFormat,dateFormattedText){var datePickerDate=calenderFunctions.parseFormattedBsDate(dateFormat,dateFormattedText);datePickerPlugin.setCalenderDate($nepaliDatePicker,datePickerDate.bsYear,datePickerDate.bsMonth,datePickerDate.bsDate),datePickerPlugin.renderMonthCalender($nepaliDatePicker)}};return this.each(function(){var $element=$(this);datePickerPlugin.init($element)}),this}}(jQuery,calenderFunctions); \ No newline at end of file diff --git a/src/jquery.nepaliDatePicker.js b/src/jquery.nepaliDatePicker.js index 194b213..5cda2fd 100644 --- a/src/jquery.nepaliDatePicker.js +++ b/src/jquery.nepaliDatePicker.js @@ -375,17 +375,13 @@ var calenderFunctions = {}; datePickerPlugin.addCommonEventHandler($nepaliDatePicker); }, addCommonEventHandler: function () { - $(document).click(function(event) { - if (!datePickerPlugin._currentInstance) { - return; - } - var $targetElement = $(event.target), - inst = datePickerPlugin.getInstance($targetElement[0]); - - if (inst[0] !== datePickerPlugin._currentInstance[0] && !$targetElement.parents('.nepali-date-picker').length) { - $nepaliDatePicker.hide(); - $nepaliDatePicker.find(".drop-down-content").hide(); - } + var $datePickerWrapper = $(".nepali-date-picker"); + $(document).click(function (event) { + var $targetElement = $(event.target); + if (!$targetElement.parents($(".nepali-date-picker")).length) { + $datePickerWrapper.hide(); + $datePickerWrapper.find(".drop-down-content").hide(); + } }); }, addEventHandler: function ($element, $nepaliDatePicker) { @@ -790,6 +786,8 @@ var calenderFunctions = {}; var $element = $(this); datePickerPlugin.init($element); }); + + datePickerPlugin.addCommonEventHandler(); return this; }; }(jQuery, calenderFunctions));
"+calenderData.bsDays[i]+"
'+calenderFunctions.getNepaliNumber(calenderDate)+"'+calenderFunctions.getNepaliNumber(calenderDate)+"