ÿþ/ *   j a l a l i . j s     G r e g o r i a n   t o   J a l a l i   a n d   i n v e r s e   d a t e   c o n v e r t o r  
   *   C o p y r i g h t   ( C )   2 0 0 1     R o o z b e h   P o u r n a d e r   < r o o z b e h @ s h a r i f . e d u >  
   *   C o p y r i g h t   ( C )   2 0 0 1     M o h a m m a d   T o o s s i   < m o h a m m a d @ b a m d a d . o r g >  
   *   C o p y r i g h t   ( C )   2 0 0 3 , 2 0 0 8     B e h d a d   E s f a h b o d   < j s @ b e h d a d . o r g >  
   *  
   *   T h i s   p r o g r a m   i s   f r e e   s o f t w a r e ;   y o u   c a n   r e d i s t r i b u t e   i t   a n d / o r  
   *   m o d i f y   i t   u n d e r   t h e   t e r m s   o f   t h e   G N U   L e s s e r   G e n e r a l   P u b l i c  
   *   L i c e n s e   a s   p u b l i s h e d   b y   t h e   F r e e   S o f t w a r e   F o u n d a t i o n ;   e i t h e r  
   *   v e r s i o n   2 . 1   o f   t h e   L i c e n s e ,   o r   ( a t   y o u r   o p t i o n )   a n y   l a t e r   v e r s i o n .  
   *    
   *   T h i s   p r o g r a m   i s   d i s t r i b u t e d   i n   t h e   h o p e   t h a t   i t   w i l l   b e   u s e f u l ,  
   *   b u t   W I T H O U T   A N Y   W A R R A N T Y ;   w i t h o u t   e v e n   t h e   i m p l i e d   w a r r a n t y   o f  
   *   M E R C H A N T A B I L I T Y   o r   F I T N E S S   F O R   A   P A R T I C U L A R   P U R P O S E .     S e e   t h e   G N U  
   *   L e s s e r   G e n e r a l   P u b l i c   L i c e n s e   f o r   m o r e   d e t a i l s .  
   *  
   *   Y o u   c a n   r e c e i v e   a   c o p y   o f   G N U   L e s s e r   G e n e r a l   P u b l i c   L i c e n s e   a t   t h e  
   *   W o r l d   W i d e   W e b   a d d r e s s   < h t t p : / / w w w . g n u . o r g / l i c e n s e s / l g p l . h t m l > .  
   *  
   *   F o r   l i c e n s i n g   i s s u e s ,   c o n t a c t   T h e   F a r s i W e b   P r o j e c t   G r o u p ,  
   *   C o m p u t i n g   C e n t e r ,   S h a r i f   U n i v e r s i t y   o f   T e c h n o l o g y ,  
   *   P O   B o x   1 1 3 6 5 - 8 5 1 5 ,   T e h r a n ,   I r a n ,   o r   c o n t a c t   u s   t h e  
   *   e m a i l   a d d r e s s   < F W P G @ s h a r i f . e d u > .  
   * /  
  
 / *   C h a n g e s :  
   *    
   *   2 0 0 8 - J u l - 3 2 :  
   * 	 U s e   a   r e m a i n d e r ( )   f u n c t i o n   t o   f i x   c o n v e r s i o n   o f   a n c i e n t   d a t e s  
   * 	 ( b e f o r e   1 6 0 0   g r e g o r i a n ) .     R e p o r t e d   b y   S h a m i m   R e z a e i .  
   *  
   *   2 0 0 3 - M a r - 2 9 :  
   *             P o r t e d   t o   j a v a s c r i p t   b y   B e h d a d   E s f a h b o d  
   *  
   *   2 0 0 1 - S e p - 2 1 :  
   * 	 F i x e d   a   b u g   w i t h   " 3 0   E s f a n d "   d a t e s ,   r e p o r t e d   b y   M a h m o u d   G h a n d i  
   *  
   *   2 0 0 1 - S e p - 2 0 :  
   * 	 F i r s t   L G P L   r e l e a s e ,   w i t h   b o t h   s i d e s   o f   c o n v e r s i o n s  
   * /  
    
 g _ d a y s _ i n _ m o n t h   =   n e w   A r r a y ( 3 1 ,   2 8 ,   3 1 ,   3 0 ,   3 1 ,   3 0 ,   3 1 ,   3 1 ,   3 0 ,   3 1 ,   3 0 ,   3 1 ) ;  
 j _ d a y s _ i n _ m o n t h   =   n e w   A r r a y ( 3 1 ,   3 1 ,   3 1 ,   3 1 ,   3 1 ,   3 1 ,   3 0 ,   3 0 ,   3 0 ,   3 0 ,   3 0 ,   2 9 ) ;  
  
 m o n t h _ n a m e   =   n e w   A r r a y (  
 " A1H1/JF" ,  
 " '1/J(G4*" ,  
 " .1/'/" ,  
 " *J1" ,  
 " E1/'/" ,  
 " 4G1JH1" ,  
 " EG1" ,  
 " "('F" ,  
 " "01" ,  
 " /Ì" ,  
 " (GEF" ,  
 " '3AF/"  
 ) ;  
    
 f u n c t i o n   d i v ( a , b )   {  
     r e t u r n   M a t h . f l o o r ( a / b ) ;  
 }  
  
 f u n c t i o n   r e m a i n d e r ( a , b )   {  
     r e t u r n   a   -   d i v ( a , b ) * b ;  
 }  
  
 f u n c t i o n   g r e g o r i a n _ t o _ j a l a l i ( g   / *   a r r a y   c o n t a i n i n g   y e a r ,   m o n t h ,   d a y * /   )  
 {  
       v a r   g y ,   g m ,   g d ;  
       v a r   j y ,   j m ,   j d ;  
       v a r   g _ d a y _ n o ,   j _ d a y _ n o ;  
       v a r   j _ n p ;  
    
       v a r   i ;  
  
       g y   =   g [ 0 ] - 1 6 0 0 ;  
       g m   =   g [ 1 ] - 1 ;  
       g d   =   g [ 2 ] - 1 ;  
  
       g _ d a y _ n o   =   3 6 5 * g y + d i v ( ( g y + 3 ) , 4 ) - d i v ( ( g y + 9 9 ) , 1 0 0 ) + d i v ( ( g y + 3 9 9 ) , 4 0 0 ) ;  
       f o r   ( i = 0 ; i < g m ; + + i )  
             g _ d a y _ n o   + =   g _ d a y s _ i n _ m o n t h [ i ] ;  
       i f   ( g m > 1   & &   ( ( g y % 4 = = 0   & &   g y % 1 0 0 ! = 0 )   | |   ( g y % 4 0 0 = = 0 ) ) )  
             / *   l e a p   a n d   a f t e r   F e b   * /  
             + + g _ d a y _ n o ;  
       g _ d a y _ n o   + =   g d ;  
    
       j _ d a y _ n o   =   g _ d a y _ n o - 7 9 ;  
    
       j _ n p   =   d i v ( j _ d a y _ n o ,   1 2 0 5 3 ) ;  
       j _ d a y _ n o   =   r e m a i n d e r   ( j _ d a y _ n o ,   1 2 0 5 3 ) ;  
    
       j y   =   9 7 9 + 3 3 * j _ n p + 4 * d i v ( j _ d a y _ n o , 1 4 6 1 ) ;  
       j _ d a y _ n o   =   r e m a i n d e r   ( j _ d a y _ n o ,   1 4 6 1 ) ;  
    
       i f   ( j _ d a y _ n o   > =   3 6 6 )   {  
             j y   + =   d i v ( ( j _ d a y _ n o - 1 ) , 3 6 5 ) ;  
             j _ d a y _ n o   =   r e m a i n d e r   ( ( j _ d a y _ n o - 1 ) ,   3 6 5 ) ;  
       }  
    
       f o r   ( i   =   0 ;   i   <   1 1   & &   j _ d a y _ n o   > =   j _ d a y s _ i n _ m o n t h [ i ] ;   + + i )   {  
             j _ d a y _ n o   - =   j _ d a y s _ i n _ m o n t h [ i ] ;  
       }  
       j m   =   i + 1 ;  
       j d   =   j _ d a y _ n o + 1 ;  
  
       r e t u r n   n e w   A r r a y ( j y ,   j m ,   j d ) ;  
 }  
  
 f u n c t i o n   j a l a l i _ t o _ g r e g o r i a n ( j   / *   a r r a y   c o n t a i n i n g   y e a r ,   m o n t h ,   d a y * /   )  
 {  
       v a r   g y ,   g m ,   g d ;  
       v a r   j y ,   j m ,   j d ;  
       v a r   g _ d a y _ n o ,   j _ d a y _ n o ;  
       v a r   l e a p ;  
  
       v a r   i ;  
  
       j y   =   j [ 0 ] - 9 7 9 ;  
       j m   =   j [ 1 ] - 1 ;  
       j d   =   j [ 2 ] - 1 ;  
  
       j _ d a y _ n o   =   3 6 5 * j y   +   d i v ( j y , 3 3 ) * 8   +   d i v ( ( r e m a i n d e r   ( j y ,   3 3 ) + 3 ) , 4 ) ;  
       f o r   ( i = 0 ;   i   <   j m ;   + + i )  
             j _ d a y _ n o   + =   j _ d a y s _ i n _ m o n t h [ i ] ;  
  
       j _ d a y _ n o   + =   j d ;  
  
       g _ d a y _ n o   =   j _ d a y _ n o + 7 9 ;  
  
       g y   =   1 6 0 0   +   4 0 0 * d i v ( g _ d a y _ n o , 1 4 6 0 9 7 ) ;   / *   1 4 6 0 9 7   =   3 6 5 * 4 0 0   +   4 0 0 / 4   -   4 0 0 / 1 0 0   +   4 0 0 / 4 0 0   * /  
       g _ d a y _ n o   =   r e m a i n d e r   ( g _ d a y _ n o ,   1 4 6 0 9 7 ) ;  
  
       l e a p   =   1 ;  
       i f   ( g _ d a y _ n o   > =   3 6 5 2 5 )   / *   3 6 5 2 5   =   3 6 5 * 1 0 0   +   1 0 0 / 4   * /  
       {  
             g _ d a y _ n o - - ;  
             g y   + =   1 0 0 * d i v ( g _ d a y _ n o , 3 6 5 2 4 ) ;   / *   3 6 5 2 4   =   3 6 5 * 1 0 0   +   1 0 0 / 4   -   1 0 0 / 1 0 0   * /  
             g _ d a y _ n o   =   r e m a i n d e r   ( g _ d a y _ n o ,   3 6 5 2 4 ) ;  
              
             i f   ( g _ d a y _ n o   > =   3 6 5 )  
                   g _ d a y _ n o + + ;  
             e l s e  
                   l e a p   =   0 ;  
       }  
  
       g y   + =   4 * d i v ( g _ d a y _ n o , 1 4 6 1 ) ;   / *   1 4 6 1   =   3 6 5 * 4   +   4 / 4   * /  
       g _ d a y _ n o   =   r e m a i n d e r   ( g _ d a y _ n o ,   1 4 6 1 ) ;  
  
       i f   ( g _ d a y _ n o   > =   3 6 6 )   {  
             l e a p   =   0 ;  
  
             g _ d a y _ n o - - ;  
             g y   + =   d i v ( g _ d a y _ n o ,   3 6 5 ) ;  
             g _ d a y _ n o   =   r e m a i n d e r   ( g _ d a y _ n o ,   3 6 5 ) ;  
       }  
  
       f o r   ( i   =   0 ;   g _ d a y _ n o   > =   g _ d a y s _ i n _ m o n t h [ i ]   +   ( i   = =   1   & &   l e a p ) ;   i + + )  
             g _ d a y _ n o   - =   g _ d a y s _ i n _ m o n t h [ i ]   +   ( i   = =   1   & &   l e a p ) ;  
       g m   =   i + 1 ;  
       g d   =   g _ d a y _ n o + 1 ;  
  
       r e t u r n   n e w   A r r a y ( g y ,   g m ,   g d ) ;  
 }  
  
 f u n c t i o n   j a l a l i _ t o d a y ( )   {  
     T o d a y   =   n e w   D a t e ( ) ;  
     j   =   g r e g o r i a n _ t o _ j a l a l i ( n e w   A r r a y (  
                                                     T o d a y . g e t F u l l Y e a r ( ) ,  
                                                     T o d a y . g e t M o n t h ( ) + 1 ,  
                                                     T o d a y . g e t D a t e ( )  
                                                     ) ) ;  
     r e t u r n   j [ 2 ] + "   " + m o n t h _ n a m e [ j [ 1 ] - 1 ] + "   " + j [ 0 ] ;  
 }  
 
