ÿþv a r   p e r s i s t e d u l s = n e w   O b j e c t ( )  
 v a r   d d t r e e m e n u = n e w   O b j e c t ( )  
 v a r   l a s t t i m e  
 v a r   i d   =   0  
  
 / / d d t r e e m e n u . c l o s e f o l d e r = " c l o s e d . g i f "   / / s e t   i m a g e   p a t h   t o   " c l o s e d "   f o l d e r   i m a g e  
 / / d d t r e e m e n u . o p e n f o l d e r = " o p e n . g i f "   / / s e t   i m a g e   p a t h   t o   " o p e n "   f o l d e r   i m a g e  
  
 / / / / / / / / / / N o   n e e d   t o   e d i t   b e y o n d   h e r e / / / / / / / / / / / / / / / / / / / / / / / / / / /  
  
 d d t r e e m e n u . c r e a t e T r e e = f u n c t i o n ( t r e e i d ,   e n a b l e p e r s i s t ,   p e r s i s t d a y s ) {  
     v a r   u l t a g s = d o c u m e n t . g e t E l e m e n t B y I d ( t r e e i d ) . g e t E l e m e n t s B y T a g N a m e ( " u l " )  
     i f   ( t y p e o f   p e r s i s t e d u l s [ t r e e i d ] = = " u n d e f i n e d " )  
         p e r s i s t e d u l s [ t r e e i d ] = ( e n a b l e p e r s i s t = = t r u e   & &   d d t r e e m e n u . g e t C o o k i e ( t r e e i d ) ! = " " ) ?   d d t r e e m e n u . g e t C o o k i e ( t r e e i d ) . s p l i t ( " , " )   :   " "  
     f o r   ( v a r   i = 0 ;   i < u l t a g s . l e n g t h ;   i + + )  
         d d t r e e m e n u . b u i l d S u b T r e e ( t r e e i d ,   u l t a g s [ i ] ,   i )  
     i f   ( e n a b l e p e r s i s t = = t r u e ) {   / / i f   e n a b l e   p e r s i s t   f e a t u r e  
         v a r   d u r a t i o n d a y s = ( t y p e o f   p e r s i s t d a y s = = " u n d e f i n e d " ) ?   1   :   p a r s e I n t ( p e r s i s t d a y s )  
         d d t r e e m e n u . d o t a s k ( w i n d o w ,   f u n c t i o n ( ) { d d t r e e m e n u . r e m e m b e r s t a t e ( t r e e i d ,   d u r a t i o n d a y s ) } ,   " u n l o a d " )   / / s a v e   o p e n e d   U L   i n d e x e s   o n   b o d y   u n l o a d  
     }  
 }  
  
 d d t r e e m e n u . b u i l d S u b T r e e = f u n c t i o n ( t r e e i d ,   u l e l e m e n t ,   i n d e x ) {  
     u l e l e m e n t . p a r e n t N o d e . c l a s s N a m e = " s u b m e n u "  
     i f   ( t y p e o f   p e r s i s t e d u l s [ t r e e i d ] = = " o b j e c t " ) {   / / i f   c o o k i e   e x i s t s   ( p e r s i s t e d u l s [ t r e e i d ]   i s   a n   a r r a y   v e r s u s   " "   s t r i n g )  
         i f   ( d d t r e e m e n u . s e a r c h a r r a y ( p e r s i s t e d u l s [ t r e e i d ] ,   i n d e x ) ) {  
             u l e l e m e n t . s e t A t t r i b u t e ( " r e l " ,   " o p e n " )  
             u l e l e m e n t . s t y l e . d i s p l a y = " b l o c k "  
             u l e l e m e n t . p a r e n t N o d e . s t y l e . b a c k g r o u n d I m a g e = " u r l ( " + d d t r e e m e n u . o p e n f o l d e r + " ) "  
         }  
         e l s e  
             u l e l e m e n t . s e t A t t r i b u t e ( " r e l " ,   " c l o s e d " )  
     }   / / e n d   c o o k i e   p e r s i s t   c o d e  
     e l s e   i f   ( u l e l e m e n t . g e t A t t r i b u t e ( " r e l " ) = = n u l l   | |   u l e l e m e n t . g e t A t t r i b u t e ( " r e l " ) = = f a l s e )   / / i f   n o   c o o k i e   a n d   U L   h a s   N O   r e l   a t t r i b u t e   e x p l i c t e d   a d d e d   b y   u s e r  
         u l e l e m e n t . s e t A t t r i b u t e ( " r e l " ,   " c l o s e d " )  
     e l s e   i f   ( u l e l e m e n t . g e t A t t r i b u t e ( " r e l " ) = = " o p e n " )   / / e l s e   i f   n o   c o o k i e   a n d   t h i s   U L   h a s   a n   e x p l i c i t   r e l   v a l u e   o f   " o p e n "  
         d d t r e e m e n u . e x p a n d S u b T r e e ( t r e e i d ,   u l e l e m e n t )   / / e x p a n d   t h i s   U L   p l u s   a l l   p a r e n t   U L s   ( s o   t h e   m o s t   i n n e r   U L   i s   r e v e a l e d ! )  
         u l e l e m e n t . p a r e n t N o d e . o n c l i c k = f u n c t i o n ( e ) {  
         i f   ( i d   ! =   0 )  
             c l e a r T i m e o u t ( i d ) ;  
         i d   =   w i n d o w . s e t T i m e o u t ( " o n M o u s e O u t ( ' l e f t _ m e n u _ r o o t ' ) ; " ,   1 0 0 0 0 0 0 0 ) ;  
         v a r   s u b m e n u = t h i s . g e t E l e m e n t s B y T a g N a m e ( " u l " ) [ 0 ]  
         i f   ( s u b m e n u . g e t A t t r i b u t e ( " r e l " ) = = " c l o s e d " ) {  
             d d t r e e m e n u . f l a t t e n ( t r e e i d ,   " c o n t r a c t " )  
             d d t r e e m e n u . e x p a n d S u b T r e e ( t r e e i d ,   s u b m e n u . p a r e n t N o d e )  
             s u b m e n u . s t y l e . d i s p l a y = " b l o c k "  
             s u b m e n u . s e t A t t r i b u t e ( " r e l " ,   " o p e n " )  
             u l e l e m e n t . p a r e n t N o d e . s t y l e . b a c k g r o u n d I m a g e = " u r l ( " + d d t r e e m e n u . o p e n f o l d e r + " ) "  
         }  
         e l s e   i f   ( s u b m e n u . g e t A t t r i b u t e ( " r e l " ) = = " o p e n " ) {  
             s u b m e n u . s t y l e . d i s p l a y = " n o n e "  
             s u b m e n u . s e t A t t r i b u t e ( " r e l " ,   " c l o s e d " )  
             u l e l e m e n t . p a r e n t N o d e . s t y l e . b a c k g r o u n d I m a g e = " u r l ( " + d d t r e e m e n u . c l o s e f o l d e r + " ) "  
         }  
         d d t r e e m e n u . p r e v e n t p r o p a g a t e ( e )  
     }  
     u l e l e m e n t . o n c l i c k = f u n c t i o n ( e ) {  
         d d t r e e m e n u . p r e v e n t p r o p a g a t e ( e )  
     }  
 }  
  
 d d t r e e m e n u . e x p a n d S u b T r e e = f u n c t i o n ( t r e e i d ,   u l e l e m e n t ) {   / / e x p a n d   a   U L   e l e m e n t   a n d   a n y   o f   i t s   p a r e n t   U L s  
     v a r   r o o t n o d e = d o c u m e n t . g e t E l e m e n t B y I d ( t r e e i d )  
     v a r   c u r r e n t n o d e = u l e l e m e n t  
     c u r r e n t n o d e . s t y l e . d i s p l a y = " i n l i n e "  
     c u r r e n t n o d e . p a r e n t N o d e . s t y l e . b a c k g r o u n d I m a g e = " u r l ( " + d d t r e e m e n u . o p e n f o l d e r + " ) "  
     w h i l e   ( c u r r e n t n o d e ! = r o o t n o d e ) {  
         i f   ( c u r r e n t n o d e . t a g N a m e = = " U L " ) {   / / i f   p a r e n t   n o d e   i s   a   U L ,   e x p a n d   i t   t o o  
             c u r r e n t n o d e . s t y l e . d i s p l a y = " b l o c k "  
             c u r r e n t n o d e . s e t A t t r i b u t e ( " r e l " ,   " o p e n " )   / / i n d i c a t e   i t ' s   o p e n  
             c u r r e n t n o d e . p a r e n t N o d e . s t y l e . b a c k g r o u n d I m a g e = " u r l ( " + d d t r e e m e n u . o p e n f o l d e r + " ) "  
         }  
         c u r r e n t n o d e = c u r r e n t n o d e . p a r e n t N o d e  
     }  
 }  
  
 d d t r e e m e n u . f l a t t e n = f u n c t i o n ( t r e e i d ,   a c t i o n ) {   / / e x p a n d   o r   c o n t r a c t   a l l   U L   e l e m e n t s  
     v a r   u l t a g s = d o c u m e n t . g e t E l e m e n t B y I d ( t r e e i d ) . g e t E l e m e n t s B y T a g N a m e ( " u l " )  
     f o r   ( v a r   i = 0 ;   i < u l t a g s . l e n g t h ;   i + + ) {  
         u l t a g s [ i ] . s t y l e . d i s p l a y = ( a c t i o n = = " e x p a n d " ) ?   " b l o c k "   :   " n o n e "  
         v a r   r e l v a l u e = ( a c t i o n = = " e x p a n d " ) ?   " o p e n "   :   " c l o s e d "  
         u l t a g s [ i ] . s e t A t t r i b u t e ( " r e l " ,   r e l v a l u e )  
         u l t a g s [ i ] . p a r e n t N o d e . s t y l e . b a c k g r o u n d I m a g e = ( a c t i o n = = " e x p a n d " ) ?   " u r l ( " + d d t r e e m e n u . o p e n f o l d e r + " ) "   :   " u r l ( " + d d t r e e m e n u . c l o s e f o l d e r + " ) "  
     }  
 / /       f o r   ( v a r   i = 0 ;   i < u l t a g s . l e n g t h ;   i + + ) {  
 / /           i f   ( u l t a g s [ i ] . g e t A t t r i b u t e ( " s t a t " ) = = " c u r r e n t " )  
 / /               d d t r e e m e n u . e x p a n d S u b T r e e ( t r e e i d ,   u l t a g s [ i ] )  
 / /       }  
 }  
  
 d d t r e e m e n u . r e m e m b e r s t a t e = f u n c t i o n ( t r e e i d ,   d u r a t i o n d a y s ) {   / / s t o r e   i n d e x   o f   o p e n e d   U L s   r e l a t i v e   t o   o t h e r   U L s   i n   T r e e   i n t o   c o o k i e  
     v a r   u l t a g s = d o c u m e n t . g e t E l e m e n t B y I d ( t r e e i d ) . g e t E l e m e n t s B y T a g N a m e ( " u l " )  
     v a r   o p e n u l s = n e w   A r r a y ( )  
     f o r   ( v a r   i = 0 ;   i < u l t a g s . l e n g t h ;   i + + ) {  
         i f   ( u l t a g s [ i ] . g e t A t t r i b u t e ( " r e l " ) = = " o p e n " )  
             o p e n u l s [ o p e n u l s . l e n g t h ] = i   / / s a v e   t h e   i n d e x   o f   t h e   o p e n e d   U L   ( r e l a t i v e   t o   t h e   e n t i r e   l i s t   o f   U L s )   a s   a n   a r r a y   e l e m e n t  
     }  
     i f   ( o p e n u l s . l e n g t h = = 0 )   / / i f   t h e r e   a r e   n o   o p e n e d   U L s   t o   s a v e / p e r s i s t  
         o p e n u l s [ 0 ] = " n o n e   o p e n "   / / s e t   a r r a y   v a l u e   t o   s t r i n g   t o   s i m p l y   i n d i c a t e   a l l   U L s   s h o u l d   p e r s i s t   w i t h   s t a t e   b e i n g   c l o s e d  
     d d t r e e m e n u . s e t C o o k i e ( t r e e i d ,   o p e n u l s . j o i n ( " , " ) ,   d u r a t i o n d a y s )   / / p o p u l a t e   c o o k i e   w i t h   v a l u e   t r e e i d = 1 , 2 , 3   e t c   ( w h e r e   1 , 2 . . .   a r e   t h e   i n d e x e s   o f   t h e   o p e n e d   U L s )  
 }  
  
 / / / / A   f e w   u t i l i t y   f u n c t i o n s   b e l o w / / / / / / / / / / / / / / / / / / / / / /  
  
 d d t r e e m e n u . g e t C o o k i e = f u n c t i o n ( N a m e ) {   / / g e t   c o o k i e   v a l u e  
     v a r   r e = n e w   R e g E x p ( N a m e + " = [ ^ ; ] + " ,   " i " ) ;   / / c o n s t r u c t   R E   t o   s e a r c h   f o r   t a r g e t   n a m e / v a l u e   p a i r  
     i f   ( d o c u m e n t . c o o k i e . m a t c h ( r e ) )   / / i f   c o o k i e   f o u n d  
         r e t u r n   d o c u m e n t . c o o k i e . m a t c h ( r e ) [ 0 ] . s p l i t ( " = " ) [ 1 ]   / / r e t u r n   i t s   v a l u e  
     r e t u r n   " "  
 }  
  
 d d t r e e m e n u . s e t C o o k i e = f u n c t i o n ( n a m e ,   v a l u e ,   d a y s ) {   / / s e t   c o o k e i   v a l u e  
     v a r   e x p i r e D a t e   =   n e w   D a t e ( )  
     / / s e t   " e x p s t r i n g "   t o   e i t h e r   f u t u r e   o r   p a s t   d a t e ,   t o   s e t   o r   d e l e t e   c o o k i e ,   r e s p e c t i v e l y  
     v a r   e x p s t r i n g = e x p i r e D a t e . s e t D a t e ( e x p i r e D a t e . g e t D a t e ( ) + p a r s e I n t ( d a y s ) )  
     d o c u m e n t . c o o k i e   =   n a m e + " = " + v a l u e + " ;   e x p i r e s = " + e x p i r e D a t e . t o G M T S t r i n g ( ) + " ;   p a t h = / " ;  
 }  
  
 d d t r e e m e n u . s e a r c h a r r a y = f u n c t i o n ( t h e a r r a y ,   v a l u e ) {   / / s e a r c h e s   a n   a r r a y   f o r   t h e   e n t e r e d   v a l u e .   I f   f o u n d ,   d e l e t e   v a l u e   f r o m   a r r a y  
     v a r   i s f o u n d = f a l s e  
     f o r   ( v a r   i = 0 ;   i < t h e a r r a y . l e n g t h ;   i + + ) {  
         i f   ( t h e a r r a y [ i ] = = v a l u e ) {  
             i s f o u n d = t r u e  
             t h e a r r a y . s h i f t ( )   / / d e l e t e   t h i s   e l e m e n t   f r o m   a r r a y   f o r   e f f i c i e n c y   s a k e  
             b r e a k  
         }  
     }  
     r e t u r n   i s f o u n d  
 }  
  
 d d t r e e m e n u . p r e v e n t p r o p a g a t e = f u n c t i o n ( e ) {   / / p r e v e n t   a c t i o n   f r o m   b u b b l i n g   u p w a r d s  
     i f   ( t y p e o f   e ! = " u n d e f i n e d " )  
         e . s t o p P r o p a g a t i o n ( )  
     e l s e  
         e v e n t . c a n c e l B u b b l e = t r u e  
 }  
  
 d d t r e e m e n u . d o t a s k = f u n c t i o n ( t a r g e t ,   f u n c t i o n r e f ,   t a s k t y p e ) {   / / a s s i g n   a   f u n c t i o n   t o   e x e c u t e   t o   a n   e v e n t   h a n d l e r   ( i e :   o n u n l o a d )  
     v a r   t a s k t y p e = ( w i n d o w . a d d E v e n t L i s t e n e r ) ?   t a s k t y p e   :   " o n " + t a s k t y p e  
     i f   ( t a r g e t . a d d E v e n t L i s t e n e r )  
         t a r g e t . a d d E v e n t L i s t e n e r ( t a s k t y p e ,   f u n c t i o n r e f ,   f a l s e )  
     e l s e   i f   ( t a r g e t . a t t a c h E v e n t )  
         t a r g e t . a t t a c h E v e n t ( t a s k t y p e ,   f u n c t i o n r e f )  
 }  
  
 f u n c t i o n   o n M o u s e O u t ( t r e e i d )   {  
     d d t r e e m e n u . f l a t t e n ( t r e e i d ,   " c o n t r a c t " )  
     v a r   u l t a g s = d o c u m e n t . g e t E l e m e n t B y I d ( t r e e i d ) . g e t E l e m e n t s B y T a g N a m e ( " u l " ) ;  
     f o r   ( v a r   i = 0 ;   i < u l t a g s . l e n g t h ;   i + + ) {  
         i f   ( u l t a g s [ i ] . g e t A t t r i b u t e ( " i d " ) = = " c u r r e n t S u b T r e e " )   {  
             d d t r e e m e n u . e x p a n d S u b T r e e ( t r e e i d ,   u l t a g s [ i ] ) ;  
         }  
  
     }  
     / / I D   =   w i n d o w . s e t T i m e o u t ( " o n M o u s e O u t ( ' l e f t _ m e n u _ r o o t ' ) ; " ,   1 0 0 0 0 ) ;  
 }  
  
  
 / /   I D   =   w i n d o w . s e t T i m e o u t ( " o n M o u s e O u t ( ' l e f t _ m e n u _ r o o t ' ) ; " ,   1 0 0 0 0 ) ;  
 / /   f u n c t i o n   U p d a t e ( )   {  
 / /       c o u n t e r + + ;  
 / /       w i n d o w . s t a t u s = " 0ýÿ1ýÿ1ýÿ1ýÿ01ýÿ:   "   +   c o u n t e r ;  
 / /       d o c u m e n t . f o r m 1 . i n p u t 1 . v a l u e   =   " 0ýÿ1ýÿ1ýÿ1ýÿ01ýÿ:   "   +   c o u n t e r ;  
 / /       / / 0ýÿ0001ýÿ000  001ýÿ00  1ýÿ0001ýÿ1ýÿ1ýÿ00  0001ýÿ00000 
 / /   }  
 
