You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
cacert-testmgr/external/ZendFramework-1.9.5/externals/dojo/dojox/date/HebrewNumerals.js

198 lines
5.6 KiB
JavaScript

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

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;
};
})();