diff options
Diffstat (limited to 'js/dojo/dojox/date/buddhist/Date.js')
| -rw-r--r-- | js/dojo/dojox/date/buddhist/Date.js | 289 |
1 files changed, 289 insertions, 0 deletions
diff --git a/js/dojo/dojox/date/buddhist/Date.js b/js/dojo/dojox/date/buddhist/Date.js new file mode 100644 index 0000000..f7025ae --- /dev/null +++ b/js/dojo/dojox/date/buddhist/Date.js @@ -0,0 +1,289 @@ +//>>built +define("dojox/date/buddhist/Date", [ + "dojo/_base/kernel", + "dojo/_base/declare", + "dojo/date" +], function(dojo, declare, dd){ + +dojo.getObject("date.buddhist.Date", true, dojox); +dojo.experimental("dojox.date.buddhist.Date"); + +dojo.declare("dojox.date.buddhist.Date", null, { + + _date: 0, + _month: 0, + _year: 0, + _hours: 0, + _minutes: 0, + _seconds: 0, + _milliseconds: 0, + _day: 0, + + constructor: function(){ + // summary: This is the constructor + // description: + // This fucntion initialize the date object values + // + // example: + // | var date1 = new dojox.date.buddhist.Date(); + // | + // | var date2 = new dojox.date.buddhist.Date(date1); + // | + // | var date3 = new dojox.date.buddhist.Date(2552,2,12); + var len = arguments.length; + if(!len){// use the current date value, added "" to the similarity to date + this.fromGregorian(new Date()); + }else if(len == 1){ + var arg0 = arguments[0]; + if(typeof arg0 == "number"){ // this is time "valueof" + arg0 = new Date(arg0); + } + + if(arg0 instanceof Date){ + this.fromGregorian(arg0); + }else if(arg0 == ""){ + this._date = new Date(""); + }else{ + this._year = arg0._year; + this._month = arg0._month; + this._date = arg0._date; + this._hours = arg0._hours; + this._minutes = arg0._minutes; + this._seconds = arg0._seconds; + this._milliseconds = arg0._milliseconds; + } + }else if(len >=3){ + this._year += arguments[0]; + this._month += arguments[1]; + this._date += arguments[2]; + + if(this._month >11){ + console.warn("the month is incorrect , set 0"); + this._month = 0; + } + this._hours += arguments[3] || 0; + this._minutes += arguments[4] || 0; + this._seconds += arguments[5] || 0; + this._milliseconds += arguments[6] || 0; + } + }, + + getDate: function(/*boolean?*/isNumber){ + // summary: This function returns the date value (0 - 30) + // + // example: + // | var date1 = new dojox.date.buddhist.Date(); + // | + // | console.log(date1.getDate()); + return parseInt(this._date); + }, + + getMonth: function(){ + // summary: This function return the month value ( 0 - 11 ) + // + // example: + // | var date1 = new dojox.date.buddhist.Date(); + // | + // | console.log(date1.getMonth()+1); + return parseInt(this._month); + }, + + + getFullYear: function(){ + // summary: This function return the Year value + // + // example: + // | var date1 = new dojox.date.buddhist.Date(); + // | + // | console.log(date1.getFullYear()); + return parseInt(this._year); + }, + + getHours: function(){ + //summary: returns the Hour value + return this._hours; + }, + + getMinutes: function(){ + //summary: returns the Minuites value + return this._minutes; + }, + + getSeconds: function(){ + //summary: returns the seconde value + return this._seconds; + }, + + getMilliseconds: function(){ + //summary: returns the Milliseconds value + return this._milliseconds; + }, + + setDate: function(/*number*/date){ + // summary: This function sets the Date + // example: + // | var date1 = new dojox.date.buddhist.Date(); + // | date1.setDate(2); + date = parseInt(date); + + if(date > 0 && date <= this._getDaysInMonth(this._month, this._year)){ + this._date = date; + }else{ + var mdays; + if(date>0){ + for(mdays = this._getDaysInMonth(this._month, this._year); + date > mdays; + date -= mdays,mdays = this._getDaysInMonth(this._month, this._year)){ + this._month++; + if(this._month >= 12){this._year++; this._month -= 12;} + } + + this._date = date; + }else{ + for(mdays = this._getDaysInMonth((this._month-1)>=0 ?(this._month-1) :11 ,((this._month-1)>=0)? this._year: this._year-1); + date <= 0; + mdays = this._getDaysInMonth((this._month-1)>=0 ? (this._month-1) :11,((this._month-1)>=0)? this._year: this._year-1)){ + this._month--; + if(this._month < 0){this._year--; this._month += 12;} + + date+=mdays; + } + this._date = date; + } + } + return this; + }, + + setFullYear: function(/*number*/year, /*number?*/month, /*number?*/ date){ + // summary: This function set Year + // + // example: + // | var date1 = new dojox.date.buddhist.Date(); + // | date1.setFullYear(2552); + // | date1.setFullYear(2552, 1, 1); + this._year = parseInt(year); + }, + + setMonth: function(/*number*/month){ + // summary: This function set Month + // + // example: + // | var date1 = new dojox.date.buddhist.Date(); + // | date1.setMonth(0); //first month + this._year += Math.floor(month / 12); + this._month = Math.floor(month % 12); + for(; this._month < 0; this._month = this._month+12); + }, + + setHours: function(){ + //summary: set the Hours 0-23 + var hours_arg_no = arguments.length; + var hours = 0; + if(hours_arg_no >= 1){ + hours = parseInt(arguments[0]); + } + + if(hours_arg_no >= 2){ + this._minutes = parseInt(arguments[1]); + } + + if(hours_arg_no >= 3){ + this._seconds = parseInt(arguments[2]); + } + + if(hours_arg_no == 4){ + this._milliseconds = parseInt(arguments[3]); + } + + while(hours >= 24){ + this._date++; + var mdays = this._getDaysInMonth(this._month, this._year); + if(this._date > mdays){ + this._month ++; + if(this._month >= 12){this._year++; this._month -= 12;} + this._date -= mdays; + } + hours -= 24; + } + this._hours = hours; + }, + + _addMinutes: function(/*Number*/minutes){ + minutes += this._minutes; + this.setMinutes(minutes); + this.setHours(this._hours + parseInt(minutes / 60)); + return this; + }, + + _addSeconds: function(/*Number*/seconds){ + seconds += this._seconds; + this.setSeconds(seconds); + this._addMinutes(parseInt(seconds / 60)); + return this; + }, + + _addMilliseconds: function(/*Number*/milliseconds){ + milliseconds += this._milliseconds; + this.setMilliseconds(milliseconds); + this._addSeconds(parseInt(milliseconds / 1000)); + return this; + }, + + setMinutes: function(/*Number*/minutes){ + //summary: sets the minutes (0-59) only. + this._minutes = minutes % 60; + return this; + }, + + setSeconds: function(/*Number*/seconds){ + //summary: sets the seconds (0-59) only. + this._seconds = seconds % 60; + return this; + }, + + setMilliseconds: function(/*Number*/milliseconds){ + this._milliseconds = milliseconds % 1000; + return this; + }, + + toString: function(){ + // summary: This returns a string representation of the date in "dd, MM, YYYY HH:MM:SS" format + return this._date + ", " + this._month + ", " + this._year + " " + this._hours + ":" + this._minutes + ":" + this._seconds; // String + }, + +//FIXME: remove this and replace usage with dojox.date.buddhist.getDaysInMonth? + _getDaysInMonth: function(/*number*/month, /*number*/ year){ + return dd.getDaysInMonth(new Date(year-543, month)); + }, + + fromGregorian: function(/*Date*/gdate){ + // summary: This function sets this Date to the Hebrew Date corresponding to the Gregorian Date + var date = new Date(gdate); + this._date = date.getDate(); + this._month = date.getMonth(); + this._year = date.getFullYear()+543; + this._hours = date.getHours(); + this._minutes = date.getMinutes(); + this._seconds = date.getSeconds(); + this._milliseconds = date.getMilliseconds(); + this._day = date.getDay(); + return this; + }, + + toGregorian: function(){ + // summary: This returns the equivalent Gregorian date value as a Date object + return new Date(this._year-543, this._month, this._date, this._hours, this._minutes, this._seconds, this._milliseconds); // Date + }, + + getDay: function(){ + // summary: This function return Week Day value ( 0 - 6 ) + return this.toGregorian().getDay(); // int + } +}); + +dojox.date.buddhist.Date.prototype.valueOf = function(){ + return this.toGregorian().valueOf(); +}; + +return dojox.date.buddhist.Date; +}); |
