ÿþ/ *  
 j q U R L  
 b y   J o s h   N a t h a n s o n  
  
 v a r i o u s   m a n i p u l a t i o n s   o n   u r l   s t r i n g s   a n d   w i n d o w s .      
 a l l   f u n c t i o n s   c a n   a l s o   t a k e   a   w i n d o w   o b j e c t   a s   a n   a r g u m e n t ,  
 f o r   e x a m p l e   { w i n : o p e n e r }  
 b u t   w i l l   d e f a u l t   t o   c u r r e n t   w i n d o w   i f   n o n e   i s   p a s s e d .  
  
 p u b l i c   f u n c t i o n s :  
  
 - - - - - - - - - - - - - - - - - - - - - - - - -  
 . u r l ( {    
 	   w i n : w i n d o w   o b j e c t    
 	   } )  
 - - - - - - - - - - - - - - - - - - - - - - - - -  
 r e t u r n s   t h e   w h o l e   u r l   s t r i n g  
 l i k e   w i n . l o c a t i o n . h r e f  
  
 	 s o   i f   t h e   c u r r e n t   w i n d o w   h r e f   i s   " h t t p : / / w w w . m y s i t e . c o m ? v a r 1 = 1 & v a r 2 = 2 & v a r 3 = 3 "  
 	  
 	 $ . j q U R L . u r l ( )   r e t u r n s   " h t t p : / / w w w . m y s i t e . c o m ? v a r 1 = 1 & v a r 2 = 2 & v a r 3 = 3 "  
 	  
 	  
 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -  
 . l o c ( u r l s t r : s t r i n g ,    
 	   {    
 	   w i n : w i n d o w   o b j e c t ,    
 	   w : i n t e g e r ,    
 	   h : i n t e g e r ,    
 	   t : i n t e g e r ,  
 	   l : i n t e g e r ,  
 	   w i n t y p e : s t r i n g ( ' _ t o p ' [ d e f a u l t ] , ' _ b l a n k ' , ' _ p a r e n t ' )   )  
 	 } )  
 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	    
 -   d i r e c t s   p a s s e d   i n   w i n d o w   t o   u r l s t r ,   w h i c h   i s   r e q u i r e d  
 -   w o r k s   l i k e   w i n d o w . l o c a t i o n . h r e f   =   ' m y u r l '  
 -   b u t   y o u   c a n   a l s o   u s e   i t   t o   p o p   o p e n   a   n e w   w i n d o w   b y   p a s s i n g   i n   " _ b l a n k "   a s   t h e   w i n t y p e  
 -   i f   p o p p i n g   o p e n   a   w i n d o w ,   d e f a u l t s   t o   c e n t e r   o f   s c r e e n  
  
 	 s o  
 	 $ . j q U R L . l o c ( ' h t t p : / / w w w . g o o g l e . c o m ' ,  
 	 	 	 	 { w : 2 0 0 , h : 2 0 0 , w i n t y p e : ' _ b l a n k ' } ) ;  
 	 w o u l d   o p e n   G o o g l e   i n   a   n e w   c e n t e r e d   2 0 0 x 2 0 0   w i n d o w  
 	  
 	 o r ,   l o c a t e   a n   u r l   t o   a n y   n a m e d   w i n d o w :  
 	 $ . j q U R L . l o c ( ' h t t p : / / w w w . g o o g l e . c o m ' , {   w i n : m y w i n d o w   } ) ;  
 	 o p e n s   G o o g l e   i n   m y w i n d o w  
  
  
 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -  
 . q s ( {    
 	 r e t : s t r i n g ( ' s t r i n g ' [ d e f a u l t ] , ' o b j e c t ' ) ,    
 	 w i n : w i n d o w   o b j e c t   } )  
 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -  
 r e t u r n s   q u e r y s t r i n g ,   e i t h e r   s t r i n g   ( p a s s   r e t : ' s t r i n g '   [ d e f a u l t ] )  
 o r   o b j e c t   ( p a s s   r e t : ' o b j e c t ' )    
  
 	 s o   i f   t h e   c u r r e n t   w i n d o w   h r e f   i s   " h t t p : / / w w w . m y s i t e . c o m ? v a r 1 = 1 & v a r 2 = 2 & v a r 3 = 3 "  
  
 	 $ . j q U R L . q s ( ) ;  
 	 r e t u r n s   " v a r 1 = 1 & v a r 2 = 2 & v a r 3 = 3 "  
 	  
 	 $ . j q U R L . q s ( {   r e t : ' o b j e c t '   } ) ;  
 	 r e t u r n s   O b j e c t   v a r 1 = 1 , v a r 2 = 2 , v a r 3 = 3  
  
  
 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -  
 . s t r i p ( {   k e y s : s t r i n g ( l i s t   o f   k e y s   t o   s t r i p ) ,   w i n : w i n d o w   o b j e c t   } )  
 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -  
 i f   p a s s e d   w i t h   n o   a r g u m e n t s ,   r e t u r n s   u r l   w i t h   ' ? '   a n d   q u e r y   s t r i n g   r e m o v e d  
 i f   y o u   p a s s   i n   l i s t   o f   k e y s ,   i t   r e t u r n s   u r l   w i t h   t h e   s p e c i f i e d   k e y - v a l u e   p a i r s   r e m o v e d  
  
 	 s o   i f   t h e   c u r r e n t   w i n d o w   h r e f   i s   " h t t p : / / w w w . m y s i t e . c o m ? v a r 1 = 1 & v a r 2 = 2 & v a r 3 = 3 "  
  
 	 $ . j q U R L . s t r i p ( ) ;  
 	 w i l l   r e t u r n  
 	 " h t t p : / / w w w . m y s i t e . c o m "  
 	  
 	 $ . j q U R L . s t r i p ( {   k e y s : ' v a r 1 , v a r 2 '   } ) ;  
 	 w i l l   r e t u r n  
 	 " h t t p : / / w w w . m y s i t e . c o m ? v a r 3 = 3 "  
 	  
 	  
 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -  
 . g e t ( k e y ,   { w i n : w i n d o w   o b j e c t } )  
 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -  
 r e t u r n s   v a l u e   o f   p a s s e d   i n   q u e r y s t r i n g   k e y  
  
 	 s o   i f   t h e   c u r r e n t   w i n d o w   h r e f   i s   " h t t p : / / w w w . m y s i t e . c o m ? v a r 1 = 1 & v a r 2 = 2 & v a r 3 = 3 "  
 	 $ . j q U R L . g e t ( ' v a r 2 ' ) ;  
 	 w i l l   r e t u r n   2  
  
 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -  
 . s e t ( h a s h ,   { w i n : w i n d o w   o b j e c t } )  
 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -  
 r e t u r n s   t h e   w i n d o w ' s   u r l ,   b u t   w i t h   t h e   k e y s / v a l u e s   s e t   i n   t h e   q u e r y   s t r i n g  
 i f   t h e   k e y s   a l r e a d y   e x i s t ,   r e - s e t s   t h e   v a l u e  
 i f   t h e y   d o n ' t   e x i s t ,   t h e y ' r e   a p p e n d e d   o n t o   t h e   q u e r y   s t r i n g  
  
 * /  
  
 j Q u e r y . j q U R L   =   {  
  
 	 u r l   :   / /   r e t u r n s   a   s t r i n g  
 	 f u n c t i o n ( a r g s )   {  
 	 	 a r g s   =    
 	 	 	 j Q u e r y . e x t e n d ( {  
 	 	 	 	 w i n   :   w i n d o w  
 	 	 	 } ,  
 	 	 	 a r g s ) ;  
 	 	 r e t u r n   a r g s . w i n . l o c a t i o n . h r e f ;  
 	 } ,  
 	  
 	 l o c   :    
 	 f u n c t i o n ( u r l s t r ,   a r g s )   {  
 	 	 a r g s   =    
 	 	 	 j Q u e r y . e x t e n d ( {  
 	 	 	 	 w i n   :   w i n d o w ,  
 	 	 	 	 w   :   5 0 0 ,  
 	 	 	 	 h   :   5 0 0 ,  
 	 	 	 	 w i n t y p e   :   ' _ t o p '  
 	 	 	 } ,  
 	 	 	 a r g s ) ;  
 	 	 	  
 	 	 i f   ( ! a r g s . t )   {  
 	 	 	 a r g s . t   =   s c r e e n . h e i g h t   /   2   -   a r g s . h   /   2 ;  
 	 	 }  
 	 	 i f   ( ! a r g s . l )   {  
 	 	 	 a r g s . l   =   s c r e e n . w i d t h   /   2   -   a r g s . w   /   2 ;  
 	 	 }  
 	 	 i f   ( a r g s [ ' w i n t y p e ' ]   = =   ' _ t o p ' )   {  
 	 	 	 a r g s . w i n . l o c a t i o n . h r e f   =   u r l s t r ;  
 	 	 }  
 	 	 e l s e   { 	 	 	  
 	 	 	 o p e n (  
 	 	 	 u r l s t r ,  
 	 	 	 a r g s [ ' w i n t y p e ' ] ,  
 	 	 	 ' w i d t h = '   +   a r g s . w   +   ' , h e i g h t = '   +   a r g s . h   +   ' , t o p = '   +   a r g s . t   +   ' , l e f t = '   +   a r g s . l   +   ' , s c r o l l b a r s , r e s i z a b l e '  
 	 	 	 ) ;  
 	 	  
 	 	 }  
 	 	 r e t u r n ;  
 	 } ,  
 	  
 	 q s   :  
 	 f u n c t i o n ( a r g s )   {  
 	 	 a r g s   =   j Q u e r y . e x t e n d ( {  
 	 	 	 r e t   :   ' s t r i n g ' ,  
 	 	 	 w i n   :   w i n d o w  
 	 	 } ,  
 	 	 a r g s ) ;  
 	 	  
 	 	 i f   ( a r g s [ ' r e t ' ]   = =   ' s t r i n g ' )   {  
 	 	 	 r e t u r n   j Q u e r y . j q U R L . u r l ( {   w i n : a r g s . w i n   } ) . s p l i t ( ' ? ' ) [ 1 ] ;  
 	 	 	 }  
  
 	 	 e l s e   i f   ( a r g s [ ' r e t ' ]   = =   ' o b j e c t ' )   {  
 	 	 	  
 	 	 	 v a r   q s o b j   =   { } ;  
 	 	 	 v a r   t h i s q s   =   j Q u e r y . j q U R L . u r l ( {   w i n : a r g s . w i n   } ) . s p l i t ( ' ? ' ) [ 1 ] ;  
 	 	 	  
 	 	 	 i f   (   t h i s q s   )   {  
 	 	 	 	 v a r   p a i r s   =   t h i s q s . s p l i t ( ' & ' ) ;  
 	 	 	 	 f o r   (   i = 0 ; i < p a i r s . l e n g t h ; i + +   )   {  
 	 	 	 	 	 v a r   p a i r   =   p a i r s [ i ] . s p l i t ( ' = ' ) ;  
 	 	 	 	 	 q s o b j [ p a i r [ 0 ] ]   =   p a i r [ 1 ] ;  
 	 	 	 	 }  
 	 	 	 }  
 	 	 	 r e t u r n   q s o b j ;  
 	 	 }  
 	 } ,  
 	  
 	 s t r i p   :  
 	 f u n c t i o n ( a r g s )   {  
 	 	 a r g s   =   j Q u e r y . e x t e n d ( {  
 	 	 	 k e y s   :   ' ' ,  
 	 	 	 w i n   :   w i n d o w  
 	 	 	 } ,  
 	 	 	 a r g s ) ;  
 	 	  
 	 	 i f   ( j Q u e r y . j q U R L . u r l ( ) . i n d e x O f ( ' ? ' )   = =   - 1 )   {   / /   n o   q u e r y   s t r i n g   f o u n d  
 	 	 	 r e t u r n   j Q u e r y . j q U R L . u r l ( {   w i n : a r g s . w i n   } ) ;  
 	 	 }  
 	 	 / /   i f   n o   k e y s   p a s s e d   i n ,   j u s t   r e t u r n   u r l   w i t h   n o   q u e r y s t r i n g  
 	 	 e l s e   i f   ( ! a r g s . k e y s )   {  
 	 	 	 r e t u r n   j Q u e r y . j q U R L . u r l ( {   w i n : a r g s . w i n   } ) . s p l i t ( ' ? ' ) [ 0 ] ;  
 	 	 }  
 	 	 e l s e   {   / / r e t u r n   s t r i p p e d   u r l  
  
 	 	 	 v a r   q s o b j   =   j Q u e r y . j q U R L . q s ( {   r e t : ' o b j e c t ' , w i n : a r g s . w i n   } ) ;     / /   o b j e c t   w i t h   k e y / v a l u e   p a i r s 	 	  
 	 	 	 v a r   c o u n t e r   =   0 ;  
 	 	 	 v a r   u r l   =   j Q u e r y . j q U R L . u r l ( {   w i n : a r g s . w i n   } ) . s p l i t ( ' ? ' ) [ 0 ]   +   ' ? ' ;  
 	 	 	 v a r   a m p   =   ' ' ;  
 	 	 	  
 	 	 	 f o r   ( v a r   k e y   i n   q s o b j )   {  
 	 	 	 	 i f   ( a r g s . k e y s . i n d e x O f ( k e y )   = =   - 1 )   {    
 	 	 	 	 	 / /   p a s s   t e s t ,   a d d   t h i s   k e y / v a l u e   t o   s t r i n g  
 	 	 	 	 	 a m p   =   ( c o u n t e r )   ?   ' & '   :   ' ' ;  
 	 	 	 	 	 u r l   =   u r l   +   a m p   +   k e y   +   ' = '   +   q s o b j [ k e y ] ;  
 	 	 	 	 	 c o u n t e r + + ;  
 	 	 	 	 }  
 	 	 	 }  
 	 	 	 r e t u r n   u r l ;  
 	 	 } 	 	 	  
 	 } ,  
 	  
 	 g e t   :  
 	 f u n c t i o n ( k e y , a r g s )   {  
 	 	 a r g s   =   j Q u e r y . e x t e n d ( {  
 	 	 	 w i n   :   w i n d o w  
 	 	 	 } , a r g s ) ;  
 	  
 	 q s o b j   =     j Q u e r y . j q U R L . q s ( {   r e t : ' o b j e c t ' ,   w i n : a r g s . w i n   } ) ;  
 	 r e t u r n   q s o b j [ k e y ] ;  
 	 } ,  
 	  
 	 s e t   :  
 	 f u n c t i o n ( h a s h , a r g s )   {  
 	 	 a r g s   =   j Q u e r y . e x t e n d ( {  
 	 	 	 w i n   :   w i n d o w  
 	 	 	 } , a r g s ) ;  
 	 	  
 	 	 / /   g e t   c u r r e n t   q u e r y s t r i n g  
 	 	 v a r   q s o b j   =     j Q u e r y . j q U R L . q s ( {   r e t : ' o b j e c t ' , w i n : a r g s . w i n   } ) ;  
 	 	  
 	 	 / /   a d d / s e t   v a l u e s   f r o m   h a s h  
 	 	 f o r   ( v a r   i   i n   h a s h )   {  
 	 	 	 q s o b j [ i ]   =   h a s h [ i ] ;  
 	 	 }  
 	 	  
 	 	 v a r   q s t r i n g   =   ' ' ;  
 	 	 v a r   c o u n t e r   =   0 ;  
 	 	 v a r   a m p   =   ' ' ;  
 	 	  
 	 	 / /   t u r n   q s o b j   i n t o   s t r i n g  
 	 	 f o r   ( v a r   k   i n   q s o b j )   {  
 	 	 	 a m p   =   ( c o u n t e r )   ?   ' & '   :   ' ' ;  
 	 	 	 q s t r i n g   =   q s t r i n g   +   a m p   +   k   +   ' = '   +   q s o b j [ k ] ;  
 	 	 	 c o u n t e r + + ;  
 	 	 }  
 	 	 r e t u r n   j Q u e r y . j q U R L . s t r i p ( {   w i n :   a r g s . w i n   } )   +   ' ? '   +   q s t r i n g ;  
 	 }  
 	  
 } ;  
  
 
