cacert-testmgr/external/ZendFramework-1.9.5/externals/dojo/dojox/date/HebrewNumerals.js
Markus Warg 8398c9048d initially import ZendFramework-1.9.5 into repository
code was modified slightly, so the code differs from the original downloadable 1.9.5 version
2010-03-31 10:12:32 +02:00

197 lines
5.6 KiB
JavaScript
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

dojo.provide("dojox.date.HebrewNumerals");
dojo.experimental("dojox.date.HebrewNumerals");
//Conversion from "Hindi" numerals to Hebrew numerals and vice versa
(function(){
var _DIG=["א","ב","ג","ד","ה","ו","ז","ח","ט"];
var _TEN=["י","כ","ל","מ","נ","ס","ע","פ","צ"];
var _HUN=["ק","ר","ש","ת"];
var _REP=["יה","יו", "טו", "טז"];
var _MONTHS =["א'","ב'","ג'","ד'","ה'","ו'","ז'","ח'","ט'","י'","י\"א","י\"ב","י\"ג"];
var _GERESH=["'"];
dojox.date.HebrewNumerals.getYearHebrewLetters = function(/*Number */ year){
// summary: This function return year written in Hebrew numbers-letters,
//
// example:
// | var date1 = new dojox.date.HebrewDate();
// |
// | document.writeln(dojox.date.HebrewNumerals.getYearHebrewLetters(date1.getFullYear());
var str = "", str2 = "";
year = year%1000;
var i=0, n=4,j=9;
while(year){
if(year >= n*100){
str=str.concat(_HUN[n-1]);
year -= n*100;
continue;
}else if(n > 1){
n--;
continue;
}else if(year >= j*10){
str=str.concat(_TEN[j-1]);
year -= j*10;
}else if (j >1){
j--;
continue;
}else if(year > 0){
str=str.concat(_DIG[year-1]);
year=0;
}
}
var str1 = "";
var ind = str.indexOf(_REP[0]);
if(ind > -1){
str = str1.concat(str.substr(str[0], ind), _REP[2], str.substr(str[ind+2], str.length-ind-2));
}else if( ( ind=str.indexOf(_REP[1]) ) > -1){
str = str1.concat(str.substr(str[0], ind), _REP[3], str.substr(str[ind+2], str.length-ind-2));
}
if(str.length > 1){
var last = str.charAt(str.length - 1);
str = str2.concat(str.substr(0, str.length-1), '"', last);
}else{
str = str.concat(_GERESH[0]);
}
return str;
};
dojox.date.HebrewNumerals.parseYearHebrewLetters = function(/*String hebrew year*/ year){
// summary: This function return year in format number from the year written in Hebrew numbers-letters
//
// example:
// | var date = new dojox.date.HebrewDate();
// | date.setYear(dojox.date.HebrewNumerals.parseYearHebrewLetters('תשס"ח'));
// |
var nYear = 0, i=0, j=0;
for(j=0; j < year.length; j++){
for(i=1; i <= 5; i++){
if(year.charAt(j) == _HUN[i-1]){
nYear += 100*i;
continue;
}
}
for(i=1; i <= 9; i++){
if(year.charAt(j) == _TEN[i-1]){
nYear += 10*i;
continue;
}
}
for(i=1; i <= 9; i++){
if(year.charAt(j) == _DIG[i-1]){
nYear += i;
}
}
}
return nYear+5000;
};
dojox.date.HebrewNumerals.getDayHebrewLetters = function(day, /*bool ?*/ nogrsh){
// summary: This function return date written in Hebrew numbers-letter, can be in format א or א' (with geresh)
//
// example:
// | var date1 = new dojox.date.HebrewDate();
// |
// | document.writeln(dojox.date.HebrewNumerals.getDayHebrewLetters(date1.getDay());
var str = "";
var j=3;
while(day){
if(day >= j*10){
str=str.concat(_TEN[j-1]);
day -= j*10;
}else if (j >1){
j--;
continue;
}else if(day > 0){
str=str.concat(_DIG[day-1]);
day=0;
}
}
var str1 = "";
var ind = str.indexOf(_REP[0]);
if(ind > -1){
str = str1.concat(str.substr(str[0], ind), _REP[2], str.substr(str[ind+2], str.length-ind-2));
}else if( ( ind=str.indexOf(_REP[1]) ) > -1){
str = str1.concat(str.substr(str[0], ind), _REP[3], str.substr(str[ind+2], str.length-ind-2));
}
if(!nogrsh){
var str2 = "";
if(str.length > 1){
var last = str.charAt(str.length - 1);
str = str2.concat(str.substr(0, str.length-1), '"', last);
}else{
str = str.concat(_GERESH[0]);
}
}
return str;
};
dojox.date.HebrewNumerals.parseDayHebrewLetters = function(/*String hebrew*/ day){
// summary: This function return date in format number from the date written in Hebrew numbers-letter
//
// example:
// | var date1 = new dojox.date.HebrewDate();
// |
// | date1.setDate(dojox.date.HebrewNumerals.parseDayHebrewLetters('א'));
var nDay = 0, i=0;
for (var j=0; j < day.length; j++){
for(i=1; i <= 9; i++){
if(day.charAt(j) == _TEN[i-1])
{
nDay += 10*i;
continue;
}
}
for(i=1; i <= 9; i++){
if(day.charAt(j) == _DIG[i-1])
nDay += i;
}
}
//if (nDay > this.getDaysInHebrewMonth(_month, this._year)){
// nDay = this.getDaysInHebrewMonth(this._month, this._year);
//}
return nDay;
};
dojox.date.HebrewNumerals.getMonthHebrewLetters = function(monthNum, /* bool hebrew numbers ?*/ isNum, /*Number ?*/ year){
// summary: This function return month written in Hebrew numerals
//
// example:
// | var date1 = new dojox.date.HebrewDate();
// |
// | document.writeln(dojox.date.HebrewNumerals.getMonthHebrewLetters(date1.getMonth());
return _MONTHS[monthNum];
};
dojox.date.HebrewNumerals.parseMonthHebrewLetters = function(monthStr){
// summary: This function return month in format number from the month written in Hebrew word or numbers-letters
// the return number is index in month name array, to use it for setMont, do correction for leap year
// example:
// | var date = new dojox.date.HebrewDate();
// | var number = dojox.date.HebrewNumerals.parseMonthHebrewLetters("תמוז");
// | if ( !date.isLeapYear(date.getFullYear()) && number >5) {number--;}
// | date.setMonth(number);
// |
//month number from 0 to 12
var monnum = dojox.date.HebrewNumerals.parseDayHebrewLetters(monthStr) - 1;
if(monnum == -1){
console.warn("The month name is incorrect , set 0"); // TODO: perhaps throw instead?
monnum = 0;
}
return monnum;
};
})();